from first commit to an AI voice interviewer with measured response times, built with Claude Code
24/7
first-round interviews, started whenever the candidate is ready instead of booked on a recruiter’s calendar
Xenveo is a training data company for AI labs and enterprise AI teams. Founded in 2026, with headquarters in Chicago and its engineering team in India, it built a hiring system around a spoken first-round interview that applicants take on their own schedule. Candidates talk with an AI voice interviewer, and recruiters review a summary, a transcript and a synced recording instead of booking a call. Its first live roles included 11 ServiceNow consulting positions in Hyderabad.
Xenveo built the platform with Claude Code, Anthropic’s agentic coding tool, using it to plan, build, test and verify an API, a candidate portal and a recruiter console. Canterr, an IT consulting firm, advised Xenveo on rolling out Claude Code across its small engineering team and on best practices for agentic development. The interviewer itself runs on a third-party realtime speech model. With one engineer writing almost every commit, Xenveo went from first commit to a voice interviewer with measured response times in 12 days, building on an earlier Xenveo codebase that already ran live AI voice interviews to vet domain experts. How it got there matters as much as the speed: decisions locked before large features, plans reviewed before major edits, and features checked in the running apps.
With Claude Code, Xenveo:
Went from first commit to an AI voice interviewer in 12 days, with response times measured at 1.2 to 1.4 seconds during tuning
Built three apps in about 110,000 lines of TypeScript, with about 1,870 test cases written alongside the code
Settled product rules before large features by having Claude interrogate each plan, then reviewed 43 implementation plans before major edits
Verified features end to end by having Claude start all three apps and use them in a browser the way candidates and recruiters would
Rolled out Claude Code across its engineering team with advice from Canterr on best practices and agentic development
Kept people in charge of hiring decisions: interview scores are advisory, no score rejects anyone automatically, and candidates never see one
The challenge
Two engineers, and a hiring system they had to trust
Xenveo’s launch roles were specialist positions, from ServiceNow architects and technical leads to functional consultants and a project manager. Common shortcuts such as keyword filters and automatic cut-offs make screening faster by making it narrower. Xenveo wanted a different trade: a spoken first interview available at any hour, a record recruiters review rather than a call they schedule, and a person, not a score, making every hiring decision.
That meant a live voice system: audio streamed between the browser and a realtime speech model, transcripts in both directions, a recording synced to the transcript, and scoring behind it all. Systems like this fail in ways unit tests rarely catch. A dropped call that burns an attempt, a score that leaks to a candidate, a skill the resume parser invents: each one lands on a real applicant, not just in a bug report.
The team was small. One engineer wrote 74 of the project’s 76 commits, and a second contributed a mobile redesign. The question was never whether a team this size could build fast with Claude Code. It was whether it could trust what it shipped.
“With two engineers, speed was never the risk. The risk was putting something into a hiring process that we hadn’t proven.”
Nishant TomarEngineer, Xenveo
The solution
Lock the decisions, plan the work, prove it
Grill first, then plan
Nishant Tomar, the engineer who led the build, worked with Claude Code in the Claude desktop app, mostly with Claude Opus 5. Before large features, he ran /grill-me, a community skill that has Claude interrogate a plan until it holds up. The answers went into a HANDOFF.md file as “Locked decisions — DO NOT re-litigate,” so later sessions built on them instead of reopening them.
Several of those decisions protect candidates. Scores are advisory and never shown to the candidate. Each application keeps the rules that were in place when it was started, so a recruiter’s edit never changes them mid-application. An attempt counts only once the candidate has spoken. When one rule turned out to have shipped differently from what the interface promised, it was amended in the same list: on August 8 the attempt limit was redefined as a retake budget, and retakes shipped the next day.
For larger changes, Claude worked in plan mode, laying out the implementation for review before editing anything. Across the build, Claude presented 43 plans for review, asked clarifying questions when a requirement was ambiguous, and used Explore subagents to map the code before changing it.
The interviewer runs on Google’s Gemini Live realtime speech model, and a Gemini text model parses resumes, drafts assessment questions and scores interviews. Claude Code is how Xenveo built and tested the system around those models, not what candidates talk to.
01Candidate’s browserMicrophone captured off the main thread and streamed as 20 ms, 16 kHz audio frames
02Xenveo interview serviceAuthenticates the candidate, enforces capacity, writes the transcript, survives reconnects
03Realtime speech modelGoogle Gemini Live asks each question, listens, and can follow up once on a vague answer
04Scoring queueA Gemini text model scores the transcript against Xenveo’s rubric: summary, strengths, concerns, per-question notes
05Hiring team consoleScore against the role’s pass mark, transcript and recording. A person decides
How a Xenveo AI interview works. Xenveo built the capture, interview service, scoring pipeline and console with Claude Code. The speech and scoring models are Google Gemini. Claude does not run in the product.
A handoff that admits what it hasn’t proven
From August 6, the day the interviewer’s code landed, context moved between sessions through HANDOFF.md, pinned to the exact commit in each repository, with sections titled “Gotchas learned the hard way” and “NOT verified — the honest list.” That day, 1,002 backend unit tests, 39 end-to-end tests and 202 recruiter-console tests were passing, and the honest list still put the live spoken interview first. The suggested next step was blunt: do one real interview by hand. Four days later, the code carried response times measured over a real streamed answer.
Proof from the running apps
Launch configurations committed with the code let a single Claude session start the API, candidate portal and recruiter console together, then drive them the way people would, through the Claude desktop app’s built-in browser and Claude in Chrome. One run recorded in HANDOFF.md generated assessment questions with AI, approved them, published the job, then applied as a candidate who failed the assessment. The application still reached the hiring team. The verdict in the file: the advisory rule holds.
The same discipline caught a bug that only a busy day would have exposed. Measured before the fix, 20 simultaneous interview starts against a cap of 2 were all admitted, because every request counted live sessions before any had connected. The fix, committed on August 8, takes a slot in one atomic step, checks the cap again where the speech session opens, and has its own test.
Advised by Canterr
Xenveo brought in Canterr, an IT consulting firm, to advise on deploying Claude Code across its small engineering team. Canterr advised on best practices for working with Claude Code day to day and on agentic development more broadly, as the team moved from writing code by hand to planning, delegating and verifying work with Claude.
Ready for real roles
The launch roles came from a prioritized sheet of ServiceNow consulting roles. Its eight priority-1 and priority-2 rows became 11 of Xenveo’s 12 launch jobs, with the sheet’s priorities deciding which roles lead.
On August 25, commits to all three repositories added certification and screening steps, and the backend commit replaced 10 sample jobs with 12 real roles: the 11 ServiceNow roles and a Databricks role mirroring one already live on Xenveo’s contributor platform. Every ServiceNow role asks for a resume, work authorization, a timed assessment and the AI interview. Ten also ask about certifications, and three add written screening questions.
The outcome
Twelve days, and a person still makes the call
Eight days after the first commit, the interview backend, the recruiter’s configuration panels and the candidate’s application wizard landed together. The next four days filled in review, retakes and tuning.
Jul 29Day 0All three apps scaffolded, with Google sign-in and an admin-only console login
Jul 31Day 2Jobs, invites, queues and realtime events, AI resume parsing, candidate onboarding and recruiter job management
Aug 6Day 8Application-process builder, AI-generated assessments and the AI voice interview land across all three apps
Aug 7Day 9Review page: the recording synced to the transcript
Aug 8Day 10Concurrency fix: interview slots reserved in one atomic step
Aug 9Day 11Retakes, with the best attempt shown to reviewers
Aug 10Day 12Turn-taking tuned against latency measured on a real spoken answer (1.2–1.4 s to first reply)
Aug 25Day 27Certification and screening steps added, and 12 launch roles, 11 of them ServiceNow, replace sample jobs
Milestones from the git history of Xenveo’s three repositories, 2026. Day 0 is the first commit.
On August 10, the turn-detection tuning was committed with its measurements in the code: 1,222 to 1,393 milliseconds from the end of a spoken answer to the first byte of the reply. The comments record what was rejected, including a setting that added roughly a second of delay and a configuration that never replied at all, and warn against tuning “from the docs alone.” The same change pinned transcription to Indian and US English, to keep accented English from being transcribed as another language partway through an answer.
Between July 29 and August 10, 70 of the project’s 76 commits landed. The ServiceNow launch roles followed on August 25, and by early September they were live in production, each with the AI interview as a required step.
Safeguards candidates can see
The application lists every step up front, including the interview’s length. Begin stays disabled until the microphone has actually heard the candidate, and a test tone checks the speakers. Recording is disclosed before the interview starts, along with a plain statement that candidates never see a score and no decision is made automatically. Candidates who cannot take a spoken interview can contact the hiring team, and an admin can waive the step so the application still reaches a person, with the waiver recorded against the admin who granted it.
A call that drops before the candidate answers does not use an attempt, and a reloaded page rejoins the same interview. Every field the resume parser extracts waits for the candidate’s confirmation, and skills it cannot find in the resume are left out but shown, so the candidate can add back any that belong.
Recruiters get the other half of the bargain: one queue for interviews across every role, filtered by scored, above-the-bar and flagged attempts, where a flag asks a person to look closer and rejects no one. Each attempt pairs a summary, strengths and concerns with the full transcript. The scorer is instructed to judge substance, not delivery, so filler words, false starts and transcription errors should not lower a score.
The turnaround levers are concrete. Candidates interview when they are ready, not when a calendar allows. Assessment questions are generated up to 50 per run and approved by a person before use. Work authorization, certification and screening answers arrive before the recruiter’s first look, and an application reaches the hiring team within about a minute of its required steps being done. No first-round call has to be booked, so the first interview never waits on anyone’s calendar.
“Claude Code got us from first commit to a voice interviewer with measured response times in 12 days. That’s the number people notice. The one we care about is that no score makes the call. A person does.”
Nishant TomarEngineer, Xenveo
Looking ahead
The same discipline, pointed at hiring outcomes
The next step is to measure the business result as carefully as the team measured latency. Applications and interview attempts already record when they were submitted, changed status, started and finished, so the data for reporting time to a reviewed first round is captured today. Already queued: the priority-3 role still waiting on the role sheet, a hands-on coding step, and AI-drafted interview question banks in the recruiter console, matching what it already does for assessments.
The method carries forward too. HANDOFF.md closes by recommending another /grill-me session before any new large feature. It is the loop that built the first version: lock the decisions, plan in the open, verify in the running product, and write down what still isn’t proven.
Claude and Claude Code are trademarks of Anthropic, PBC. Xenveo’s interviewer, resume parser, question generator and scorer run on Google Gemini models. Claude Code was used to design, build and test the system.