Job Fit & Salary Estimator

Case study deliverable โ€” CV โ†’ 0โ€“100 seniority score + salary range + +30% growth plan

Headline architecture: Official wage anchor + transparent seniority model + bounded LLM explanation.

Python pipeline that takes a CV (PDF or DOCX), extracts and redacts PII, classifies the candidate to an ISCO-08 occupation code, computes a hybrid score (deterministic + LLM-bounded), looks up Czech ISPV salary deciles, and produces a +30% growth plan with three-way branching (skill up, stretch, or change role family).

๐Ÿš€ Run it live โ€” upload your own CV โ†’ Streamlit app ยท upload PDF/DOCX, see live score + salary + growth plan

Artifacts

๐Ÿ“Š Live tool results

The pipeline run end-to-end on five synthetic CVs spanning junior, mid, senior, career-changer (nurse โ†’ developer), and a buzzword-heavy fake. Side-by-side scores, salary ranges, branch decisions, LLM-quoted evidence, and recommended actions per CV.

๐Ÿ“ Design explainer

Walks through every step, every formula, and every design decision. Mermaid diagrams of the pipeline and growth-plan branching, an SVG chart contrasting the anchored interpolation against a (wrong) linear mapping, and a step-by-step worked example.

Sample results โ€” at a glance

CV Score Band Salary point +30% branch ISCO
junior_dev_1y 42 Mid 81,884 CZK skill_up_within_role 2512
mid_dev_4y 64 Senior 119,487 CZK skill_up_within_role 2512
senior_dev_8y 79 Senior 122,534 CZK role_family_change 251
nurse_to_dev_5y_2y 50 Mid 93,711 CZK skill_up_within_role 2512
buzzword_no_evidence 38 Junior 77,206 CZK skill_up_within_role 112

Rank order holds (junior < mid < senior). Career-changer correctly anchors to Software developer ISCO (2512), not nurse ISCO. Senior dev gets role_family_change because a +30% increase exceeds the top decile of their current ISCO group โ€” the system correctly recommends pivoting role family rather than skilling up further.