Skip to content

hiring engineers in the AI era

Proof over pedigree.

Every resume looks polished now. Offcruit shows you how engineers actually work: in a real terminal, inside a real codebase, alongside an AI coworker.

  • Real terminal tasks
  • Real-codebase debugging
  • AI-collaboration signal
Resumes say. Work shows.No LeetCode puzzlesReal terminalReal codebaseAI coworkerEvidence, then humans decideProof over pedigree
Session replay

Don't ask. Watch them work.

session-replay · candidate #9204
# Real Linux shell · isolated repository sandbox
$ git clone git@github.com:acme/shop-api.git && cd shop-apiCloning into 'shop-api'...Receiving objects: 100% (2,418/2,418), done.$ lsDockerfile  ISSUE.md  docker-compose.yml  package.json  src  tests$ git log --oneline -39c2e1f4 (HEAD -> main) Add SUMMER24 discount code41ab7d0 Cache product pricese07c3a2 Upgrade test runner$ git checkout -b fix/cart-calcSwitched to a new branch 'fix/cart-calc'$ npm ciadded 412 packages in 6.1s$ cat ISSUE.md## Checkout crashes when the cart is emptySteps: open /cart with no items → 500
$git status
On branch fix/cart-calcChanges not staged for commit:  modified: tests/cart.spec.ts
Timeline 00:42 / 04:00
Inspecting the bug reproduction

Claims vs proof

resume → evidence
  • GitVerified
    94%
    Clean branch, no merge artifacts
  • DockerVerified
    88%
    Ran the suite in the container
  • SQL migrationsPartly verified
    56%
    Migration ran; no rollback written
  • KubernetesNot shown
    22%
    Couldn't read the pod logs task
  • GraphQLNot tested
    Not in this job description
  • Test-first debugging(not claimed)Unclaimed strength
    92%
    Not on the resume; shown in the session

Illustrative example. Tasks are randomised per candidate.

Why now

The resume stopped being proof.

AI now writes the resume, polishes the profile and can answer the take-home. The signals hiring leaned on are the easiest things to fake. What's still hard to fake is watching someone work.

  • 42.6%

    of workers used AI tools the last time they updated their resume.[1]

  • 65%

    of hiring managers say AI-enhanced applications made skills harder to verify.[2]

  • 1in4

    candidate profiles worldwide could be fake by 2028, Gartner predicts.[3]

  • 81%

    of Big Tech interviewers surveyed suspect AI cheating in interviews.[4]

84%

of developers use or plan to use AI tools.[5]

The question isn't whether engineers use AI. It's how well they work with it.

  1. [1] Novoresume, The Resume Report 2026 (n=2,000 US adults)
  2. [2] Robert Half, Mar 2026 (2,000+ US hiring managers)
  3. [3] Gartner, via Personnel Today, Aug 2025
  4. [4] The Pragmatic Engineer, 2025 (53 interviewers)
  5. [5] Stack Overflow Developer Survey 2025
How it works

From application to evidence in two rounds.

  1. Share one apply link per role, or upload a CSV or a stack of resumes. Each resume is parsed into the skills the candidate claims.

    • a.sharma.pdfclaims: git · docker · sql
    • r.iyer.pdfclaims: react · testing
    • k.menon.pdfclaims: python · pandas
Sample tasks

Short, real tasks. Not puzzles.

Round 1 is a set of timed tasks like these, each with its own 2–7 minute timer.

$ git log --oneline --all -3
c41e2a9 (origin/main) teammate: add rate limit
8f03b1d (HEAD -> fix) fix: null user id
Done when: fix sits on origin/main, no merge commit

Ship a fix on top of a teammate's commit

gitTerminal6 min
$ curl -s localhost:9090/health
curl: (7) Failed to connect to localhost port 9090
Done when: image notes:1.1 runs and /health returns ok

Make the container answer on port 9090

dockerTerminal5 min
$ npm run migrate
error: checksum mismatch for 0007_add_orders.sql
Rules: don't edit the migrations table by hand

Restore a migration that was edited after production applied it

sql-migrationsTerminal6 min
def is_valid_length(pw: str) -> bool:
return len(pw) > 8
# Spec: 8-character passwords must pass

Write the failing test first, then the fix

testingCoding7 min
$ git log -p | grep -n PAYMENTS_KEY
412:+PAYMENTS_KEY=pk_live_••••••••
Done when: key is gone from history; app still boots

Find the secret that was committed and remove it safely

gitTerminal5 min
"deny": ["Read(**/.env*)"]
agent ran: cat .env
Pick every reason that applies (multi-select)

Why does this denied file still get read?

llm-basicsMCQ3 min

Examples. Real tasks are built from your job description and randomised per candidate.

AI coworker

Engineers work with AI now. So does our test.

In Round 2, candidates work in a real codebase with an AI coworker that knows the bug but won't hand over the answer.

  • Thinking out loud counts. Clear, specific questions to the coworker score positively, the way they would with a real teammate.

  • Help is earned. Code help only unlocks after the candidate explains the root cause, the file and the approach.

  • You see the conversation. Every message, hint level and unlock attempt is in the report, with timestamps.

round-2 · issue #2 · coworkerhint used · L1 nudge

candidate

Found it. calculateCartTotal calls reduce before checking the cart is empty, so item.price is read from undefined. I'll return a zero total early when there are no items.

coworker

Your reasoning holds. Check how the caller handles a missing discount too.

explanation accepted · code help available

What your team gets

One report. All the evidence.

Scores link to what's behind them, and your team makes the call.

Candidate #9204 · Backend engineer

Final report · Round 1 + Round 2

Round 1 78%Round 2 84%✓ Strong yes

Claims vs proof

  • GitVerified
  • DockerVerified
  • SQL migrationsPartly verified
  • KubernetesNot shown
  • GraphQLNot tested
  • Test-first debuggingUnclaimed strength

Replay

  • reproduced bug
  • failing test
  • patch
  • suite passes

AI-collaboration signal

messages
6
messages
highest hint
L1
highest hint
explanation
1st try
explanation

Interview kit

  1. Q1Your fix guards the empty cart. What other inputs could reach calculateCartTotal that you didn't test?
  2. Q2Kubernetes is on your resume, but the pod-logs task wasn't finished. How would you debug a crash-looping pod?
  3. Q3The migration ran without a rollback. When would you write one, and what would it do?
Illustrative example.
  1. Claims vs proof

    Every resume claim resolved against what the candidate actually did.

  2. Replay

    Jump to the exact moment: commands, edits and test runs, on a timeline.

  3. Interview kit

    Follow-up questions built from where the candidate struggled.

  4. AI-collaboration signal

    How they asked the coworker for help, and whether they understood the fix.

Built for each role

Tested on the work the role does.

Software engineer (generalist)

Default Round 1 mix: 60% terminal · 20% coding · 20% MCQ

  • gitbranching, history, rebase
  • linux-shelllogs, pipes, processes
  • dockerbuild, run, ports
  • testingfailing test first
  • http-apistatus codes, retries
  • python / js-tssmall fixes

Sample task

$ ./retry.sh POST /charges order=1042
201 Created · 201 Created
2 charges created for order 1042
Done when: a retry returns the first charge

Make a retried payment request safe to send twice

http-api6 min

Backend developer

Default Round 1 mix: 60% terminal · 20% coding · 20% MCQ

  • sql-migrationssafe renames, checksums
  • http-apiidempotency, timeouts
  • dockervolumes, env, logs
  • testingmocks vs fakes
  • linux-shellgrep, permissions
  • system-design-basicscaching, queues (MCQ)

Sample task

ALTER TABLE users RENAME COLUMN name TO full_name;
app v41 (still live): column users.name does not exist
Done when: v41 and v42 both work during the rollout

Rename a column without breaking the version still deployed

sql-migrations7 min

Frontend developer

Default Round 1 mix: 30% terminal · 50% coding · 20% MCQ

  • reactstate bugs, props, effects
  • js-tsasync/await, arrays
  • npm scriptsbuild, test, lint
  • gitbranching, history
  • testingjest basics

Sample task

const [count, setCount] = useState(items.length);
cart: 3 items · badge: 2
Done when: the badge matches the cart after every change

Fix the cart badge that shows the old count after an update

react6 min

ML / AI engineer

Default Round 1 mix: 20% terminal · 40% coding · 40% MCQ & reasoning

  • ml-datapandas, numpy, train/test split
  • data leakagespot it, fix it
  • ml-theoryevaluation metrics, overfitting
  • llm-basicstokens, context, RAG

Sample task

>>> model.score(X_val, y_val)
0.998
Done when: the split is leak-free and the score is honest

Find why validation accuracy looks too good to be true

ml-data6 min

Candidates pick Python or JavaScript/TypeScript unless the role requires one.

Traditional vs Offcruit

Same goal. Better evidence.

Traditional screening compared with Offcruit
First filterTraditionalResume, college name and keyword matchOffcruitShort, timed tasks built from your job description
Technical roundTraditionalLeetCode-style puzzlesOffcruitTerminal, code and debugging work the job actually needs
Resume skillsTraditionalTaken on trust until an interviewOffcruitMarked verified, partly verified or not shown
What reviewers seeTraditionalA score or a pass/failOffcruitReplay, commands, diffs and the coworker chat
Interviewer timeTraditionalSpent on everyone who clears the screenOffcruitSpent on candidates who've already shown the basics
AITraditionalBanned on paper, hard to policeOffcruitBuilt in: an AI coworker, and how it's used is evidence
Candidate feedbackTraditionalOften noneOffcruitEvery candidate gets a summary and their scores

Works alongside your ATS. Offcruit replaces your first screening rounds, not your hiring process.

Who it's for

For teams that hire on evidence.

  • Hiring teams

    Mid-size companies hiring engineers in volume

    Screen every applicant on real work from your job description, then spend interview time on the people who've shown it.

  • Campus drives

    Placement season, hundreds of students

    Give a whole batch the same real tasks at once, and get a comparable report for every student without an interviewer per candidate.

  • Candidates

    Engineers invited to an assessment

    Real tasks instead of puzzles, and a short summary with your scores after the team decides. Nobody gets ghosted.

    Candidates join through an invite from the hiring team.

Roles at launch·Software engineer · Backend · Frontend · ML / AI engineer

Trust and privacy.

  • Fair by design

    Candidates for the same role get questions of the same difficulty. Resumes are never scored, and there are no points for college names.

  • Hard to fake

    Tasks run in a real environment on our servers, every question is timed, and details are randomised per candidate.

  • Humans decide

    Offcruit recommends; your team decides. Integrity flags are evidence for a person to review, never an automatic fail.

  • Privacy-first

    Candidates consent before anything is recorded, only the inviting company sees their results, and they can ask for deletion.

Why we're building Offcruit

I've watched strong engineers get filtered out for a college name or a puzzle they hadn't memorised, while polished resumes sailed through and stalled on their first real ticket. Now AI writes the resume too. Offcruit is our answer: give every candidate real work, show your team exactly how they did it, and let people, not proxies, make the call.

HimanshuFounder, Offcruit

( early access )

Help shape how engineers get hired.

We're opening Offcruit to a small group of engineering teams first. Join early access and work directly with us on what we build next.

  1. Shape the product. Your roles and feedback set what we build next.

  2. Founding-team pricing. Early-access teams get preferential pricing when paid plans launch.

  3. First in line. Access as soon as assessments open for your roles.

Joining is free, with no card and no commitment. Pricing details will be shared before any paid plan starts.

Questions

Straight answers.

What does Offcruit test?

Real engineering work: short timed tasks in a real terminal and editor (git, docker, databases, tests, small code changes), then debugging a real codebase alongside an AI coworker.

Can candidates use AI?

Not outside tools in Round 1, which tests fundamentals. In Round 2, candidates work with Offcruit's built-in AI coworker, and how they use it becomes part of the evidence.

How do you stop cheating?

Tasks run in a real environment on our servers, each question is timed, details are randomised per candidate, and sessions are monitored with the candidate's consent. Anything unusual is shown to your team as evidence. It's never an automatic rejection.

Does Offcruit reject candidates automatically?

No. Offcruit recommends based on a threshold you control, and your team decides who moves forward.

Does it replace our interviews?

It replaces the first screening rounds. Your interviews get shorter and sharper, with follow-up questions built from each candidate's report.

Does it work with our ATS?

Offcruit sits alongside your ATS. Candidates come in through an apply link, a CSV or uploaded resumes, and we'll prioritise integrations based on what early-access teams use.

Which roles and languages are supported?

Software engineer, backend, frontend and ML / AI engineer roles. Candidates use Python or JavaScript/TypeScript unless the role requires one.

What happens to candidate data?

Candidates consent before anything is recorded, only your team sees your candidates, recordings are kept for a limited time, and candidates can ask for deletion.

What does it cost?

Pricing isn't final yet. Joining early access is free, and early-access teams get founding-team pricing when paid plans launch.

What does early access include?

You'll work directly with the founding team, try Offcruit on your real engineering roles as assessments open, and help decide what we build next.