# jineshprajapat/odoo_ai_agent architecture

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

- Interactive diagram: https://gitdiagram.com/jineshprajapat/odoo_ai_agent
- Repository: https://github.com/jineshprajapat/odoo_ai_agent

## Overview

This repository is an Odoo ERP AI agent with a FastAPI interface. Its main workflow takes a user request through model discovery, registry context selection, plan generation and validation, Odoo execution, and response generation; unresolved or invalid requests can instead produce clarification. Authentication and user sessions form a separate supporting capability. The sampled workflow source establishes its internal calls, but chat-route wiring, registry internals, and the Odoo transport implementation were not sampled, so those connections are left unspecified.

Main entry points: [`app/workflow/engine.py`](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/workflow/engine.py) (Workflow engine), [`app/modules/auth/service.py`](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/modules/auth/service.py) (Auth service), [`app/api/v1/auth.py`](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/api/v1/auth.py) (Auth API), [`app/odoo/service.py`](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/odoo/service.py) (Odoo execution)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API"]
  node_chat_api["Chat API<br/>[chat.py]"]
  node_auth_api["Auth API<br/>[auth.py]"]
end

subgraph group_workflow["AI workflow"]
  node_workflow_engine["Workflow engine<br/>[engine.py]"]
  node_model_discovery["Model discovery"]
  node_planner["Action planner<br/>[planner_agent.py]"]
  node_plan_validator["Plan validator<br/>[validator.py]"]
  node_clarification["Clarification<br/>[clarification.py]"]
  node_response_agent["Response generation<br/>[response_agent.py]"]
end

subgraph group_odoo["Odoo integration"]
  node_registry_slice["Registry context<br/>[registry_slice.py]"]
  node_odoo_service["Odoo execution<br/>[service.py]"]
  node_odoo_crud["Odoo CRUD<br/>[crud.py]"]
end

subgraph group_identity["Identity and state"]
  node_auth_service["Auth service<br/>[service.py]"]
  node_user_repo["User repository<br/>[user.py]"]
  node_session_repo["Session repository<br/>[user_session.py]"]
  node_token_security["Token security<br/>[security.py]"]
  node_jwt_tokens["JWT tokens<br/>[jwt.py]"]
  node_db[("SQL database<br/>[database.py]")]
end

node_user(("User"))
node_odoo["Odoo ERP"]
node_openai["OpenAI"]

node_user -->|"sends request"| node_chat_api
node_workflow_engine -->|"discovers models"| node_model_discovery
node_workflow_engine -->|"builds context"| node_registry_slice
node_workflow_engine -->|"plans action"| node_planner
node_workflow_engine -->|"validates plan"| node_plan_validator
node_workflow_engine -->|"requests clarification"| node_clarification
node_workflow_engine -->|"executes plan"| node_odoo_service
node_workflow_engine -->|"generates response"| node_response_agent
node_odoo_service -->|"performs operations"| node_odoo_crud
node_odoo_crud --> node_odoo
node_user -->|"submits credentials"| node_auth_api
node_auth_api -->|"handles auth"| node_auth_service
node_auth_service -->|"looks up or creates user"| node_user_repo
node_auth_service -->|"stores refresh session"| node_session_repo
node_auth_service -->|"hashes and verifies"| node_token_security
node_auth_service -->|"issues tokens"| node_jwt_tokens
node_session_repo -->|"persists session"| node_db

click node_chat_api "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/api/v1/chat.py"
click node_auth_api "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/api/v1/auth.py"
click node_workflow_engine "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/workflow/engine.py"
click node_model_discovery "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/agents/model_resolver_agent.py"
click node_registry_slice "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/odoo/registry/registry_slice.py"
click node_planner "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/agents/planner_agent.py"
click node_plan_validator "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/workflow/validator.py"
click node_clarification "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/workflow/clarification.py"
click node_odoo_service "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/odoo/service.py"
click node_odoo_crud "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/odoo/crud.py"
click node_response_agent "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/agents/response_agent.py"
click node_auth_service "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/modules/auth/service.py"
click node_user_repo "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/crud/user.py"
click node_session_repo "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/crud/user_session.py"
click node_token_security "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/modules/auth/security.py"
click node_jwt_tokens "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/modules/auth/jwt.py"
click node_db "https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/core/database.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_chat_api,node_auth_api,node_user toneBlue
class node_workflow_engine,node_model_discovery,node_planner,node_plan_validator,node_clarification,node_response_agent toneAmber
class node_registry_slice,node_odoo_service,node_odoo_crud toneMint
class node_auth_service,node_user_repo,node_session_repo,node_token_security,node_jwt_tokens,node_db toneRose
class node_odoo,node_openai toneIndigo
```

## Components

### API

- [Chat API](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/api/v1/chat.py): `app/api/v1/chat.py`
- [Auth API](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/api/v1/auth.py): `app/api/v1/auth.py`

### AI workflow

- [Workflow engine](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/workflow/engine.py): `app/workflow/engine.py`
- [Model discovery](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/agents/model_resolver_agent.py): `app/agents/model_resolver_agent.py`
- [Action planner](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/agents/planner_agent.py): `app/agents/planner_agent.py`
- [Plan validator](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/workflow/validator.py): `app/workflow/validator.py`
- [Clarification](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/workflow/clarification.py): `app/workflow/clarification.py`
- [Response generation](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/agents/response_agent.py): `app/agents/response_agent.py`

### Odoo integration

- [Registry context](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/odoo/registry/registry_slice.py): `app/odoo/registry/registry_slice.py`
- [Odoo execution](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/odoo/service.py): `app/odoo/service.py`
- [Odoo CRUD](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/odoo/crud.py): `app/odoo/crud.py`

### Identity and state

- [Auth service](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/modules/auth/service.py): `app/modules/auth/service.py`
- [User repository](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/crud/user.py): `app/crud/user.py`
- [Session repository](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/crud/user_session.py): `app/crud/user_session.py`
- [Token security](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/modules/auth/security.py): `app/modules/auth/security.py`
- [JWT tokens](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/modules/auth/jwt.py): `app/modules/auth/jwt.py`
- [SQL database](https://github.com/jineshprajapat/odoo_ai_agent/blob/main/app/core/database.py): `app/core/database.py`

### Other components

- **User**
- **Odoo ERP**
- **OpenAI**

## Connections

- User → Chat API: sends request
- Workflow engine → Model discovery: discovers models
- Workflow engine → Registry context: builds context
- Workflow engine → Action planner: plans action
- Workflow engine → Plan validator: validates plan
- Workflow engine → Clarification: requests clarification
- Workflow engine → Odoo execution: executes plan
- Workflow engine → Response generation: generates response
- Odoo execution → Odoo CRUD: performs operations
- Odoo CRUD → Odoo ERP
- User → Auth API: submits credentials
- Auth API → Auth service: handles auth
- Auth service → User repository: looks up or creates user
- Auth service → Session repository: stores refresh session
- Auth service → Token security: hashes and verifies
- Auth service → JWT tokens: issues tokens
- Session repository → SQL database: persists session
