Skip to content
All projects

AI Career Intelligence Platform

PrepForge

A career intelligence and interview preparation platform: resume and job description analysis, per-job skill gaps, practice, mock interviews and job discovery, with a provider-agnostic LLM gateway.

Type
Personal
Availability
Private repository, in active development. No public demo yet.

Overview

PrepForge is a job-focused career preparation platform. Each job a candidate targets becomes a preparation workspace: the resume and job description are analysed, skill gaps feed a personal plan, and practice, skill checks and mock interviews update a per-job Skill Intelligence record that decides the next best action.

Problem

Interview preparation is usually generic: question banks and chatbots that don't know which job you are preparing for or what you already know. Candidates can't tell which gaps matter for a specific role, and practice doesn't feed back into what to study next.

Solution

A continuous, job-specific loop: analysis → skill intelligence → personalised plan → learn → practice → verification → scenario → virtual interview → evaluation → next best action. Every feature reads from and writes evidence to the same per-job skill record, so preparation adapts as the candidate improves.

What exists today

  • Resume (PDF/DOCX) and job description analysis

    Deterministic skill taxonomy and alias matching

    Implemented
  • Skill gap identification and per-job Skill Intelligence

    Implemented
  • Question bank, practice, skill checks and progress

    Implemented
  • Text virtual interviews with evaluation

    Implemented
  • Job discovery from public job boards

    Greenhouse, Lever, Ashby, Adzuna and career-page providers

    Implemented
  • Resume builder with PDF/DOCX export

    Implemented
  • Provider-agnostic LLM gateway

    Gemini, OpenAI, NVIDIA and Groq adapters with fallbacks

    Implemented
  • AI-assisted analysis review

    Optional step behind a feature flag

    Experimental
  • Voice interviews

    Built behind a flag; not yet tried against a real provider

    Experimental
  • RAG over learning content

    Planned
  • Public launch

    Email provider, CSP and data export come first

    Planned

Architecture

  1. Client

    • Next.js App Router
    • React + TypeScript
    • Tailwind CSS
  2. API

    • FastAPI (routes → services → models)
    • JWT auth + rate limits
    • Admin APIs
  3. Domain services

    • Analysis engine
    • Skill Intelligence
    • Interviews & evaluation
    • Job discovery
  4. Async & AI

    • Durable analysis queue + worker
    • LLM gateway (policy, fallbacks, quotas)
  5. Data

    • PostgreSQL
    • Alembic migrations
    • Daily backups
PrepForge application architecture. Simplified from the project's own design docs.

Technology stack

Frontend
  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
Backend
  • Python
  • FastAPI
  • SQLAlchemy
  • Alembic
  • Argon2
  • JWT
Data
  • PostgreSQL
AI
  • Gemini
  • OpenAI
  • NVIDIA API catalog
  • Groq
  • Versioned prompt templates
Delivery
  • Docker
  • Docker Compose
  • GitHub Actions
  • Sentry-compatible error reporting

My contribution

  • Sole designer and developer: product design, frontend, backend, data model, AI integration and deployment setup.
  • Designed the per-job Skill Intelligence model that connects analysis, practice, checks and interviews.
  • Built the LLM gateway so features never import a provider SDK and providers can be swapped or chained as fallbacks.
  • Built a separate evaluation harness (prepforge-evals) that tests the analysis API against versioned synthetic datasets.

Engineering challenges

Honest evidence

Practice and quiz results are evidence, not proof. Confidence only rises on first attempts, and drafts, mock AI output and self-reviews never count as evidence.

Reliable AI on free tiers

Provider rate limits and outages are normal. The gateway adds a circuit breaker, per-model quotas tracked in Postgres and ordered fallbacks after timeouts, 429s and 5xx errors.

Long-running analysis

Analyses run on a durable Postgres-backed queue with leases, retries and heartbeats, so a crashed worker doesn't lose work and any number of workers can run side by side.

Design decisions

Deterministic skill matching first, AI as an optional review step
Results are explainable and testable, and the product doesn't claim semantic understanding it doesn't have.
FastAPI + PostgreSQL instead of a backend-as-a-service
A real backend from the start, fewer moving parts, and the job queue lives in the same database.
Store extracted resume text, drop the original file
No private files to secure and no object storage until a feature needs it.
Free-only AI policy by default
Only providers verified as free are used, and providers that train on prompts never receive a person's text.

Security

  • Passwords hashed with Argon2; server-side token revocation on logout and password change.
  • Sign-in rate limits stored in Postgres (email hashes only), so they hold across processes and restarts.
  • Ownership enforced on every user-owned lookup; another user's id returns 404, and a test walks every route for auth and admin gates.
  • Production start-up refuses weak JWT secrets, default database passwords and non-https CORS origins, and hides the API docs.

Scalability

  • The API is stateless and runs any number of processes behind an HTTPS proxy.
  • Analysis workers scale horizontally and finish the current run on SIGTERM.
  • Migrations are written to work with the previous API version during a deploy.
  • Liveness and readiness health checks; readiness verifies the database and migration head.

Testing approach

  • Pytest suite for the backend and Vitest for the frontend, run in GitHub Actions with lint and a production build.
  • CI checks there is exactly one Alembic migration head.
  • prepforge-evals: an external harness that calls PrepForge over HTTP, compares answers with versioned synthetic golden datasets and blocks regressions against a committed baseline per engine version.

Results and lessons

  • Writing down what is built, partly built and not started (an HLD review) kept the roadmap honest.
  • An evaluation baseline exposed real gaps: job-description skills the taxonomy didn't know were never reported missing, which led to a taxonomy pass.

Next case study

PrepForge Academic Hub