For employers
See how they work before you hire them.
Give every candidate the same real task in a Simulation, or read the Engineering Passports and Builder Reports applicants choose to share. Review each finding against its source in your Hiring Workspace, then decide with your team.
Owen Blake
BackendLumen LedgerPartner integrations2 projects shared
What the shared work demonstrates
A webhook service that stops retrying after five attempts and skips events it has already delivered. Concurrent workers and load behavior were not shown.
Webhook delivery service
Delivers partner payment events with bounded retries and a duplicate-event check.
- Event receiveddispatch starts delivery for one event
dispatcher.ts - Duplicate checkAn event_id already seen is skipped
dispatcher.ts - Post to partnerMarked seen only after a successful post
dispatcher.ts - Retry on failureUp to five attempts, with backoff
retry.ts
Selected requirement citesretry.ts · lines 18–27
Requirements
The loop stops after five attempts and exits on the first successful response.
How the Hiring Workspace works
From Simulation to decision.
19 validated templates across Applied AI, Backend & API, data, devtools_systems, embedded_firmware, Frontend, Full-stack & Product, game_graphics, ml_systems, Mobile, platform_infra, Security and test_quality.
- 01
Publish the role
In your Hiring Workspace: a validated Simulation, time, AI policy, and disclosed recording.
- 02
Candidates take the Simulation
A real codebase, incident, and simulated teammates, in the browser or the desktop app.
- 03
Your team decides
Builder Report findings cite their evidence. Advance, Hold, or Decline. Fydell never ranks.
Simulations
Every Simulation leaves a record you can open.
In a Simulation, file changes, test runs, team messages, and the mid-task requirement change are disclosed to the candidate before they start, then recorded as they happen.
In the Hiring Workspace, reviewers open the changed files, read each check with a plain-language status, and see the open questions from the handoff. Nothing is collapsed into a number.
Sealed submissions
One submission per attempt. Files are frozen once, hidden tests rerun in Fydell's sandbox, and the candidate keeps a receipt with the archive hash.
Your AI policy, stated up front
You choose whether AI tools are allowed, and candidates see the policy before they start. Use of the built-in assistant is recorded and shown. Fydell does not claim to detect anything.
Keep the draft when a send fails
Draft preserved after a failed send
Composer behavior, recorded at submit
Partner returned 502 · send failed
Draft kept
Reply to Northwind supportCan you confirm the partner retry window before we close this ticket?
Submitted behavior - the typed message stays available after the failed send.
- Starting
- The reply is cleared when the send fails.
- Submitted
- The reply stays, and clears only after a confirmed 200.
Handoff from Jordan Hale
The draft is kept when the partner returns a 502 and cleared after a 200. Repeated submissions were not covered.
Builder Reports
Builder Reports you can open, not a score you can't.
A Builder Report cannot be released unless every finding cites real evidence, and says plainly what it could not check.
Select a requirement to see the finding, the lines it rests on, and the question worth asking in the interview.
Findings that cite their lines
Open any finding and you are looking at the code and checks behind it, including the part left unresolved.
Gaps stay visible
No evidence is not evidence against the applicant. It is shown as Not observed until someone asks.
The decision stays with you
Record Advance, Hold, or Decline with a private note your workspace keeps.
Owen Blake
BackendLumen LedgerPartner integrations2 projects shared
What the shared work demonstrates
A webhook service that stops retrying after five attempts and skips events it has already delivered. Concurrent workers and load behavior were not shown.
Webhook delivery service
Delivers partner payment events with bounded retries and a duplicate-event check.
- Event receiveddispatch starts delivery for one event
dispatcher.ts - Duplicate checkAn event_id already seen is skipped
dispatcher.ts - Post to partnerMarked seen only after a successful post
dispatcher.ts - Retry on failureUp to five attempts, with backoff
retry.ts
Selected requirement citesretry.ts · lines 18–27
Requirements
The loop stops after five attempts and exits on the first successful response.
Hiring Workspace
Applications that arrive with the work.
Publish a role in your Hiring Workspace and share the link. Applicants send the projects they choose as an Engineering Passport, each with a Builder Report; your team reads them requirement by requirement.
What an applicant leaves out never appears in the review, not even by name. What they share is exactly what you see, at the revision they pinned.
Same source for everyone
Cited files open beside each requirement on the opening.
Limits stay visible
Not Assessed and Partial stay labeled until someone asks about them.
Share your Engineering Passport
Include in share
2 of 3 projects included
What the recipient sees
Jordan Hale
BackendFrontendFull-stack
- Webhook delivery serviceBounded retries · Duplicate event gate
retry.ts · lines 18-27 - Ledger export pipelineInvalid row hold · Batch size cap
validate.py · lines 18-23
Compared
What changes when the work is real.
| Criterion | Resume screen | Take-home | Fydell |
|---|---|---|---|
| What you actually read | Claims about past work | Finished code, unseen process | The changes, the tests, the questions, the handoff |
| Same task for everyone | No | Rarely checked | Yes: one versioned task per role |
| Checked independently | No | You rerun it yourself | Hidden tests rerun in an isolated sandbox |
| Who decides | A keyword filter | Whoever has time | Your reviewers, with cited findings |
Simulation templates
Start from a simulation that already works.
Each template ships with a starter project, tests, a reference solution, and simulated teammates.
Fix stale and off-plan support retrieval
Diagnose why a support assistant's retrieval returns stale, off-plan or headless passages, using a recorded eval set, and fix it so it holds on held-out articles and questions.
Applied AI60 minRetrievalNode.js 22, standard library only (BM25 over an in-memory index)Keep the support agent inside its budgets and tool boundaries
Repair a tool-using agent loop: enforce step and cost budgets before each call, retry only idempotent tools, send a timed-out refund to review, and run only allowed, well-formed tool calls.
Applied AI60 minAgent ToolsPython 3.12, standard library, recorded and scripted model turnsMake the triage evaluation report honest numbers
Fix an evaluation harness that overstates a classifier: few-shot leakage, dropped abstentions and failures, pooled macro F1 and undefined per-label metrics.
Applied AI60 minEvaluationPython 3.12, standard library, recorded JSON predictionsStop invalid extractions from reaching the shipment store
Make a model-backed extraction pipeline safe: validate output against a schema, repair only safe cases, retry provider failures within a bounded policy that honors retry-after, and route unrecoverable documents to manual review.
Applied AI60 minStructured OutputNode.js 22, standard library only (recorded provider responses, injected sleep)Add cursor pagination to the inventory list without breaking clients
A partner's inventory sync gets duplicate and missing items. Add exact cursor pagination and parameter validation without breaking clients that still page with offset and limit.
Backend & API60 minContractNode.js, plain handler functionsMake clinic bookings consistent under concurrent requests
Make slot booking atomic across worker processes, keep the booking and its reminder together, and keep cancellation and rebooking correct on a database that already holds double bookings.
Backend & API75 minConsistencyPython 3.12, standard library, sqlite3Prevent duplicate webhook processing
A retried webhook credits a customer twice. Reproduce it, make event handling exactly once across workers and restarts, and add regression coverage.
Backend & API60 minReliabilityPython, SQLiteRecover label jobs after crashes and timeouts
Label jobs get stuck after deploys and some shipments are charged for two labels. Make leases, retries and dead-lettering recover correctly, and add regression coverage.
Backend & API60 minJobsNode.js, in-memory job storeMake the daily revenue rollup survive redeliveries, late events and reruns
Fix an event ingestion job and its backfill so each event counts once toward its UTC day, however often it is delivered and however often a range is rebuilt, and add regression tests.
data50 minPipelinePython 3.11+, sqlite3, standard libraryMake the CLI's layered configuration follow its own rules
Fix a CLI's configuration loader so defaults, config file, environment and flags combine per setting as documented, booleans parse strictly, and every problem names its setting and source, with regression tests.
devtools_systems50 minConfigNode.js 22, standard library, CLI with injected ioStop a sump pump controller from short-cycling, hanging and forgetting faults
Logic harness for a firmware control loop: fix a sample ring buffer, a float switch debouncer, the watchdog kick placement and a fault latch that must survive resets, driven tick by tick.
embedded_firmware45 minState MachineNode.js 22, standard library, logic harness (no board or real timers)Stop stale searches from overwriting newer results
Fix a search-as-you-type panel so results, the busy state and the error state always belong to the latest query, whatever order responses arrive in, and add deterministic regression tests.
Frontend50 minState SyncNode.js 22, standard library, DOM stand-in (no browser)Make bulk card moves safe across the board API and client
Fix a small board service and its client so changes stay inside the project in the path, input is validated, bulk moves are all-or-nothing in memory and on disk, and the client rolls back refused moves.
Full-stack & Product55 minPartial FailureNode.js 22, node:http, JSON file store, standard libraryFix tunneling and timestep drift in a 2D game simulation
Logic harness for gameplay simulation: fix a fixed-timestep accumulator and its catch-up cap, and replace a discrete overlap check with swept box collision that slides along surfaces.
game_graphics45 minSimulationNode.js 22, standard library, logic harness (no engine or renderer)Make the churn model's validation measure unseen customers
Fix a churn model's evaluation so validation holds only unseen customers chosen reproducibly, preprocessing is fit on training rows only, and AUC is correct for ties and single-class inputs, with regression tests.
ml_systems55 minSplitsPython 3.11+, standard library (csv, random, statistics)Merge offline note edits without losing work
Logic harness for offline sync: merge offline note edits field by field against the last synced copy, resolve and report same-field conflicts, merge tags as a set, and keep deletes from losing edits or coming back.
Mobile45 minOfflineNode.js 22, standard library, logic harness (no device or app shell)Make a rolling deploy keep serving traffic and report when it stalls
Logic harness for deploy safeguards: fix rollout config validation and a rolling update controller so readiness decides availability and a stalled rollout fails at its progress deadline, all against a deterministic mock orchestrator.
platform_infra45 minDiagnosisNode.js 22, standard library, logic harness against a deterministic mock orchestratorClose cross-account invoice access and fix the unsafe search
Fix object-level authorization and SQL injection in a small invoicing API without breaking legitimate use, and add regression tests.
Security50 minRemediationPython 3.11+, http.server, sqlite3, standard libraryMake the rate limiter's tests deterministic and able to catch real bugs
Rewrite a flaky token bucket suite so it controls time and tests only documented behavior, make it catch seeded limiter defects, and fix the refill defect it exposes.
test_quality50 minSuitePython 3.11+, unittest, standard library
Questions from hiring teams.
Does Fydell score or rank candidates?
No. Fydell runs the tests and organizes the evidence. Your reviewers read it against your requirements and make the decision.
Which roles can I assess?
Simulations cover Applied AI, Backend & API, data, devtools_systems, embedded_firmware, Frontend, Full-stack & Product, game_graphics, ml_systems, Mobile, platform_infra, Security and test_quality today. Other engineering tracks are offered once a template for them passes validation. Applications work for any engineering role.
Can candidates use AI tools?
You choose the policy for each simulation, and candidates see it before they start. Fydell does not claim to detect AI tools. When the built-in assistant is allowed, its use is recorded and shown to your team.
How long does a simulation take?
Templates run 45 to 75 minutes of task time, plus untimed setup. You can set a different length when you adapt a template or upload your own.
What does it cost?
Engineers and workspace exploration are free. Team pricing and what is never billed are on the pricing page. Nothing is charged for applications, invitations, or attempts that produced no report.
Bring one open role.
Create a Hiring Workspace, choose a Simulation template, and invite your first candidate. The first Builder Report is the argument.
