# ravigupta46/ai_ticket_project architecture

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

- Interactive diagram: https://gitdiagram.com/ravigupta46/ai_ticket_project
- Repository: https://github.com/ravigupta46/ai_ticket_project

## Overview

ResolvAI is a Flask customer-support ticket triage platform, with a separate offline model-training workflow. Users submit a complaint, review AI-generated ticket details, and confirm persistence; agents view tickets and update their status. The map also preserves the documented classification, priority, NER, and evaluation capabilities. App-to-service calls are supported by the app excerpt; several model and template relationships are documented only at a high level, so those links are dashed where implementation details were not sampled.

Main entry points: [`app.py`](https://github.com/ravigupta46/ai_ticket_project/blob/main/app.py) (Flask routes), [`ai_engine/ticket_generator.py`](https://github.com/ravigupta46/ai_ticket_project/blob/main/ai_engine/ticket_generator.py) (Ticket generation and NER), [`model/preprocessing.py`](https://github.com/ravigupta46/ai_ticket_project/blob/main/model/preprocessing.py) (Text preprocessing), [`model/run_training.py`](https://github.com/ravigupta46/ai_ticket_project/blob/main/model/run_training.py) (Training workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web workflows"]
  node_flask["Flask routes<br/>[app.py]"]
  node_ticket_form["Ticket submission<br/>[create_ticket.html]"]
  node_preview["Preview confirmation"]
  node_dashboards["User and agent dashboards"]
  node_ticket_detail["Ticket details"]
end

subgraph group_triage["Ticket triage"]
  node_generator["Ticket generation and NER"]
  node_taxonomy["Queue taxonomy<br/>[config.py]"]
  node_ner["spaCy NER"]
end

subgraph group_storage["Persistence"]
  node_db[("SQLite persistence<br/>[database.py]")]
end

subgraph group_ml["Model lifecycle"]
  node_preprocessing["Text preprocessing<br/>[preprocessing.py]"]
  node_model_config["Model configuration<br/>[config.py]"]
  node_category_training["Category training<br/>[train_category.py]"]
  node_priority_training["Priority training<br/>[train_priority.py]"]
  node_training_runner["Training workflow<br/>[run_training.py]"]
  node_evaluation["Model evaluation<br/>[evaluate.py]"]
  node_prediction["Single-ticket prediction<br/>[predict.py]"]
  node_metrics["Evaluation metrics<br/>[metrics.json]"]
end

node_user(("Customer"))
node_agent(("Support agent"))

node_user -->|"submits tickets"| node_flask
node_agent -->|"manages tickets"| node_flask
node_flask -->|"renders"| node_ticket_form
node_flask -->|"generates preview"| node_generator
node_generator -.->|"extracts entities"| node_ner
node_flask -->|"renders"| node_preview
node_flask -->|"validates choices"| node_taxonomy
node_user -->|"reviews"| node_preview
node_flask -->|"persists and retrieves"| node_db
node_flask -->|"renders"| node_dashboards
node_flask -->|"renders"| node_ticket_detail
node_flask -->|"recomputes entities"| node_generator
node_preprocessing -->|"uses paths"| node_model_config
node_category_training -->|"uses features"| node_preprocessing
node_priority_training -->|"uses features"| node_preprocessing
node_training_runner -.->|"runs training"| node_category_training
node_training_runner -.->|"runs training"| node_priority_training
node_training_runner -.->|"runs evaluation"| node_evaluation
node_evaluation -.->|"writes metrics"| node_metrics
node_prediction -.->|"uses features"| node_preprocessing
node_generator -.->|"uses trained models"| node_prediction
node_flask -->|"loads metrics"| node_metrics

click node_flask "https://github.com/ravigupta46/ai_ticket_project/blob/main/app.py"
click node_ticket_form "https://github.com/ravigupta46/ai_ticket_project/blob/main/templates/create_ticket.html"
click node_preview "https://github.com/ravigupta46/ai_ticket_project/blob/main/templates/preview_ticket.html"
click node_dashboards "https://github.com/ravigupta46/ai_ticket_project/blob/main/templates/user_dashboard.html"
click node_ticket_detail "https://github.com/ravigupta46/ai_ticket_project/blob/main/templates/ticket_details.html"
click node_generator "https://github.com/ravigupta46/ai_ticket_project/blob/main/ai_engine/ticket_generator.py"
click node_taxonomy "https://github.com/ravigupta46/ai_ticket_project/blob/main/ai_engine/config.py"
click node_db "https://github.com/ravigupta46/ai_ticket_project/blob/main/database.py"
click node_preprocessing "https://github.com/ravigupta46/ai_ticket_project/blob/main/model/preprocessing.py"
click node_model_config "https://github.com/ravigupta46/ai_ticket_project/blob/main/model/config.py"
click node_category_training "https://github.com/ravigupta46/ai_ticket_project/blob/main/model/train_category.py"
click node_priority_training "https://github.com/ravigupta46/ai_ticket_project/blob/main/model/train_priority.py"
click node_training_runner "https://github.com/ravigupta46/ai_ticket_project/blob/main/model/run_training.py"
click node_evaluation "https://github.com/ravigupta46/ai_ticket_project/blob/main/model/evaluate.py"
click node_prediction "https://github.com/ravigupta46/ai_ticket_project/blob/main/model/predict.py"
click node_metrics "https://github.com/ravigupta46/ai_ticket_project/blob/main/model/output/metrics.json"

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_flask,node_ticket_form,node_preview,node_dashboards,node_ticket_detail toneBlue
class node_generator,node_taxonomy,node_ner toneAmber
class node_db toneMint
class node_preprocessing,node_model_config,node_category_training,node_priority_training,node_training_runner,node_evaluation,node_prediction,node_metrics toneRose
class node_user,node_agent toneIndigo
```

## Components

### Web workflows

- [Flask routes](https://github.com/ravigupta46/ai_ticket_project/blob/main/app.py): `app.py`
- [Ticket submission](https://github.com/ravigupta46/ai_ticket_project/blob/main/templates/create_ticket.html): `templates/create_ticket.html`
- [Preview confirmation](https://github.com/ravigupta46/ai_ticket_project/blob/main/templates/preview_ticket.html): `templates/preview_ticket.html`
- [User and agent dashboards](https://github.com/ravigupta46/ai_ticket_project/blob/main/templates/user_dashboard.html): `templates/user_dashboard.html`
- [Ticket details](https://github.com/ravigupta46/ai_ticket_project/blob/main/templates/ticket_details.html): `templates/ticket_details.html`

### Ticket triage

- [Ticket generation and NER](https://github.com/ravigupta46/ai_ticket_project/blob/main/ai_engine/ticket_generator.py): `ai_engine/ticket_generator.py`
- [Queue taxonomy](https://github.com/ravigupta46/ai_ticket_project/blob/main/ai_engine/config.py): `ai_engine/config.py`
- **spaCy NER**

### Persistence

- [SQLite persistence](https://github.com/ravigupta46/ai_ticket_project/blob/main/database.py): `database.py`

### Model lifecycle

- [Text preprocessing](https://github.com/ravigupta46/ai_ticket_project/blob/main/model/preprocessing.py): `model/preprocessing.py`
- [Model configuration](https://github.com/ravigupta46/ai_ticket_project/blob/main/model/config.py): `model/config.py`
- [Category training](https://github.com/ravigupta46/ai_ticket_project/blob/main/model/train_category.py): `model/train_category.py`
- [Priority training](https://github.com/ravigupta46/ai_ticket_project/blob/main/model/train_priority.py): `model/train_priority.py`
- [Training workflow](https://github.com/ravigupta46/ai_ticket_project/blob/main/model/run_training.py): `model/run_training.py`
- [Model evaluation](https://github.com/ravigupta46/ai_ticket_project/blob/main/model/evaluate.py): `model/evaluate.py`
- [Single-ticket prediction](https://github.com/ravigupta46/ai_ticket_project/blob/main/model/predict.py): `model/predict.py`
- [Evaluation metrics](https://github.com/ravigupta46/ai_ticket_project/blob/main/model/output/metrics.json): `model/output/metrics.json`

### Other components

- **Customer**
- **Support agent**

## Connections

- Customer → Flask routes: submits tickets (evidence: `README.md`)
- Support agent → Flask routes: manages tickets (evidence: `README.md`)
- Flask routes → Ticket submission: renders (evidence: `app.py`)
- Flask routes → Ticket generation and NER: generates preview (evidence: `app.py`)
- Ticket generation and NER → spaCy NER: extracts entities (evidence: `README.md`)
- Flask routes → Preview confirmation: renders (evidence: `app.py`)
- Flask routes → Queue taxonomy: validates choices (evidence: `app.py`)
- Customer → Preview confirmation: reviews (evidence: `README.md`)
- Flask routes → SQLite persistence: persists and retrieves (evidence: `app.py`)
- Flask routes → User and agent dashboards: renders (evidence: `app.py`)
- Flask routes → Ticket details: renders (evidence: `app.py`)
- Flask routes → Ticket generation and NER: recomputes entities (evidence: `app.py`)
- Text preprocessing → Model configuration: uses paths (evidence: `model/preprocessing.py`)
- Category training → Text preprocessing: uses features (evidence: `model/train_category.py`)
- Priority training → Text preprocessing: uses features (evidence: `model/train_priority.py`)
- Training workflow → Category training: runs training (evidence: `README.md`)
- Training workflow → Priority training: runs training (evidence: `README.md`)
- Training workflow → Model evaluation: runs evaluation (evidence: `README.md`)
- Model evaluation → Evaluation metrics: writes metrics (evidence: `README.md`)
- Single-ticket prediction → Text preprocessing: uses features
- Ticket generation and NER → Single-ticket prediction: uses trained models (evidence: `README.md`)
- Flask routes → Evaluation metrics: loads metrics (evidence: `app.py`)
