7.6 KiB
7.6 KiB
JobTracker AI workload inventory
Date: 2026-08-02
This inventory is code-derived, not a production measurement. Typical sizes and latency targets are initial evaluation bands for synthetic benchmarks; they are not observed production SLOs. Current provider means the repository default path, not a verified production setting.
Privacy classes used by the next policy package:
P0 public: synthetic/public job text without user data.P1 account: user settings or application metadata without CV/email bodies.P2 private: CV/profile, notes, drafts, contacts or email content.P3 credential: provider tokens/secrets; never a model input.
| ID | Task and reachable path | Input / typical → max | Output | Language | Target / quality | Privacy and fallback candidate | Mode | Deterministic? | Current provider/model | Pro |
|---|---|---|---|---|---|---|---|---|---|---|
| DOC-EXTRACT | CV/attachment text extraction; /extract-text |
PDF/DOCX/image/text; 50 KB–2 MB → API 5 MB, sidecar 8 MB | text + OCR metadata | any OCR-supported | background ≤30 s; high | P2; external prohibited | interactive/background | parser/OCR, not generative | local parser/Tesseract | Yes when used for AI CV import/context |
| CV-NORMALIZE | CV structure normalization; /cv/normalize |
extracted CV text; 2k–15k → 50k chars | strict profile JSON | EN/NO/mixed | background ≤45 s; critical factuality | P2; local default, external only explicit future consent | background | deterministic parser first; AI only unresolved structure | configurable /cv/*, default Ollama qwen2.5:7b |
Yes |
| CV-CLASSIFY | ambiguous CV block classification; /cv/classify-block |
one block; 100–2k → 6k chars | strict classification JSON | EN/NO/mixed | background ≤10 s; medium/high | P2; same as CV-NORMALIZE | background | deterministic headings first | configurable /cv/*, default Ollama qwen2.5:7b |
Yes |
| PROFILE-EXTRACT | Career Profile extraction in BuildStructuredCvAsync |
CV text; 2k–15k → composed prompt 20k | strict StructuredCvProfile JSON |
EN/NO/mixed | background ≤60 s; critical | P2; external prohibited by default | background | deterministic parsing/fallback remains required | /cv/rewrite, default Ollama qwen2.5:7b |
Yes |
| PROFILE-DIFF | conservative import/merge suggestions | old/new structured profile | field diff with explicit accept/reject | any | interactive <1 s; critical | P2; no fallback needed | interactive | Yes: CvProfileDiffService; keep AI out |
local C# | No model call |
| JOB-CLEAN | language, stop words, keyword/phrase/skill cleanup | job advert; 200–15k → 20k chars | language/tags/phrases | EN/NO/mixed | <1 s; high precision | P0/P1; no external need | interactive/background | Yes for language/basic tags; semantic phrase extraction may be evaluated separately | local LanguageDetector/SkillTagger |
No model call |
| JOB-SUMMARY | create/detail/refresh/enrichment summary | job text; 500–10k → 20k chars | short text + sidecar signals | EN/NO | interactive ≤5 s or queued; medium | P0–P2 when notes included; local default | both | AI for abstractive summary; tags stay deterministic | local sshleifer/distilbart-cnn-12-6 /summarize |
Yes for model call |
| JOB-MATCH | skills/missing skills/score | job text + reviewed profile | score, matched/missing skills, evidence | EN/NO | <1 s; high/reproducible | P2; no external need | interactive | Yes: JobCvMatchService/ApplicationIntelligenceService |
local C# | No model call |
| STRATEGY | candidate fit, focus plan, Strategy Snapshot | job + CV + optional notes/email/attachments; 4k–20k | typed DTO/markdown narrative | EN/NO/mixed | queued target ≤60 s; high | P2; external prohibited by default | interactive → durable background planned | deterministic match evidence first; AI narrative | /cv/rewrite, default Ollama qwen2.5:7b |
Yes |
| CV-TAILOR | tailored CV/headline/bullets | reviewed profile + job + optional private context; 4k–20k | editable CV draft | EN/NO | queued ≤90 s; critical factuality | P2; external prohibited by default | interactive → background planned | No, but deterministic evidence selection should constrain prompt | /cv/rewrite, default Ollama qwen2.5:7b |
Yes |
| APPLICATION-DRAFT | cover letter/application answer/recruiter message | CV + job + optional email/notes; 4k–20k | editable text variants | EN/NO | queued ≤90 s; high | P2; external prohibited by default | interactive → background planned | No | /cv/rewrite, default Ollama qwen2.5:7b |
Yes |
| FOLLOWUP-DRAFT | follow-up email draft | job/application state + saved drafts + optional email; 1k–20k | editable subject/body | EN/NO | interactive/queued ≤30 s; high | P2; external prohibited by default; never auto-send | interactive | No; mode/recipient validation deterministic | /cv/rewrite, default Ollama qwen2.5:7b |
Yes |
| EMAIL-CLASSIFY | pipeline status from received email | subject/body; 50–10k | status suggestion + signal | EN/NO | <1 s; high precision | P2; no external need | background/interactive | Yes: EmailStatusClassifier |
local C# | No model call |
| RECRUITMENT-DETECT | detect/link recruitment messages | headers/body/job/company signals | suggested link/category/confidence | EN/NO | background <1 s; high precision | P2; no external need for current rules | background | Yes until measured semantic gap | local C# matching/import rules | No model call |
| INTERVIEW | generated interview brief/questions | job + profile + saved state | editable brief/questions | EN/NO | queued ≤45 s; high | P2; external prohibited by default | interactive → background planned | checklist/board CRUD deterministic; brief generative | /cv/rewrite, default Ollama qwen2.5:7b |
Yes |
| WRITING | CV Builder improve/shorten/expand/ATS/bullets/summary/tailor | selected user text + optional role; 50–20k | editable suggestion | EN/NO/mixed | interactive ≤20 s; high factuality | P2; external prohibited by default | interactive | grammar-only may use local deterministic tools later; no current equivalent | /cv/rewrite, default Ollama qwen2.5:7b |
Yes |
| HEALTH-PROBE | service capability/latency probe | fixed synthetic sentence | metrics only | EN | ≤10 s; operational | P0; external provider probe requires later explicit policy | background/admin | fixed local request | /summarize; local DistilBART |
Admin/operational |
Reachability and policy observations
/summarizealways uses local DistilBART in the current sidecar./cv/*routes dispatch throughAI_PROVIDER, whose repository default is local Ollama but which can currently be set globally to Gemini or Groq.- The current global provider switch cannot enforce the task/privacy distinctions above. POL-002/AI-002 must replace it before external fallback is enabled.
ISummarizerServicetruncates composed rewrite prompts at 20,000 characters. Sidecar request models cap rewrite text at 20,000, CV normalization at 50,000, classification blocks at 6,000, and extraction bytes at 8 MB; the application CV upload boundary is 5 MB.- Deterministic keyword cleanup, skill matching, profile diffing and email classification must not be routed through a model.
- P3 credentials are configuration inputs only and must never appear in prompts, fixtures, logs or provider payloads.
Synthetic evaluation data
Machine-readable cases are in JobTrackerApi.Tests/Fixtures/AiEvaluation/cases.json. They cover all required English/Norwegian/mixed/noisy/sparse/technology/email/follow-up/strategy/strict-JSON/adversarial/injection/long/empty/invalid categories. Expected assertions are constraints rather than golden prose so later model comparisons do not reward one exact wording.