resfit / docs /flowchart.mmd
Sajil Awale
solvede mermaid in streamlit issue by rendering image first
4260a62
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#E1F5FE',
'primaryTextColor': '#01579B',
'lineColor': '#546E7A',
'clusterBkg': '#FAFAFA',
'clusterBorder': '#CFD8DC'
},
'flowchart': {
'curve': 'basis'
}
}}%%
graph TD
%% === STYLING DEFINITIONS ===
classDef user fill:#fff9c4,stroke:#fbc02d,stroke-width:2px,rx:10;
classDef ui fill:#e1f5fe,stroke:#0288d1,stroke-width:2px,rx:5;
classDef ai fill:#ffe0b2,stroke:#f57c00,stroke-width:2px,rx:10;
classDef process fill:#ffffff,stroke:#78909c,stroke-width:2px,rx:5;
classDef data fill:#e1bee7,stroke:#8e24aa,stroke-width:2px,shape:cylinder;
classDef output fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px,rx:5;
%% === THE DIAGRAM ===
%% 1. USER INTERFACE LAYER
subgraph UI_Layer ["πŸ–₯️ Frontend / Interface"]
User([πŸ‘€ User]):::user
Streamlit[/"πŸ’» Streamlit UI"/]:::ui
LLM["🧠 LLM Provider<br/>(OpenAI / Gemini / Claude)"]:::ui
User -->|Uploads Files| Streamlit
Streamlit -.->|Configures| LLM
end
%% 2. THE PIPELINE (BACKEND)
%% Phase 1: Ingestion
subgraph P1 ["Phase 1: Input Processing"]
Parser["πŸ“„ Resume Parser<br/>(PyMuPDF4LLM)"]:::process
Scraper["🌐 Job Scraper<br/>(Web Engine)"]:::process
end
%% Phase 2: Understanding
subgraph P2 ["Phase 2: AI Orchestration"]
Extractor{{"πŸ€– Data Extractor"}}:::ai
Planner["πŸ“‹ Content Planner"]:::ai
%% Connecting P1 to P2
Parser --> Extractor
Scraper --> Extractor
Extractor --> Planner
end
%% Phase 3: Writing
subgraph P3 ["Phase 3: Parallel Writing"]
Workers{{"⚑ Async Workers"}}:::ai
S1["πŸ“ Summary"]:::process
S2["πŸ’Ό Experience"]:::process
S3["πŸ› οΈ Skills"]:::process
S4["πŸš€ Projects"]:::process
Planner --> Workers
Workers --> S1
Workers --> S2
Workers --> S3
Workers --> S4
end
%% Phase 4: Assembly
subgraph P4 ["Phase 4: Generation"]
Merger["πŸ”— Jinja2 Merger"]:::process
Compiler["βš™οΈ PDF Compiler<br/>(LaTeX)"]:::process
S1 --> Merger
S2 --> Merger
S3 --> Merger
S4 --> Merger
Merger --> Compiler
end
%% 3. OUTPUT
Result([πŸ“„ Final PDF]):::output
%% === CROSS CONNECTIONS ===
Streamlit --> Parser
Streamlit --> Scraper
Compiler --> Result