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:
authentik Default Admin 2026-05-24 20:59:58 +01:00
parent a0c37d4201
commit 5890f2bbf7

View file

@ -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)