Human or AI, practice or live, from any recorder, contact center, chat log or agent platform. Send a transcript and your definition of good; get behavior-level results with the evidence: the moment, the words and the reason.
CustomerThe whole dispatch team lost access after the 9am update.
AI agentLet’s start by reinstalling the app on your laptop.
CustomerIt’s not just me. Nobody can log in.
AI agentUnderstood. When did you first notice it?
Response · spec incident_triage@v3
{
"id": "evl_7Hq2…",
"spec": "incident_triage@v3",
"behaviors": [
{
"behavior": "established_scope",
"outcome": "missed",
"moment": { "turn": 2, "at": "1:04" },
"why": "Proposed a device fix before asking
who else is affected."
},
{
"behavior": "confirmed_timing",
"outcome": "met",
"moment": { "turn": 4, "at": "1:21" }
},
{
"behavior": "offered_workaround",
"outcome": "not_scored",
"why": "The chance never came up."
}
]
}
Two APIs
Build on the parts you need.
The same engines that power Melro Training, with no user interface. Use one or both.
Scoring API
Evaluation that names the behavior and points to the moment.
Your evaluation spec, versioned and reusable across practice and real calls
Met, partly or missed, with the reason and the timestamp
No penalty for behaviors the conversation never called for
Any transcript, from anywhere: your people or your AI agents, whether it ran through Melro or not
Voice API
Typed, configurable roleplay. Not a prompt and a prayer.
Counterparts your creators design, built on your company’s knowledge
Steer the scene with typed commands, never the actor’s mouth
Pin a release, like an API version, and keep the behavior you tested
Embed live practice inside your own product
Example
A few lines to your first result.
Pin a spec or actor version so what you tested is what runs in production.
// Score any transcript: a live call, a practice session or your AI agentconst result = await melro.scoring.evaluate({
spec: "incident_triage@v3",
transcript,
});
result.behaviors[0];
// { behavior: "established_scope", outcome: "missed", moment: { turn: 2, at: "1:04" } }// Start a live practice call with a pinned counterpartconst session = await melro.voice.sessions.create({
actor: "finance_lead@v12",
});
# Score any transcript: a live call, a practice session or your AI agent
result = melro.scoring.evaluate(
spec="incident_triage@v3",
transcript=transcript,
)
result.behaviors[0]
# {"behavior": "established_scope", "outcome": "missed", "moment": {"turn": 2, "at": "1:04"}}# Start a live practice call with a pinned counterpart
session = melro.voice.sessions.create(actor="finance_lead@v12")
# Score a transcript
curl https://api.melro.ai/v1/scoring/evaluations \
-H "Authorization: Bearer $MELRO_KEY" \
-H "Content-Type: application/json" \
-d '{"spec": "incident_triage@v3", "transcript": {"turns": [...]}}'# Start a practice call with a pinned counterpart
curl https://api.melro.ai/v1/voice/sessions \
-H "Authorization: Bearer $MELRO_KEY" \
-H "Content-Type: application/json" \
-d '{"actor": "finance_lead@v12"}'
For AI teams
Hold your AI agents to the same standard as your best people.
Score your agent’s conversations, real or simulated, against the definition of good your business already uses. See exactly which behavior failed, at which moment, and why, so you know what to change before your customers notice.
Pricing
Priced per minute. We’ll size it with you.
Access
Now onboarding design partners. Request access and we’ll set you up.