RylvoRylvo

Test Suite

Ship the change. Know what broke.

Describe the conversation in plain English and assert what has to be true: the phrases the reply must and must not contain, the guardrail that must fire, the facts the bot must capture, the agent that must handle it. Rylvo runs the case against the real bot, checks the hard rules exactly, scores the quality, and tells you which one failed — with the trace attached.

10

test categories

5

scoring dimensions

5

result verdicts

5

ways to start a run

What a test case is

Four things you can assert, and none of them are vibes.

A Rylvo test case pins down the conversation, the reply, the data the bot was supposed to capture, and — for an agent group — the route it should have taken. Reading a transcript and nodding is not a test.

A case is a thread, not a single prompt

Write the user turns in plain English. A case can be one message or a full multi-turn exchange, and the run captures the bot's real replies turn by turn.

One or many user turns
The real transcript is kept on the result
Name, description, tags, and notes
Disable a case without deleting it

Cases can be written by hand, cloned from an existing one, created by the Workspace Architect, or pushed in over the API — the source is recorded on every case.

Ten categories

Name the failure you are afraid of. Then test for it.

Every case carries a category and a priority, from critical down to low, so a suite result tells you whether the thing that broke actually mattered.

Happy Path

The standard interaction that has to work every single release.

Edge Case

Boundary inputs, typos, and phrasings nobody designed for.

Guardrail Test

Verify that a block, warning, or escalation actually fires.

Escalation Test

Confirm the bot knows when to hand the turn to a human.

Tone Check

Validate that the reply still sounds like your brand.

Policy Compliance

Hold the bot to your refund, privacy, and legal rules.

Hallucination Probe

Catch invented policies, specs, and confident nonsense.

PII Check

Make sure sensitive data is never echoed back.

Multi-Turn

Test whether context survives a real conversation.

Custom

Your own taxonomy, for what only your domain cares about.

Running the suite

Watch it run, and see the answer it really gave.

The workbench puts the case list, the result, and the live chat side by side. A run reports progress case by case, and every result links straight to the trace behind it.

TEST SUITE / SUPPORT BOT

RUN 4/4 · TRIGGERED BY CI
Run suite3 passed · 1 failed
FAIL · RULE VIOLATIONSCORE 0.41

forbidden_term

Reply contained “lifetime warranty”

required_term

Missing “no warranty is offered”

guardrail_action

Expected warn — nothing fired

Rel

0.7

Acc

0.2

Comp

0.6

Tone

0.8

Guard

0.0

Open the trace behind this turn

Five ways a run gets started

Every run records which one triggered it.

Manual

A person clicking run in the workbench.

API

A programmatic client using an API key.

Architect

The Workspace Architect running the suite it just changed.

Scheduled

An automated recurring run.

CI

Your pipeline, calling the same API.

It runs against the real bot

A case executes through the same engine that serves production — the same prompt, tools, knowledge base, and guardrails — but tagged as test traffic, so it never contaminates your production numbers.

Every result deep-links to its trace

A failing case is one click from the full observation tree behind that turn: the generations, the tools it called, and what the guardrails did.

A score trend, not a lone number

The workbench charts the score across recent runs, so a slow slide after a prompt change is visible to you rather than to a customer.

Verdicts and scoring

Hard rules are checked exactly. Quality is judged.

A missing required phrase is not a matter of opinion, and it fails deterministically. How good the answer was is a separate question, scored across five dimensions by a judge model the run records.

Pass

No hard rule broke and the score cleared the bar.

Fail

An assertion was violated, or the score fell short.

Partial

Some of what the case demanded was met.

Error

The case could not be executed at all.

Skipped

The case was disabled or filtered out of the run.

Five scoring dimensions

Scored per case and rolled up into the run's overall score. The judge model is recorded on the run; if the judge call fails, scoring falls back to a deterministic path rather than quietly passing the case.

Relevance

Does the reply address what was actually asked?

Accuracy

Required terms present, forbidden terms absent, guardrail behavior as expected.

Completeness

Was the whole question answered, or only part of it?

Tone

Does it sound like the persona you shipped?

Guardrail compliance

Did the safety behavior match what the case demanded?

Why it failed

A red badge is useless. A reason is not.

Rylvo separates “you broke a rule I was told to enforce” from “nothing broke, the answer just was not good enough” — because those two failures send you to completely different places in your bot.

Rule violation

A hard rule this test enforces was broken — a required phrase missing, a forbidden one present, the wrong guardrail action, the wrong route, or a fact never collected.

Below quality bar

No hard rule broke. The answer simply was not good enough, and the score landed under the pass mark.

Run error

The case could not be executed, so nothing is concluded from it.

The exact checks that broke

A failing result lists them by kind — required term, forbidden term, guardrail action, routing, data collection, quality, or error — with the detail behind each one.

Analysis of the whole run

After a run you get concrete strengths, concrete weaknesses, and fix suggestions tied to specific cases, each with a type, a severity, and a confidence.

Suggestions, not silent edits

A suggestion points at a prompt, a guardrail, a connector, an escalation rule, or a knowledge gap. Acting on it is your call — Rylvo does not quietly rewrite your bot.

Every case links to the trace that produced it

When the assertion tells you what broke but not why, the observation tree behind that exact turn is one click away.

Explore Observability

Access and plans

Testing is on every plan.

A bot nobody tested is a bot nobody should ship, so test suites are not a paid-tier privilege. What changes with the plan is how many cases you keep and how often you can run them.

PlanTest casesSuite runs

Free

5 cases per bot

3 suite runs / month

Lite

50 cases per bot

50 suite runs / month

Pro

Unlimited cases

Unlimited runs

Team

Unlimited cases

Unlimited runs

Enterprise

Unlimited cases

Unlimited runs

Put the suite in your pipeline

The run the workbench starts can equally be started by an API key, and the result records that CI triggered it. Nothing fires itself behind your back.

Quotas are enforced on the server

Case and run limits are checked by the API rather than hidden behind a disabled button, so the boundary is real however you call it.

FAQ

How a verdict is reached, plainly stated

What is checked exactly, what is judged, and what Rylvo will never do on your behalf.

Do I need to write code to create a test?

No. You describe the user turns in plain English, then say what the reply must contain, must not contain, and which guardrail should fire. The assertions are structured; the authoring is not.

How is a verdict decided?

Hard assertions are checked deterministically — a missing required term fails the case outright. Quality is scored separately across five dimensions by a judge model, and the run records which judge model scored it. If the judge call fails, scoring falls back to a deterministic path.

Does a test run pollute my production data or metrics?

No. Test traffic is tagged as the test environment and filtered out of production views. Attribute inference runs in dry-run during a test: you see what would have been written, and nothing lands on a real person's profile.

Can I see exactly why a case failed?

Yes. Every result separates a rule violation from a merely low score, lists the specific checks that broke, keeps the full transcript, and deep-links to the observability trace behind each turn.

Do suites run automatically when I change a prompt?

Not on their own. A run is started by a person, the API, the Architect, a schedule, or your CI pipeline — and every run records which of those triggered it. Wire the API into your pipeline if you want a suite on every change.

What do I get after a run beyond pass and fail?

An analysis of the run: concrete strengths, concrete weaknesses, and structured fix suggestions tied to specific cases, each with a type, a severity, and a confidence. They are suggestions for you to act on, not edits applied to your bot.

Know it still works before your customer does.

Write the cases that matter, run them against the real bot, and get a verdict with a reason attached — not a transcript to squint at.