Skip to content
All work

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

  2. 02 / 07agent

    Analyst

    Turns each posting into a checklist: required and preferred skills, degree, enrolment, visa sponsorship, pay and location.

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

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

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

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

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

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

  3. 03 / 07tool

    Probe

    Each candidate runs every agent's evals, the build and the test suite in its own git worktree, in parallel.

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

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

  6. 06 / 07agent

    Reflect

    Lessons from the run go into a library the next run reads, and open as their own pull request.

  7. 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
Sources feed Scout and the crawler. Analyst writes a checklist for every role, Matcher and Tailor work from the candidate's profile, and by default nothing leaves the review queue until the candidate approves it.

Gallery

RecruPass landing page for job seekers: the headline One profile. Every application. beside a sample profile card showing 3 of 3 must-haves met.
The applicant landing page, rendered from the RecruPass source.
The RecruPass applicant landing page on a phone.
The same page on a phone.
RecruPass Direct landing page for companies, in English and Arabic, with a sample applicant list sorted by must-haves met.
RecruPass Direct, the company side, with English and Arabic copy. The applicant names are samples.

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.