Client software · 2026
Recruiting platform
Built for one team, who use it every day.
- Role
- Sole designer and engineer
- Status
- In production — private
- Built with
- Next.js · Postgres · Drizzle · pg-boss · Better Auth · MCP
The brief
A mortgage lender’s recruiting team was running on spreadsheets, a job board subscription and a shared inbox. They needed to find licensed originators, know which ones were worth a call, and keep a pipeline that more than one person could read.
What it does
Candidates arrive from sourcing runs, get enriched with the signals that actually predict a conversation, and move through a pipeline the whole team can see. Recruiters keep a journal on each person — every touch, outcome and note in one column, in order, so the recruiter who picks up a stalled candidate in March can read what happened in January and not start over.
The parts that were hard
Identity. The same originator appears in four sources with three spellings of their employer and two phone numbers, one of which is a desk they left in 2023. Normalising employers and reconciling contacts is most of the work that nobody sees.
Background work that survives restarts. Enrichment, imports and scheduled runs go through a job queue running in-process against the same Postgres, so there is one database to back up and one thing to deploy. For a team this size, an architecture that fits in one head is worth more than one that scales to a thousand.
Roles that mean something. Owner and recruiter are genuinely different — not the same screen with buttons hidden. Route protection sits in the proxy layer, not in the components, so a forgotten check in a page cannot leak a screen.
Agent access, deliberately scoped. The platform runs its own MCP server, so the team’s AI tooling can work inside the system through the same permissions and the same audit trail as a person. Nothing gets a side door.
What is shown here
Every screenshot on this page is a local build running seeded demonstration data. The candidates, employers, notes and numbers are invented. Real candidate records are not shown, and the client is not named.