{"slug": "the-ai-recruiter-that-never-forgets-a-candidate", "title": "The AI Recruiter That Never Forgets a Candidate", "summary": "A developer built an open-source candidate screening call agent on Telnyx that places outbound AI-conducted phone interviews and persists each candidate's profile, answer ledger, scores and retry history in a durable per-phone-number actor on Telnyx Edge Compute. Because state lives in the actor rather than the call, a dropped connection resumes automatically at the next unanswered question via dynamic variables, with no resume flow in the code. Answers are scored against a five-question rubric, with vague responses routed to human review and production scoring handled by Telnyx Decision Models.", "body_md": "The call dropped. Mid-interview.\n\nA candidate had just answered the second question of a five-question phone screen. Then the connection died. On most call workflows, that's a restart: the next call starts at question one, the candidate repeats themselves, and the notes from call one are gone.\n\nThat moment is why I built this.\n\nThe code is here:\n\n[https://github.com/team-telnyx/telnyx-code-examples/tree/main/candidate-screening-call-agent](https://github.com/team-telnyx/telnyx-code-examples/tree/main/candidate-screening-call-agent)\n\nThis is a candidate screening call agent. You press one button, and Telnyx calls the candidate. An AI Assistant runs the interview — five questions, one at a time. As the candidate finishes each answer, it gets scored against a role rubric and written into a durable record.\n\nThe interesting part is where that record lives.\n\nMost call workflows keep their state inside the call. Call ends, context ends. This sample does the opposite: every candidate gets their own durable actor — a small piece of code with its own memory that stays alive on Telnyx Edge Compute. One per phone number. It holds the candidate's profile, their answer ledger, their scores, how many times the call was retried, and the full event history.\n\nCalls become just one way to talk to that actor.\n\nWhen the candidate's history lives in a durable actor instead of a call, the resume-after-drop isn't a feature you build. It falls out of the architecture.\n\nHere's the mechanism. Every outbound call carries its own little instruction sheet — Telnyx calls these dynamic variables. Our dial payload sends two things: the five questions to ask, and the list of questions already answered. The assistant reads that and skips straight to the next unanswered question.\n\nThere's no resume flow in the code. There's no session state in the call. I just call the candidate again, and because their actor still exists, the call continues where it left off. When I demo this, it's the moment people lean in: hang up mid-call, press the same button, and the AI says \"continuing where we left off\" and asks question three.\n\nTelnyx hosts the entire conversation — speech-to-text, inference, text-to-speech, turn-taking, voicemail detection. I configured it once: an Ultra voice with expressive mode, patient turn-taking so it never interrupts a candidate mid-sentence, and premium voicemail detection. If nobody picks up, the assistant leaves a short callback message and stops. It doesn't talk at a voicemail greeting for five minutes.\n\nThe outbound call goes through TeXML — Telnyx's voice layer that places and manages the call itself. The call carries the assistant's ID and those dynamic variables, and the assistant does the rest.\n\nEvery answer gets scored. The rubric has five questions, each with ideal signals — things a strong answer would contain. The scorer combines signal matches with substance: an answer needs real content to pass, a vague one routes to human review, an empty one fails.\n\nThat's deliberate. An AI phone screen that passes everything is useless — the recruiter can't trust it. In production, the same answers route through Telnyx Decision Models for AI-graded scoring with the same output shape. The rule-based scorer is the honest floor you can audit.\n\nThe recruiter sees a live transcript and a scorecard as the call happens. Average score, per-question verdicts, and a recommended next step: advance, review, or human review.\n\nThree things, and the architecture is already shaped for them.\n\nFirst, text-back. Since the actor is the candidate's identity, an inbound SMS can land on the same actor. The candidate confirms their interview by text, and the system already knows who they are and what was said.\n\nSecond, the ATS hook. Opening a screen is already an API route. When a candidate applies, the ATS fires it — the call happens with zero recruiter effort.\n\nThird, calibrating the scoring. The rubric signals are the demo's honesty floor; Decision Models make the grading adaptive without changing the recruiter's output.\n\n```\ngit clone https://github.com/team-telnyx/telnyx-code-examples.git\ncd telnyx-code-examples/candidate-screening-call-agent\nnpm install\ncp .env.example .env   # four values: API key, TeXML app, caller id, your phone\nnpm run dashboard\n```\n\nPress one button. Telnyx calls you. You are the candidate. Answer like one.\n\nThe full walkthrough video: [https://youtu.be/a03KfWduNWA](https://youtu.be/a03KfWduNWA)\n\nThe hiring screen is the demo, but the shape generalizes: an outbound call, a structured conversation, and a durable per-person actor that remembers everything between calls.\n\nPatient intake. Lead qualification. Insurance verification. Appointment confirmation. Anywhere a call might drop, a person might need to be called twice, and their history should follow them — that's where this architecture belongs.\n\nThe phone is the channel people actually answer. Durable state is what makes it feel human.", "url": "https://wpnews.pro/news/the-ai-recruiter-that-never-forgets-a-candidate", "canonical_source": "https://dev.to/botoclock/the-ai-recruiter-that-never-forgets-a-candidate-4b4n", "published_at": "2026-10-16 21:47:14+00:00", "updated_at": "2026-10-16 21:54:50.063460+00:00", "lang": "en", "topics": ["ai-agents", "ai-products", "ai-tools", "developer-tools", "natural-language-processing"], "entities": ["Telnyx", "Telnyx Edge Compute", "TeXML", "Telnyx Decision Models", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/the-ai-recruiter-that-never-forgets-a-candidate", "markdown": "https://wpnews.pro/news/the-ai-recruiter-that-never-forgets-a-candidate.md", "text": "https://wpnews.pro/news/the-ai-recruiter-that-never-forgets-a-candidate.txt", "jsonld": "https://wpnews.pro/news/the-ai-recruiter-that-never-forgets-a-candidate.jsonld"}}