The real problem is intent, not keywords
"Locum neuroradiology, weekends only, near Chicago, over 80k" is a sentence a keyword filter mangles. The candidate knows exactly what they want; the board forces them to translate it into checkboxes and then re-run it every day. The product problem is capturing intent once, in plain language, and honoring it continuously.
Invert the flow: push, don't poll
So the matching runs toward the candidate. A candidate expresses intent in plain English; that intent is saved. As new postings arrive, they're scanned and matched against every saved search, and matches are emailed directly. The candidate stops searching; the system does the work in the background.
An AI layer in front of the listings
This is a layer, not a search box bolted on. Plain-English intent is parsed into structured criteria, postings are enriched on ingest, and matching combines structured filters with semantic similarity so 'weekend locum neuro' finds the right roles even when the posting doesn't use those exact words. The listings database stays the source of truth; the AI is the matching brain in front of it.
The design principle: use AI where fuzzy human intent meets structured data. Parsing 'what I actually want' into criteria, and matching it semantically against enriched postings, is exactly that seam.
Cost and reliability, because it's a real product
Scanning every posting against every saved search with an LLM naively would be slow and expensive. So structured pre-filters cut the candidate set first, embeddings handle semantic similarity cheaply, and the model is reserved for the parts that genuinely need it — with caching so the same posting isn't re-embedded and token budgets kept in check. AI earns its place per unit of value, not as a blanket call on everything.
The employer side: built for volume
Employers don't want to post one form per role. The dashboard is built for bulk hiring: XML/CSV import to bring roles in at scale, and team workspaces so a hiring group works together. The candidate experience is 'plain English and let it come to me'; the employer experience is 'load everything and manage it as a team.'
Key takeaways
- Capture intent once in plain language; don't make users re-search forever.
- Invert the flow — scan new supply against saved demand and push matches.
- Put AI at the seam where fuzzy intent meets structured data.
- Pre-filter and embed cheaply; reserve the model for what needs it, and cache.
- Match the interface to the user: plain-English for candidates, bulk tools for employers.