Skip to main content
intervyo.ai runs calibrated AI interviews — real-time voice conversations where the AI probes, follows up, scores against your rubric, and ships a transcript plus scorecard within ~2 minutes of the session ending. The same building blocks power every use case, whether you’re screening engineers, certifying sales reps, or letting students rehearse. This page explains each one, the fields that matter, and how they change across use cases.
Two ways to do everything. You can build and run interviews entirely in the dashboard (no code) or over the API. Each concept page below shows both a Dashboard and an API path for creating it — pick whichever fits you. Prefer a guided walkthrough? Start with How it works, end to end.

In plain English

Think of how a real company interviews someone:
  • A Role is the job you’re hiring (or assessing) for — “Customer Support Specialist”, “ServiceNow Engineer”, “Account Executive”. It says what good looks like.
  • A Round is one step in that job’s interview — a phone screen, a technical round, a final. A Role can have one Round or several.
  • An Interviewer is the person who runs a Round — here, an AI persona with a scorecard. You build one once (e.g. an “ITOM Specialist” or a “Friendly Screener”) and reuse it in any Round of any Role.
A Role has Rounds; each Round is run by an Interviewer.
You don’t need to be technical to set this up — you describe the Role in plain words, add the Rounds you want, and pick an Interviewer for each. Then you add people and the AI does the interviews.

The mental model

Configuration flows top-down. You define how the AI behaves, what it assesses, and which steps a candidate goes through — then attach people and run sessions.
Role                 →  what to assess (the job, skills, objective, pass bar)
   └─ Round               →  one step in the interview (screen, technical, final)
        └─ Interviewer         →  the AI persona + scorecard that runs the Round
   └─ Participant         →  the person being evaluated, attached to the Role
        └─ Session             →  one AI interview → transcript + scorecard
Reuse is the point. One Interviewer can run Rounds across many Roles; one Role can have many Rounds; one participant can run many sessions. Define your calibration once, apply it everywhere.

Interviewer

(API field name: agent_profile) The interviewer’s personality and judgment. An Interviewer decides how the AI introduces itself, how hard it pushes, and how it converts a conversation into a score. Attach an Interviewer to a Round to control that step’s interview.

Key fields

name
string
required
Display name, e.g. "Senior Engineering Interviewer".
persona
string
required
How the AI introduces itself at the start, e.g. "Alex, a senior engineer at Acme." Sets the candidate’s first impression and the AI’s voice.
useCase
hiring | admissions | training | custom_api
required
Selects the recommendation vocabulary — hiring yields hire / no-hire, training yields ready / needs practice, and so on.
evaluationDimensions
array
required
The scoring axes: [{ name, description, weight }]. Weights must sum to 100. This is the rubric the AI grades against.
interaction
object
Conversation behavior: tone (friendly · professional · strict · challenging), style (structured · conversational · adaptive), difficulty (easy · medium · hard · adaptive), and probingDepth (low · medium · high).
scoring
object
How scores are computed: scale (0-10 · 0-5 · 0-100), scoringMethod (weighted_average · rule_based), and optional recommendationLogic.
context
object
Grounding for the AI: organizationContext, domainContext, scenarioContext — e.g. company background or the roleplay setup.
output
object
What the scorecard contains: includeTranscript, includeScoreBreakdown, includeRecommendation, includeImprovementFeedback (all default true).

How it changes per use case

Calibrated, slightly challenging, weighted toward role skills.
{
  "name": "Senior Backend Interviewer",
  "persona": "Alex, a staff engineer assessing backend depth.",
  "useCase": "hiring",
  "evaluationDimensions": [
    { "name": "System Design", "description": "Scalable architecture", "weight": 50 },
    { "name": "Coding",        "description": "Correctness & clarity",  "weight": 30 },
    { "name": "Communication", "description": "Explains trade-offs",    "weight": 20 }
  ],
  "interaction": { "tone": "professional", "difficulty": "hard", "probingDepth": "high" }
}

Role

(API field name: evaluation_template) The blueprint for what you’re hiring or assessing for. A Role describes what the AI should determine and the bar for success. Every participant and session belongs to a Role.

Key fields

template_name
string
required
Display name, e.g. "Senior Backend Engineer".
use_case
hiring | admissions | training | custom_api
required
The category, which drives the recommendation vocabulary and defaults.
objective
string
required
The single thing the interview must determine, e.g. “Assess whether the candidate can own backend system design.”
success_outcome
enum
The verdict label: hire_no_hire, admit_reject, pass_fail, ready_needs_training, certified_not_certified, or custom. Auto-derived from use_case if omitted.
skills
string[]
Technical skills to probe, e.g. ["Go", "PostgreSQL", "Distributed Systems"].
soft_skills
string[]
Behavioral traits, e.g. ["Communication", "Ownership"].
requirements
string
What the candidate must demonstrate to pass — your bar, in plain language.
default_difficulty
beginner | intermediate | advanced | expert | adaptive
Question depth (default intermediate).
default_session_mode
enum
live_ai_interview, async_interview, roleplay_simulation, practice_session, or manual_review. Sets the interview format.

How it changes per use case

FieldHiringTrainingMock interview
use_casehiringtrainingtraining
objective”Can they do the job?""Are they ready to perform?""Are they ready for the real thing?”
success_outcomehire_no_hireready_needs_trainingpass_fail
default_session_modelive_ai_interviewroleplay_simulationpractice_session
skillsrole-specificcompetencies to buildtarget-role skills

Round

(API field name: evaluation_stage) A single step within a Role’s pipeline — e.g. Phone Screen → Technical → Final. Each Round runs its own interview with its own Interviewer, duration, and pass threshold.

Key fields

role_id
uuid
required
The Role this Round belongs to.
stage_name
string
Display name shown to candidates, e.g. "Technical Screen".
stage_type
enum
ai_interview, roleplay_simulation, practice_session, manual_review, async_assessment, or final_review.
interviewer_id
uuid
The Interviewer that conducts this Round. This is where the persona and rubric plug in.
stage_order
integer
Position in the pipeline (0-based).
pass_threshold
number (0–100)
Minimum score required to pass this stage.
allow_retake
boolean
Whether a candidate can retry on failure (default false).
automation_rule
none | auto_advance | require_reviewer_approval
What happens on completion — advance automatically, or wait for a human.

How it changes per use case

Multiple gated stages, rising bar, human approval before the final round.
[
  { "stage_name": "Phone Screen", "stage_type": "ai_interview", "pass_threshold": 60, "automation_rule": "auto_advance" },
  { "stage_name": "Technical",    "stage_type": "ai_interview", "pass_threshold": 75, "automation_rule": "require_reviewer_approval" },
  { "stage_name": "Final",        "stage_type": "final_review",  "pass_threshold": 80 }
]

Participant

The person being evaluated — a candidate, trainee, or student. Create the participant first, then schedule sessions for them. A participant is scoped to a Role, so the same email can exist as separate participants under different Roles.

Key fields

name
string
required
Full name.
email
string
required
Email address — unique per account. The interview invite is sent here.
role_id
uuid
The Role this participant is being evaluated against.
external_id
string
Your ATS / LMS / system ID. Echoed back in every webhook payload, so you can reconcile results without storing our IDs.
profile
object
{ title, organization, experienceLevel, location } — context the AI uses to tailor questions.
background
object
{ skills: string[], education, languages: string[] }.
resume_url
url
Publicly accessible resume — triggers vector extraction so the AI can reference it during the interview.
tags
string[]
Arbitrary labels for filtering, e.g. ["senior", "remote"].

How it changes per use case

A candidate sourced from your ATS, with resume and role context.
{
  "name": "Jane Smith",
  "email": "jane@example.com",
  "external_id": "greenhouse-8821",
  "role_id": "ce1cd564-...",
  "profile": { "title": "Software Engineer", "experienceLevel": "senior" },
  "resume_url": "https://.../jane-resume.pdf",
  "tags": ["senior", "backend"]
}

Session

The output — one AI interview for one participant, producing audio, a transcript, per-dimension scores, a recommendation, and authenticity signals. You schedule a session against a participant + template; the invite email goes out automatically. See Sessions.

Putting it together

1

Create an agent profile

Define the interviewer — persona, dimensions, tone.
2

Create an Interviewer

Define the AI persona — its dimensions, tone, and scoring.
3

Create an evaluation template

Describe the role/assessment and its objective.
4

Create a Role

Describe the job/assessment and its objective.
5

Add stages

Add one or more stages, each pointing at an agent profile.
6

Add Rounds

Add one or more Rounds to the Role, each pointing at an Interviewer.
7

Add participants

Create the people to evaluate, bound to the template.
8

Add participants

Create the people to evaluate, bound to the Role.
9

Schedule sessions

Schedule a session per participant — invites send automatically, scorecards arrive via webhook.

Where to next

Quickstart

Run your first AI interview in 5 minutes.

Authentication

Generate API keys and authenticate requests.

API Reference

Every endpoint with request builders and response examples.
Documentation is versioned with the platform — what you read here matches what’s deployed.
Last modified on June 30, 2026