How Rithavo understands your career
Not a changelog — this is the story of how each piece of Career Intelligence got built, one validated layer at a time, inspected and tested before the next one began.
Foundation
Career Intelligence Engine
1C-1 · LOCKED
Intelligence Data Foundation
Give Career Intelligence its own relational data model, separate from the single-JSON-blob Career Profile storage — versioning, provenance, and a curated Industry/Role taxonomy.
Built- 20 new intelligence tables (Evidence, Capability, Fit, Transition, Gap, Recommendation, Readiness, Diagnostic, Resume, Career Direction, and more)
- Versioning primitive (version / status / supersedes_id) reused by every later sprint
- ProvenancedField extended with evidence_ids and confidence
- Small, hand-curated Industry/Role reference taxonomy
1C-2 · LOCKED
Evidence Intelligence
Extract Evidence mechanically from what a person already entered — no AI, no invention, every excerpt verbatim and verifiable against the source.
Built- Rule-based Evidence extraction from CareerProfile fields
- Deduplication so re-running extraction never creates duplicate rows
- Anti-invention validation — every excerpt checked against the real source text
1C-3 · LOCKED
Capability Intelligence
Answer 'what can this person demonstrate?' without ever treating a claim as proof.
Built- Four-tier capability classification: Claimed / Insufficient Evidence / Supported / Strongly Demonstrated
- Holistic, evidence-based confidence scoring (not a raw evidence-count formula)
- Capability clustering (Leadership, Analytical, Commercial, Technical, and more)
1C-4 · LOCKED
Role & Industry Fit
Separate three genuinely different questions instead of one fit score: can you do this today, how much would transfer, and how hard would the move be.
Built- Current Fit / Transferable Fit / Transition Effort as three distinct bands
- Confidence kept separate from fit — never invented, never a percentage
- Thin-taxonomy protection so incomplete data is never scored as a false good fit
Career Transition
1C-5 · LOCKED
Career Transition & Gaps
Turn 'not a perfect match' into a specific, classified reason — not every unmet requirement is a real gap.
Built- Six-way gap classification (Skill / Experience / Evidence / Positioning / Information / No Meaningful Gap)
- Severity and priority modeling, so the system can name the 3 that matter, not list 15
- Conservative gap-dependency detection (only when the prerequisite is itself a real gap)
1C-6 · LOCKED
Learning & Development
Don't sell the gap — help close it, with the lowest-cost path considered first.
Built- Gap-type-aware intervention taxonomy (Guided Learning, Practice, Document Evidence, Position Profile, Gather Information)
- Free-first defaults, with the paid alternative always shown, never assumed
- 'Completion of a course is not proof of capability' encoded directly in the data model
1C-7 · LOCKED
Career Readiness
Explain readiness rather than score it — a synthesis layer, not a new judgment.
Built- Current / Transition / Target Readiness as three distinct, explainable dimensions
- Insufficient-information handling — missing data is never read as inability
- Confidence inherited from the underlying Fit assessment, never invented fresh
Diagnostic Bridge
1C-8 · LOCKED
Diagnostic Bridge
Let a resume diagnostic contribute evidence about the person, without ever confusing 'the resume communicates this poorly' with 'the person lacks this capability.'
Built- Diagnostic -> Finding -> Evidence pipeline with explicit RESUME_SPECIFIC / CAREER_LEVEL classification
- Resume versioning, diagnostic deduplication by run id, structural import-safety checks
- Explicit rubric-version compatibility boundary added post-review, so a future rubric change is rejected rather than silently misinterpreted
Career Path Discovery
1C-9 · LOCKED
Career Path Discovery
Answer 'which paths are worth exploring?' by scanning the taxonomy instead of requiring every candidate to be named in advance.
Built- Deterministic scan across the curated Role/Industry taxonomy, reusing the unmodified Fit engine
- Meaningful-fit threshold and thin-taxonomy exclusion — no invented ranking score
- Activated the dormant CareerDirectionAssessment entity, distinguishing the user's stated direction from Rithavo-discovered alternatives
Professional Evolution
1C-10 · LOCKED
Professional Evolution
Answer 'what changed since my last assessment, and why?' using only what was already computed and stored.
Built- Version-history walkers for CareerTransition, Readiness, and Career Direction (extending the pattern already proven for Capability)
- Deterministic version-to-version comparison for Capability, Gap, Readiness, and Career Direction
- Strict what-changed vs. why-it-changed separation — no causal claims invented
Career Intelligence Synthesis
1C-11 · LOCKED
Career Intelligence Synthesis
Answer 'given everything you know, what should I focus on next?' by composing the existing engines — never a new judgment engine.
Built- One coherent CareerIntelligenceSummary assembled from Fit, Gaps, Recommendations, Readiness, and Evolution — all read-only
- Recommendation-decision-aware filtering (a rejected recommendation never resurfaces as a fresh ask)
- Cross-engine consistency verified directly against the underlying persisted rows
Hardening & Integration
1C-12 · LOCKED
Career Intelligence Experience
Make eleven sprints of Career Intelligence visible, understandable, and useful through the actual website — the same structured data, presented, never recomputed.
Built- Career Intelligence overview, Career Paths, and Rithavo Build (this timeline) pages
- Provenance preserved visually throughout (USER_PROVIDED / DIAGNOSTIC / RITHAVO_DERIVED / RITHAVO_RECOMMENDED)
- Demo Mode using synthetic data only
- Homepage storytelling: hero, guided product tour, and human/aspirational journey, connecting straight into the live product — no separate frontend
- Rithavo Build reframed in plain language for non-technical visitors, real sprint history kept intact underneath
- Fit engine direct-experience bump made single-pass so the displayed band and its written reasoning can never disagree, with a permanent regression test
1C-13 · CURRENT
Real Authentication
Replace prototype 'type any email, instantly logged in' with real magic-link sign-in — the last thing standing between this being a demo and being safe to show a real visitor.
Built- Signed, single-use, 15-minute email links (itsdangerous) — no passwords, no third-party OAuth
- Local dev/tests capture the link in-memory (no email actually sent); production sends it through the existing Zoho mailbox once configured
- One new table (magic_link_tokens) — separate from the Career Intelligence data model, purely so a link can genuinely be used only once, not just checked for expiry
- Backend infrastructure proof from the same work window: Supabase PostgreSQL and Supabase Storage validated end-to-end (10/10 and 5/5 tests) as the persistence layer this will run on — SQLite remains the local development/test default throughout