# kumarmukesh88/ai-product-manager architecture

> Architecture diagram of the GitHub repository kumarmukesh88/ai-product-manager, 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/kumarmukesh88/ai-product-manager
- Repository: https://github.com/kumarmukesh88/ai-product-manager

## Overview

Codebasics Digital Asset Assistant indexes a local library of decks, PDFs, images, and public links so users can search its contents rather than filenames. Ingestion extracts document text and embedded images, applies OCR and text/visual embedding, and persists an index; search combines lexical, semantic, and visual evidence into ranked, confidence-gated results. Users can inspect match evidence, open source files, filter results, and reindex. The excerpts establish the API, indexing, retrieval, and UI connections; some extractor and scoring internals are unsampled, so uncertain links are omitted.

Main entry points: [`Asset Assistant/server.py`](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/server.py) (HTTP API), [`Asset Assistant/ingest.py`](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/ingest.py) (Index builder), [`Asset Assistant/search.py`](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/search.py) (Hybrid search), [`Asset Assistant/static/app.js`](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/static/app.js) (Search interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ingest["Ingestion"]
  node_ingest["Index builder<br/>[ingest.py]"]
  node_extract["Content extraction<br/>[extractors.py]"]
  node_index_store[("Search index<br/>[config.py]")]
end

subgraph group_retrieval["Retrieval"]
  node_search["Hybrid search<br/>[search.py]"]
  node_ranking["Confidence ranking<br/>[search.py]"]
end

subgraph group_api["Application API"]
  node_server["HTTP API<br/>[server.py]"]
  node_config["Runtime configuration<br/>[config.py]"]
  node_files["Asset file service<br/>[server.py]"]
  node_feedback["Search feedback<br/>[server.py]"]
  node_query_log[("Query event log<br/>[config.py]")]
end

subgraph group_experience["User experience"]
  node_web["Search interface<br/>[app.js]"]
end

node_person(("Library user"))
node_dataset[("Local asset library")]
node_remote_links(("Linked assets"))
node_models(("Embedding models"))
node_ocr(("OCR engine"))

node_person -->|"searches"| node_web
node_web -->|"requests search"| node_server
node_server -->|"calls search"| node_search
node_search -->|"reads index"| node_index_store
node_search -.->|"embeds query"| node_models
node_search -->|"scores candidates"| node_ranking
node_ranking -->|"returns ranked results"| node_server
node_server -->|"returns results"| node_web
node_dataset -->|"supplies files"| node_ingest
node_ingest -->|"extracts assets"| node_extract
node_extract -.->|"reads image text"| node_ocr
node_extract -->|"returns chunks"| node_ingest
node_ingest -.->|"embeds content"| node_models
node_ingest -->|"writes index"| node_index_store
node_server -->|"rebuilds index"| node_ingest
node_server -->|"reloads index"| node_search
node_server -->|"reads asset details"| node_index_store
node_web -->|"requests details"| node_server
node_web -->|"opens source or media"| node_files
node_files -->|"serves original"| node_dataset
node_person -->|"rates result"| node_feedback
node_feedback -->|"records event"| node_query_log
node_server -->|"reads settings"| node_config
node_ingest -->|"reads paths and models"| node_config
node_search -->|"reads thresholds"| node_config
node_dataset -.->|"contains link references"| node_remote_links

click node_ingest "https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/ingest.py"
click node_extract "https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/extractors.py"
click node_index_store "https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/config.py"
click node_search "https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/search.py"
click node_ranking "https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/search.py"
click node_server "https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/server.py"
click node_config "https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/config.py"
click node_files "https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/server.py"
click node_web "https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/static/app.js"
click node_feedback "https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/server.py"
click node_query_log "https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/config.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_ingest,node_extract,node_index_store,node_person toneBlue
class node_search,node_ranking,node_dataset toneAmber
class node_server,node_config,node_files,node_feedback,node_query_log toneMint
class node_web toneRose
class node_remote_links,node_models,node_ocr toneIndigo
```

## Components

### Ingestion

- [Index builder](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/ingest.py): `Asset Assistant/ingest.py`
- [Content extraction](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/extractors.py): `Asset Assistant/extractors.py`
- [Search index](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/config.py): `Asset Assistant/config.py`

### Retrieval

- [Hybrid search](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/search.py): `Asset Assistant/search.py`
- [Confidence ranking](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/search.py): `Asset Assistant/search.py`

### Application API

- [HTTP API](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/server.py): `Asset Assistant/server.py`
- [Runtime configuration](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/config.py): `Asset Assistant/config.py`
- [Asset file service](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/server.py): `Asset Assistant/server.py`
- [Search feedback](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/server.py): `Asset Assistant/server.py`
- [Query event log](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/config.py): `Asset Assistant/config.py`

### User experience

- [Search interface](https://github.com/kumarmukesh88/ai-product-manager/blob/main/Asset%20Assistant/static/app.js): `Asset Assistant/static/app.js`

### Other components

- **Library user**
- **Local asset library**
- **Linked assets**
- **Embedding models**
- **OCR engine**

## Connections

- Library user → Search interface: searches
- Search interface → HTTP API: requests search
- HTTP API → Hybrid search: calls search
- Hybrid search → Search index: reads index
- Hybrid search → Embedding models: embeds query
- Hybrid search → Confidence ranking: scores candidates
- Confidence ranking → HTTP API: returns ranked results
- HTTP API → Search interface: returns results
- Local asset library → Index builder: supplies files
- Index builder → Content extraction: extracts assets
- Content extraction → OCR engine: reads image text
- Content extraction → Index builder: returns chunks
- Index builder → Embedding models: embeds content
- Index builder → Search index: writes index
- HTTP API → Index builder: rebuilds index
- HTTP API → Hybrid search: reloads index
- HTTP API → Search index: reads asset details
- Search interface → HTTP API: requests details
- Search interface → Asset file service: opens source or media
- Asset file service → Local asset library: serves original
- Library user → Search feedback: rates result
- Search feedback → Query event log: records event
- HTTP API → Runtime configuration: reads settings
- Index builder → Runtime configuration: reads paths and models
- Hybrid search → Runtime configuration: reads thresholds
- Local asset library → Linked assets: contains link references
