Strata
Career intelligence, built end to end.
A full-stack career analytics platform that parses uploaded CVs, runs them through a suite of analytical lenses, and surfaces actionable insights — from ATS compatibility signals to skill gap analysis and job description fit scoring.
The work
Overview
Most job seekers submit CVs blind — no visibility into ATS survival, skill-market fit, or peer comparison. Strata is built on the premise that every candidate deserves the analytical depth a senior recruiter applies, available instantly. It is a 3-service system: a React 18 + Vite frontend, a FastAPI user-facing API, and a dedicated FastAPI analyser service, all backed by Postgres 16 with a 7-table relational schema enforcing integrity at the database level via CHECK constraints and source-type discriminators. Services communicate over typed HTTP contracts with async DB pooling via asyncpg.
Architecture
How it's built
Fig. 001.1 · Three-service pipeline — a React client and a FastAPI gateway feed a dedicated analyser service, all backed by Postgres 16 over async asyncpg pools.
Detail
Key features
- CV parsing pipeline (PDF + DOCX) extracting 10 ATS red-flag signals: text density, encoding-anomaly rate, line-length bimodality for column-layout detection, hyphenation-break rate, heading-detection rate, and section coherence scoring
- 9 analytical lenses: JD fit, ATS compatibility, skill matrix, peer benchmark, compensation bands, alternative career paths, market trends, role alignment, and overview summary
- Embedding-based JD-fit scorer (sentence-transformers) calibrated against a 300-pair benchmark — tuning slope and keyword weighting to cut mean absolute error 29% over the TF-IDF baseline and resolve over-scoring on genuine mismatches
- All visualisations hand-rolled as SVG — radar charts, 8×5 heatmaps, career-network graphs, distribution histograms, sparklines — with zero third-party chart library dependencies
- 3-layer component architecture (pure utils → UI atoms → screen composers) making each lens independently testable and swappable
- Runtime mode switch that flips the frontend between mock fixtures and live API calls without code changes — full UI was demo-able before any backend lens existed
- Multi-stage Docker builds; parallel dev and prod Compose stacks with healthcheck-gated startup ordering; deployed to an Ubuntu server via GitHub Actions CI/CD
Imagery
In context
Results
Impact
- 213 test cases, all passing — Vitest + @testing-library/react across 14 utility modules and 5 UI components
- Zero third-party chart dependencies; every visualisation is a purpose-built SVG component
- 9 lenses surface insights a senior recruiter would take hours to compile — available on demand
- 29% lower mean absolute error than the TF-IDF baseline on a 300-pair fit-scoring benchmark
- Live demo available; source code on GitHub
Open source
How to contribute
Strata is built to be extended — each lens is an independently testable module sitting behind a clean utils → atoms → composer contract. The easiest ways in:
- Open an issue describing a lens or ATS signal you'd want to see
- Fork and submit a PR — every utility module ships with Vitest coverage to match
- Add a new analytical lens behind the 3-layer component contract
- Drop in a role profile so JD-fit scoring covers a new industry
Let's build the next one together.
If this is the shape of work you're trying to ship, I'd love to hear about it. Bring me the question — the answer can be co-authored.