Product
Thuolo
Job search built for the roles a new grad can actually get
The problem
Of the live Bay Area postings Thuolo tracks, 4.5% are entry level — 295 out of 6,546. The roles a graduating student can actually get are a rounding error on every job board, buried under senior listings that were never open to them.
What I did
- 01
Crawl 85 employer boards directly from Greenhouse, Lever and Ashby every four hours, rather than scraping aggregators
- 02
Key every posting by URL with an explicit lifecycle and expiry, so a job is never silently lost or double-counted
- 03
Resolve free-text locations into 31 structured metros, splitting the Bay into SF, Peninsula, South Bay, East Bay and North Bay
- 04
Score each match against the requirements extracted from the posting itself, and show the working rather than a black-box number
- 05
Move candidate generation out of Python and into Postgres with pgvector and an HNSW index
Outcome
Ranking 6,200 rows by cosine similarity went from 685ms to 36ms — a 19x improvement, and the single change that made search feel instant
Live postings grew from 659 to 6,546; Bay Area coverage from 3 to 3,549
Location resolution went from 0% to 99%, and postings with no seniority level from 1,126 to 119
103 automated tests running in GitHub Actions on every push, from a starting point of none
Built with
- Python
- Postgres
- pgvector / HNSW
- Alembic
- Claude (Haiku)
- Voyage embeddings
- GitHub Actions