Spaces:
Running
Running
File size: 2,526 Bytes
4260a62 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
%%{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
|