Skip to content
All work

Case study · Career guidance

CareerGuide AI

Career matching for university students where the score is reproducible. AI can advise; it never decides the number.

The scoring rule

A fixed, version-controlled rules engine produces every score.

  • 45Skills
  • 25Interests
  • 15Academic / major relevance
  • 15Career-goal relevance

Weights shift only when fresh market evidence exists — and AI or live web search never set a score directly.

Recommendations never change silently

Every recommendation version is immutable. A new score means an explicit re-score, not an overwrite.

AI beside the engine, not inside it

  • Optional AI career advice alongside the deterministic matching.
  • Schema-constrained JSON from queued, worker-executed jobs, with an authenticated SSE progress stream.
  • Explicit provider selection — mock, OpenAI, Gemini, Ollama. Production startup fails closed if the selected provider has no key.

Checked before release

Ruff, pytest, alembic check, a production smoke script, and frontend lint, typecheck and build — plus a written checklist confirming one student cannot read another student's profile, recommendation or PDF.

Real screens

Captured from a local build of the web app, unedited.

CareerGuide AI landing page: Find the career that fits you
Landing screen
CareerGuide sign-in screen
Sign-in screen

Architecture

FastAPI, SQLAlchemy 2, Alembic, Pydantic Settings, JWT and ReportLab PDF export; React 19, Vite, TypeScript, TanStack Query, React Hook Form and Zod.

Stack

React 19 · Vite · TypeScript · Tailwind CSS 4 · FastAPI · SQLAlchemy 2 · Alembic · ReportLab · PostgreSQL

Source

Private repository