AI agents & automation2026
RecruPass
A live hiring platform where job agents find roles, early-career first, check the fit and draft each application, and by default nothing is sent until the candidate approves it.
Select any part of the network to see what it does.
The RecruPass agents and how work moves between them, animated in your browser. Not a screenshot.
- Role
- Product, engineering and operations
- Timeline
- 2026, live
- Team
- Solo or team size
- Stack
- JavaScript,
- Cloudflare Workers,
- Cloudflare D1,
- Clerk,
- Drizzle,
- RecruPass Apply (Chrome extension),
- RecruPass Crawler (Python)
Overview
RecruPass gives a job seeker one profile for every application. Companies post roles on RecruPass Direct, and for jobs everywhere else a team of job agents does the legwork: finding roles (early-career first), reading what each one asks for, ranking the fit and drafting a one-page résumé and cover letter. By default the candidate reviews every draft, then the RecruPass Apply extension fills in the employer's own form.
Problem
Early-career candidates send the same CV into dozens of different forms, guessing which roles they actually qualify for. Automating that is easy to do badly: submitting automatically on sites whose terms forbid it puts candidates' accounts at risk, and software that writes applications freely can claim experience the candidate does not have.
Approach
I split the work into small agents with one job each, written as deterministic code so every step is testable on fixed cases. Two hard limits sit around them. Tailor may only use facts backed by a profile record, and a separate check rejects any draft that lists an unbacked skill or record. By default every application then starts as a draft in the candidate's review queue, and nothing reaches an employer until they approve it. Sources are public company job boards, open job feeds, community internship and new-grad lists, LinkedIn's public guest job listings and employers' own careers sites within robots.txt. RecruPass never signs in to LinkedIn or applies there.
How the agents work
From job posting to sent application
Seven steps, and the one that matters most is human. Every agent step is plain code with its own eval cases.
- agent
- check
- tool
- person
01 / 07agent
Scout
Reads public company job boards (Greenhouse, Lever, Ashby and more), open job feeds and employers' own careers sites, and keeps internships, new-grad, entry-level and mid-level roles, ranking early-career roles first. Postings older than 120 days are ignored.
02 / 07agent
Analyst
Turns each posting into a checklist: required and preferred skills, degree, enrolment, visa sponsorship, pay and location.
03 / 07agent
Matcher
Compares the checklist with the candidate's profile, weighting verified evidence above unreviewed records, and ranks every role as a strong, close or stretch match.
04 / 07agent
Tailor
Drafts a résumé, cover note and answers for the role from profile facts only, then fits the résumé on one page using the PDF writer's own measurements, never cutting the only line that shows a required skill.
05 / 07check
Accuracy check
verifyApplication rejects a draft that lists a skill the profile does not have, includes an education, work or project entry with no matching profile record, or names a requirement the candidate is missing.
06 / 07person
Candidate review
By default every draft waits in the review queue. The candidate reads it, edits it, then approves or skips it, and nothing goes to an employer before that.
07 / 07tool
RecruPass Apply
The Chrome extension fills in the employer's own application form from the profile and stops for sign-ins, verification checks and declarations.
Agent Lab: how the agents get better
Once a week a model proposes changes to the agents' own code, and a strict gate decides what survives. It follows Google Research's Harness² method (propose, probe, compose, reflect), rewritten in Node, and uses no paid API.
- agent
- check
- tool
- person
01 / 07check
Measure
Scores every agent on fixed cases and on learned cases: real mistakes written down so every later change must get them right.
02 / 07agent
Propose
A model writes candidate edits, some on general mechanics like parsing and edge cases, some on recruiting knowledge like postings, application forms and CV layout.
03 / 07tool
Probe
Each candidate runs every agent's evals, the build and the test suite in its own git worktree, in parallel.
04 / 07agent
Compose
Shown a case-by-case pass and fail matrix across the probes, the model writes one refined edit, which is probed too.
05 / 07check
Gate
A change passes only if its agent scores higher, nothing that passed before fails, no other agent gets worse or more than 1.5x slower, only that agent's files changed, and the tests pass.
06 / 07agent
Reflect
Lessons from the run go into a library the next run reads, and open as their own pull request.
07 / 07person
Draft pull request
Each winner becomes a draft pull request for review. The loop never pushes to main and never deploys.
Runs again next Sunday at 03:00
Architecture
- Job boards to Scout, read
- Careers sites to RecruPass Crawler
- Scout to Analyst
- RecruPass Crawler to Analyst, ingest
- Analyst to Matcher, checklist
- Profile to Matcher, evidence
- Matcher to Tailor
- Profile to Tailor, facts only
- Tailor to Review queue, verified draft
- Review queue to RecruPass Apply
Gallery



Challenges and solutions
- Challenge: Writing applications without inventing anything.
- Solution: Tailor drafts from profile records only, and verifyApplication refuses any draft that lists a skill or record the profile does not back. The one-page fitter drops repeated lines first and never cuts the only line that shows a required skill.
- Challenge: Staying within robots.txt and each feed's terms.
- Solution: Open job feeds are credited by name and every role links back to its original posting. Employers' own careers sites are read only within robots.txt, and a deny list makes the crawler refuse hosts whose terms forbid automated collection, whatever it is sent. LinkedIn is read only through its public guest job listings, with no sign-in.
- Challenge: Fresh jobs inside Worker CPU and database limits.
- Solution: Ingestion runs on Cloudflare Cron Triggers in small batches, each market on its own schedule, and the scheduler picks the most overdue sources first. Roles still listed only refresh one unindexed column, at most every 20 hours, instead of rewriting every row.
- Challenge: Letting automation apply without losing control.
- Solution: Review is on by default. Turning it off needs the extension and an explicit confirmation, and the server still enforces limits: at most 25 automatic submissions a day, known application systems only, and every one logged with the exact résumé and letter sent.
Outcomes
- Live at recrupass.com, deployed from main through Cloudflare Workers Builds once the automated checks pass.
- 11,838 open roles in production after the move to Cloudflare on 14 October 2026.
- 63 company job boards verified for Scout, plus five open job feeds, public hiring posts and a crawler for employers' own sites.
- Every agent change is gated on evals, speed and the full test suite before it can become a pull request.