Skip to main content
A LiveKit voice agent that conducts a structured 25-minute screening interview grounded in two Moss indexes: the job description and the candidate’s resume. The agent asks calibrated questions based on what the JD requires and what the resume actually says, captures rubric scores (1–5) during the conversation, and writes a structured scorecard JSON at the end.
Full example — see the Candidate Screening cookbook for the complete agent, three sample candidates (strong match, partial match, junior/reach), and an eval suite.

Architecture

Two separate tools — lookup_job_requirement and lookup_resume_fact — keep the retrieval sources explicit in the logs and give the LLM clear semantics for which index answers which type of question.

What this demonstrates

Required tools

Integration guide

1

Installation

2

Environment setup

.env
3

Define session state

Rubric entries and candidate questions are captured during the call as the conversation happens — not reconstructed from a transcript after the fact.
4

Build the screening agent

The agent has two retrieval tools with distinct semantics. on_enter pre-fetches role context from the JD index so the opening greeting is grounded in real data.
5

Build the scorecard

6

Wire up the entrypoint

Both indexes load into local memory at startup so every retrieval during the interview hits the in-process path.

Scorecard output

The recommendation is computed from the rubric automatically — the hiring team makes the final call, not the agent.