← Selected Work

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

  1. 01

    Crawl 85 employer boards directly from Greenhouse, Lever and Ashby every four hours, rather than scraping aggregators

  2. 02

    Key every posting by URL with an explicit lifecycle and expiry, so a job is never silently lost or double-counted

  3. 03

    Resolve free-text locations into 31 structured metros, splitting the Bay into SF, Peninsula, South Bay, East Bay and North Bay

  4. 04

    Score each match against the requirements extracted from the posting itself, and show the working rather than a black-box number

  5. 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