CareerMutual

Fund the review. Test the work. Reveal the résumé only after the evidence earns it.

For start

Computer science graduates are facing a job market more unforgiving than anything our generation expected. We felt it ourselves: application after application, rejection or silence. There were always rivals from top universities and interned at Google, Tesla, and Morgan Stanley, lined after these monsters, our résumés often could not earn even a few seconds of a recruiter’s attention. It made us wonder whether hiring was evaluating ability—or merely deciding who deserved the chance to demonstrate it. With Codex beside us from the first product decision through development, and GPT-5.6 at the heart of matching and evidence analysis, we have built CareerMutual. For now, it may be only a fragile prototype brought to life in a handful of days. But it represents a future we all want to believe in: one where the work gets to speak before the labels do. We hope Career Mutual does not remain a Build Week dream. We hope it becomes real.

Inspiration

Hiring makes its first expensive decision from the signals that are easiest to polish: school names, brand employers, referrals, confident self-presentation. A candidate with those collects interviews almost by default. A candidate with an ordinary background and stronger role-specific ability may never get the interview where that ability would have shown up.

Call the first case a résumé false positive and the second a résumé false negative. What bothered us is the asymmetry between them. The false positive gets caught eventually, on the job. The false negative never gets caught, because being denied an interview also means being denied the chance to produce better evidence.

So we changed the order. In Career Mutual, a named recruiter first commits a reusable unit of review attention to a sealed, role-specific challenge, and only after that obligation exists does a candidate start working. The recruiter reads the anonymous answer before seeing any résumé.

Codex and GPT-5.6 made the idea more ambitious than our first sketch. Codex kept pressure on every product decision that risked sneaking profile-first selection back in under a new name. GPT-5.6 turned out to be capable of real evidence work: connecting private work history to a relevant opening, and later analyzing a frozen answer against sealed criteria, all while staying out of the final decision.

What it does

Career Mutual is a mutual-intent, blind-answer-first hiring system.

A recruiter publishes a JobPost with hard requirements, a sealed Critical Challenge, review criteria, an AI disclosure policy, and a limited number of reusable review slots. Slots are the core resource. If no slot is backed by a named reviewer with an SLA, the platform will not ask a candidate to do application work.

On the candidate side, GPT-5.6 can match references from an optional private Evidence Passport against recruiter-sealed eligibility tags, which surfaces roles that résumé-first discovery would bury. The match stays candidate-only. The model cannot score or rank people, touch the public queue, spend a review slot, or show the Passport to a recruiter. Legal, language, and time-zone requirements remain deterministic checks.

When a backed slot reaches a candidate, they see the reviewer's name, time limit, review policy, credit cost, process policy, and a conditional résumé consent before accepting. Then they answer the exact sealed challenge in a server-timed workspace, using rich text, voice, files, and a disclosed GPT-5.6 assistant where the JobPost permits. The answer is sealed as one immutable submission.

After submission, GPT-5.6 acts as an Employer Evidence Analyst. It reads one anonymous frozen answer plus the sealed criteria and produces source-linked findings: a bounded GOOD_ANSWER or BAD_ANSWER verdict, language analysis, criterion coverage, contradictions, remaining unknowns, and questions the reviewer may still want to ask. If the candidate consented to answer-plus-process review, it can also organize the disclosed process evidence, with rules and caveats attached. It does not infer personality, intent, cheating, or overall candidate quality.

The decision stays human. A positive review atomically authorizes the pre-consented résumé snapshot; any other outcome keeps the résumé sealed. A completed review releases the slot to the next person in line.

How we built it

Early on we wrote three rules into the product: no funded review, no candidate work; no work evidence, no résumé reveal; no completed human review, no slot reuse. Most of the build was making those rules enforceable instead of aspirational, and Codex was useful precisely there. It could follow a rule from a paragraph of product doctrine down to the transaction or data boundary that had to enforce it, and several flows looked correct on screen until it helped us trace where they quietly broke a rule underneath.

The app is a TypeScript monorepo: a Next.js web surface, a separate asynchronous Worker, PostgreSQL 16, and private S3-compatible object storage, with versioned contracts between the domain, application, persistence, UI, and AI adapters. Candidate and Recruiter views are different projections of the same state, so sensitive data cannot leak just because a component forgot to hide a field.

GPT-5.6 runs only in the Worker, through the OpenAI Responses API; the key never reaches the browser. Calls use strict Structured Outputs, store: false, no tools, pinned prompt and contract versions, and deterministic validation of every referenced source. Model output is treated as a typed proposal. State transitions belong to PostgreSQL transactions: queue order, credits, review obligations, immutable submissions, human receipts, slot settlement, résumé reveal.

We also split the model work into four bounded jobs (candidate discovery, Passport eligibility matching, the disclosed candidate assistant, and post-answer employer analysis) so we could use GPT-5.6 where it helps without letting it drift into being an autonomous recruiter.

Beyond that, Codex worked with us on everything from the domain model and migrations to synthetic data, tests, evals, and the browser-driven demo.

Challenges we ran into

The hardest one was making "this answer will be reviewed" a system property. That meant modeling recruiter attention as a transactional, reusable obligation with backpressure, versions, deadlines, breach handling, and atomic settlement. A page view does not count as a review. Neither does an AI summary.

The second was giving GPT-5.6 a large role without illegitimate authority. Matching is useful; ranking would recreate the original problem. Answer analysis is useful; advancement advice would make the model the hidden decision-maker. We kept narrowing inputs, outputs, schemas, and permissions until the model could do the hard cognitive work and still could not allocate attention or decide anyone's future.

Strict output handling became an engineering problem of its own. A response can be insightful and still unusable: a citation that is not a literal source span, a prohibited ranking phrase, a schema miss. We built source validators, authority gates, prompt-injection tests, process-invariance checks, and visible fail-closed states. A failed LIVE run never silently becomes a synthetic success.

Privacy had to survive the whole stack, not just the UI. The résumé, the Evidence Passport, intermediate drafts, voice recordings, the assistant trace, and the recruiter's analysis all have different audiences, so we ended up treating privacy as projection design, transaction design, and storage design together.

And the demo had to be honest. The positive candidate needed a real GOOD_ANSWER analysis, an independent human advance, and an authorized résumé reveal; the counterexample needed real poor-answer evidence, a BAD_ANSWER analysis, an independent no-further-proof decision, and zero reveals. Codex helped us debug that journey end to end, including the Puppeteer recording, narration, subtitles, retained database checks, and a failure path that never pretends to pass.

Accomplishments that we're proud of

  • The full causal path works: candidate-only GPT-5.6 discovery → public Interest → funded attention → versioned consent → immutable answer → anonymous GPT-5.6 analysis → mandatory human review → slot recycling → conditional résumé reveal.
  • The demo shows both sides. Strong work from a modestly packaged candidate earns a GOOD_ANSWER, an independent ADVANCE_ELIGIBLE, and one authorized résumé reveal. A polished but weak response earns a source-linked BAD_ANSWER; the recruiter records NO_FURTHER_PROOF and the résumé stays sealed.
  • The Employer Evidence Analyst passed a 30-case LIVE evaluation: 30/30 bounded verdicts validated, all required language dimensions present, process-invariant judgments, and a criterion macro-F1 of 1.0 on that set.
  • The synthetic corpus is persisted data rather than a client-side simulation: 27 JobPosts, seven independent candidate identities, multimodal Critical Challenges, Evidence Passports, a six-candidate Match Lab, and real Candidate and Recruiter journeys.
  • AI provenance is visible. LIVE, RECORDED_LIVE, and SYNTHETIC_PRELOADED mean different things, and the product never swaps one for another behind the user's back.

What we learned

The bias that matters most may be the order in which information arrives. Once prestige enters the room, later evidence gets read through it. Delaying the résumé changes what can cause the first decision, which turned out to matter far more than we expected when we thought of it as simple anonymization.

We expected the restrictions on GPT-5.6 to neuter it. They did not. Without permission to rank the pool, given well-formed evidence and a sealed contract, it still found connections a keyword filter would miss, mapped exact strengths and failures in an answer, and preserved the unknowns instead of papering over them. Human judgment got a much better surface to work on.

Honest failure also earned its keep. A schema mismatch becomes NEEDS_HUMAN rather than a fabricated result; a model outage cannot reject a candidate; a browser-focus signal is recorded as an observation with caveats, never as a cheating accusation. Each of those limitations made the product easier to trust.

As for Codex: it could carry a principle from a paragraph of doctrine into a database invariant, a React state, a security test, an eval, and a line of demo narration. The judgments stayed ours. The pace at which we could examine and implement them was unlike any project we had done before.

What's next for CareerMutual

Bounded pilots first: production identity, organization controls, real reviewer SLAs, audit and deletion workflows, accessibility testing, adversarial privacy review, and a much larger calibration program across roles and candidate populations.

Then the deeper evidence stage: production code sandboxes, richer multimodal work, cohort-level Direct and transparent Explore allocation, and a second funded interaction for candidates whose anonymous work earns it.

What we most want to find out is whether real candidates and recruiters feel the difference we designed for: less unpaid work sent into a black hole, less résumé theater, more accountable attention. We started from a contrast between someone who can sell the labels and someone who can do the work. The product decides which of those facts speaks first. Whether that matters in practice is the next thing to test.

Built With

Share this project:

Updates