Frontend in Next.js 16 + React 19 with TanStack Router for typed routes and TanStack Query for server state. Backend in Node.js + Express with Prisma against a PostgreSQL (Neon) instance carrying both pgvector and tsvector extensions. The cost-control architecture is the part I'm most proud of: a heuristic scoring pipeline at $0 per job card, a $0.46 tailoring pipeline gated by explicit user intent, a Postgres-backed per-phase response cache that makes re-tailoring against the same posting essentially free, and a smart-skip + stale-while-revalidate layer that brought per-cold-search cost from $1.33 to $0.06–0.13.
Job ingestion fans out across eleven sources — direct ATS APIs (Greenhouse, Ashby, Lever, Workable), aggregators (Adzuna, Remotive), and external scrapers for LinkedIn, Indeed and Glassdoor. Hybrid retrieval on PostgreSQL combines BM25-style full-text via tsvector, pgvector cosine similarity on locally-generated 384-dim sentence embeddings, and pg_trgm fuzzy matching for typo tolerance — unioned, deduplicated by title+company hash, and rank-normalized per-pool before merging. Real-time SSE streaming surfaces multi-stage tailor progress phase-by-phase as it runs.
Every pipeline change runs against a Vitest eval harness — 1,300+ assertions across seventeen paired résumé-and-JD samples — and CI fails on regression. Final output renders through a Typst-based DOCX pipeline. Deployed on AWS with Docker and GitHub Actions.