Files
jobtrackingapp/docs/ai/workload-inventory.md
T

7.6 KiB
Raw Blame History

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 KB2 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; 2k15k → 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; 1002k → 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; 2k15k → 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; 20015k → 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; 50010k → 20k chars short text + sidecar signals EN/NO interactive ≤5 s or queued; medium P0P2 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; 4k20k 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; 4k20k 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; 4k20k 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; 1k20k 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; 5010k 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; 5020k 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

  • /summarize always uses local DistilBART in the current sidecar. /cv/* routes dispatch through AI_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.
  • ISummarizerService truncates 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.