# vikashask/ai-interior-designer architecture

> Architecture diagram of the GitHub repository vikashask/ai-interior-designer, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vikashask/ai-interior-designer
- Repository: https://github.com/vikashask/ai-interior-designer

## Overview

AI Interior Designer turns a room photo and user request into a reviewed design proposal with a style concept, validated layout, product picks, budget, and visualization. The frontend submits projects, streams progress, and presents results; the API runs the LangGraph workflow and serves completed results and revision chat. The README documents the full agent sequence and review loop; sampled source confirms key orchestration, API, LLM, and catalog-search links. Some agent implementations and graph wiring were not sampled, so their links follow documented workflow rather than inferred direct calls.

Main entry points: [`backend/app/graph/pipeline.py`](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/graph/pipeline.py) (Agent pipeline), [`frontend/src/app/page.tsx`](https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/app/page.tsx) (App page), [`frontend/src/components/ResultsView.tsx`](https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/components/ResultsView.tsx) (Results view), [`backend/app/routes/design.py`](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/routes/design.py) (Design API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_home["App page<br/>[page.tsx]"]
  node_upload["Upload form<br/>[UploadForm.tsx]"]
  node_progress["Progress tracker"]
  node_results["Results view<br/>[ResultsView.tsx]"]
  node_floorplan["Floor plan<br/>[FloorPlan.tsx]"]
  node_revisionchat["Revision chat<br/>[RevisionChat.tsx]"]
  node_api["API client<br/>[api.ts]"]
end

subgraph group_service["API and orchestration"]
  node_api_routes["Design API<br/>[design.py]"]
  node_pipeline["Agent pipeline<br/>[pipeline.py]"]
  node_state["Design state<br/>[state.py]"]
end

subgraph group_design["Design agents"]
  node_intent["Intent parser<br/>[intent_parser.py]"]
  node_vision["Room vision<br/>[vision_analyzer.py]"]
  node_designer["Interior designer<br/>[designer.py]"]
  node_style["Color and style<br/>[color_style.py]"]
  node_space["Space planner<br/>[space_planner.py]"]
  node_allocator["Budget allocator"]
  node_shopping["Shopping agent<br/>[shopping.py]"]
  node_budget["Budget advisor<br/>[budget_advisor.py]"]
  node_reviewer["Proposal reviewer<br/>[reviewer.py]"]
  node_render["Render builder<br/>[render_builder.py]"]
  node_revision["Revision agent<br/>[revision.py]"]
end

subgraph group_catalog["Product catalog"]
  node_catalog_search["Catalog search<br/>[search.py]"]
  node_catalog_db[("Product catalog<br/>[db.py]")]
end

subgraph group_integrations["AI integrations"]
  node_llm_client["LLM client<br/>[client.py]"]
  node_llm_service{{"OpenAI or Ollama"}}
  node_image_gen{{"DALL-E 3"}}
end

node_user(("Designer"))

node_user -->|"provides request"| node_upload
node_upload -->|"submits form"| node_home
node_home -->|"starts project"| node_api
node_home -->|"shows status"| node_progress
node_home -->|"shows proposal"| node_results
node_results -->|"renders layout"| node_floorplan
node_results -->|"offers revisions"| node_revisionchat
node_api -->|"calls endpoints"| node_api_routes
node_api_routes -->|"starts workflow"| node_pipeline
node_api_routes -->|"runs feedback"| node_revision
node_pipeline -->|"updates state"| node_state
node_pipeline -->|"dispatches parsing"| node_intent
node_pipeline -->|"dispatches analysis"| node_vision
node_pipeline -->|"dispatches brief"| node_designer
node_pipeline -->|"dispatches styling"| node_style
node_pipeline -->|"dispatches layout"| node_space
node_pipeline -->|"dispatches allocation"| node_allocator
node_pipeline -->|"dispatches product search"| node_shopping
node_pipeline -->|"dispatches review"| node_budget
node_pipeline -->|"dispatches quality check"| node_reviewer
node_pipeline -->|"dispatches rendering"| node_render
node_shopping -->|"searches products"| node_catalog_search
node_catalog_search -->|"queries"| node_catalog_db
node_intent -->|"requests structured output"| node_llm_client
node_reviewer -->|"requests review"| node_llm_client
node_llm_client -.->|"sends prompts"| node_llm_service
node_render -.->|"generates visualization"| node_image_gen

click node_home "https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/app/page.tsx"
click node_upload "https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/components/UploadForm.tsx"
click node_progress "https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/components/ProgressTracker.tsx"
click node_results "https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/components/ResultsView.tsx"
click node_floorplan "https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/components/FloorPlan.tsx"
click node_revisionchat "https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/components/RevisionChat.tsx"
click node_api "https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/lib/api.ts"
click node_api_routes "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/routes/design.py"
click node_pipeline "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/graph/pipeline.py"
click node_state "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/models/state.py"
click node_intent "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/intent_parser.py"
click node_vision "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/vision_analyzer.py"
click node_designer "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/designer.py"
click node_style "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/color_style.py"
click node_space "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/space_planner.py"
click node_allocator "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/budget_allocator.py"
click node_shopping "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/shopping.py"
click node_budget "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/budget_advisor.py"
click node_reviewer "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/reviewer.py"
click node_render "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/render_builder.py"
click node_revision "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/revision.py"
click node_llm_client "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/llm/client.py"
click node_catalog_search "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/catalog/search.py"
click node_catalog_db "https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/catalog/db.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_home,node_upload,node_progress,node_results,node_floorplan,node_revisionchat,node_api toneBlue
class node_api_routes,node_pipeline,node_state toneAmber
class node_intent,node_vision,node_designer,node_style,node_space,node_allocator,node_shopping,node_budget,node_reviewer,node_render,node_revision toneMint
class node_catalog_search,node_catalog_db toneRose
class node_llm_client,node_llm_service,node_image_gen,node_user toneIndigo
```

## Components

### User experience

- [App page](https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/app/page.tsx): `frontend/src/app/page.tsx`
- [Upload form](https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/components/UploadForm.tsx): `frontend/src/components/UploadForm.tsx`
- [Progress tracker](https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/components/ProgressTracker.tsx): `frontend/src/components/ProgressTracker.tsx`
- [Results view](https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/components/ResultsView.tsx): `frontend/src/components/ResultsView.tsx`
- [Floor plan](https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/components/FloorPlan.tsx): `frontend/src/components/FloorPlan.tsx`
- [Revision chat](https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/components/RevisionChat.tsx): `frontend/src/components/RevisionChat.tsx`
- [API client](https://github.com/vikashask/ai-interior-designer/blob/main/frontend/src/lib/api.ts): `frontend/src/lib/api.ts`

### API and orchestration

- [Design API](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/routes/design.py): `backend/app/routes/design.py`
- [Agent pipeline](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/graph/pipeline.py): `backend/app/graph/pipeline.py`
- [Design state](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/models/state.py): `backend/app/models/state.py`

### Design agents

- [Intent parser](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/intent_parser.py): `backend/app/agents/intent_parser.py`
- [Room vision](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/vision_analyzer.py): `backend/app/agents/vision_analyzer.py`
- [Interior designer](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/designer.py): `backend/app/agents/designer.py`
- [Color and style](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/color_style.py): `backend/app/agents/color_style.py`
- [Space planner](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/space_planner.py): `backend/app/agents/space_planner.py`
- [Budget allocator](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/budget_allocator.py): `backend/app/agents/budget_allocator.py`
- [Shopping agent](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/shopping.py): `backend/app/agents/shopping.py`
- [Budget advisor](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/budget_advisor.py): `backend/app/agents/budget_advisor.py`
- [Proposal reviewer](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/reviewer.py): `backend/app/agents/reviewer.py`
- [Render builder](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/render_builder.py): `backend/app/agents/render_builder.py`
- [Revision agent](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/agents/revision.py): `backend/app/agents/revision.py`

### Product catalog

- [Catalog search](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/catalog/search.py): `backend/app/catalog/search.py`
- [Product catalog](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/catalog/db.py): `backend/app/catalog/db.py`

### AI integrations

- [LLM client](https://github.com/vikashask/ai-interior-designer/blob/main/backend/app/llm/client.py): `backend/app/llm/client.py`
- **OpenAI or Ollama**
- **DALL-E 3**

### Other components

- **Designer**

## Connections

- Designer → Upload form: provides request
- Upload form → App page: submits form
- App page → API client: starts project
- App page → Progress tracker: shows status
- App page → Results view: shows proposal
- Results view → Floor plan: renders layout
- Results view → Revision chat: offers revisions
- API client → Design API: calls endpoints
- Design API → Agent pipeline: starts workflow
- Design API → Revision agent: runs feedback
- Agent pipeline → Design state: updates state
- Agent pipeline → Intent parser: dispatches parsing
- Agent pipeline → Room vision: dispatches analysis
- Agent pipeline → Interior designer: dispatches brief
- Agent pipeline → Color and style: dispatches styling
- Agent pipeline → Space planner: dispatches layout
- Agent pipeline → Budget allocator: dispatches allocation
- Agent pipeline → Shopping agent: dispatches product search
- Agent pipeline → Budget advisor: dispatches review
- Agent pipeline → Proposal reviewer: dispatches quality check
- Agent pipeline → Render builder: dispatches rendering
- Shopping agent → Catalog search: searches products
- Catalog search → Product catalog: queries
- Intent parser → LLM client: requests structured output
- Proposal reviewer → LLM client: requests review
- LLM client → OpenAI or Ollama: sends prompts
- Render builder → DALL-E 3: generates visualization
