docs: rename to Job Tracker and add architecture + lifecycle diagrams
- Renamed the H1 from 'Job Agent' to 'Job Tracker' to match the published
repo name.
- Added two Mermaid diagrams up front under 'How it works':
- Architecture diagram: Next.js (RSC + API) ↔ Postgres+pgvector ↔
Claude CLI ↔ local embedder, with HNSW cosine retrieval and the
storage/ folder for uploads + generated PDFs.
- Lifecycle diagram: end-to-end flow from profile setup → application
creation → auto-indexing → generation (CV / cover letter / interview
prep / emails) → review with ATS scoring → approve → pipeline tracking
with unified feed, contacts, and per-company research → outcome →
feedback loop that reindexes positive outcomes for future RAG
retrieval.
Both Gitea and GitHub render Mermaid natively in markdown.
This commit is contained in:
parent
a0c37d4201
commit
5890f2bbf7
1 changed files with 81 additions and 1 deletions
82
README.md
82
README.md
|
|
@ -1,4 +1,4 @@
|
|||
# Job Agent
|
||||
# Job Tracker
|
||||
|
||||
**EN** — Personal job-application command center: full-pipeline tracking, AI-generated CVs/cover letters/emails, per-company research log, recruiter networking, and an integrated event feed for every application. Postgres + pgvector RAG, Next.js 16.
|
||||
|
||||
|
|
@ -6,6 +6,86 @@
|
|||
|
||||
---
|
||||
|
||||
## How it works
|
||||
|
||||
### Architecture
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
User([👤 User])
|
||||
|
||||
subgraph App["Next.js 16 (App Router + RSC)"]
|
||||
UI[Pages /applications /contacts /profile<br/>dashboard, raio-x, settings]
|
||||
API[API routes<br/>async route handlers]
|
||||
end
|
||||
|
||||
subgraph Storage["Persistence"]
|
||||
PG[(Postgres 16<br/>+ pgvector)]
|
||||
FS[storage/uploads<br/>storage/generated]
|
||||
end
|
||||
|
||||
subgraph AI["AI subsystems"]
|
||||
Claude[Claude CLI<br/>subprocess]
|
||||
Embedder[Local embedder<br/>all-MiniLM-L6-v2<br/>384 dims]
|
||||
end
|
||||
|
||||
User -->|HTTPS| UI
|
||||
UI -->|fetch| API
|
||||
API <-->|Drizzle ORM<br/>postgres-js| PG
|
||||
API -->|stdin/stdout| Claude
|
||||
API -->|index on write| Embedder
|
||||
Embedder -->|vector embeddings| PG
|
||||
API -->|PDFs, uploaded docs| FS
|
||||
PG -.->|HNSW cosine `<=>`<br/>top-K chunks| API
|
||||
```
|
||||
|
||||
### Lifecycle of one job application
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
P([Set up profile<br/>experience, skills, documents])
|
||||
A[Add application<br/>+ paste job description]
|
||||
I[Auto-index JD chunks<br/>into pgvector]
|
||||
G{Generate document?}
|
||||
CV[CV<br/>profile + RAG + ATS keywords → Claude]
|
||||
CL[Cover letter<br/>profile + RAG → Claude]
|
||||
PR[Interview prep<br/>STAR answers]
|
||||
EM[Email<br/>follow-up / thank-you / withdraw]
|
||||
R[Review + ATS score]
|
||||
F{Refine?}
|
||||
AP[Approve]
|
||||
K[Index approved CV/CL<br/>for future RAG retrieval]
|
||||
T[Track pipeline status]
|
||||
FD[Unified feed<br/>notes · stages · contact interactions]
|
||||
CO[Link contacts<br/>recruiter, interviewer, hiring manager]
|
||||
RES[Per-company research<br/>news · culture · glassdoor · tech stack]
|
||||
OUT([Outcome:<br/>interview · offer · rejected])
|
||||
LOOP[Feedback loop<br/>positive outcomes reindex<br/>improving future generations]
|
||||
|
||||
P --> A
|
||||
A --> I
|
||||
I --> G
|
||||
G --> CV
|
||||
G --> CL
|
||||
G --> PR
|
||||
G --> EM
|
||||
CV --> R
|
||||
CL --> R
|
||||
R --> F
|
||||
F -->|yes, with feedback| G
|
||||
F -->|no| AP
|
||||
AP --> K
|
||||
AP --> T
|
||||
T --> FD
|
||||
T --> CO
|
||||
T --> RES
|
||||
T --> OUT
|
||||
OUT --> LOOP
|
||||
LOOP --> I
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Table of contents
|
||||
|
||||
- [Features](#features)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue