World’s largest virtual agentic engineering & quality conference
Kore.ai's Batch and Conversation Testing score NLU accuracy and flow coverage, not generative-answer quality at scale. Here's how to fully test a Kore.ai bot.

Akarshi Aggarwal
Author

Salman Khan
Reviewer
Last Updated on: July 24, 2026
Kore.ai ships some of the most mature native testing in the enterprise bot market. Utterance Testing scores intents across three models. Batch Testing reports Precision, Recall, and F1. Conversation Testing tracks dialog transition coverage with a Flow Health summary. A platform named a Leader in the 2025 Gartner Magic Quadrant for Conversational AI Platforms did not skimp on QA tooling.
All of that testing measures one thing: whether the NLU classified the intent and pulled the entities correctly. None of it scores whether the Search AI answer was true, whether the tone held under an angry user, or whether the bot could be talked into ignoring its instructions. As bots move from scripted dialog to generative answers, that is the half of quality the native tools do not touch.
This guide covers how a Kore.ai bot is built, what its native testing does and does not cover, why bots pass batch testing and still fail in production, and a step-by-step approach that adds generative-answer evaluation over the Webhook endpoint.
Overview
What Is a Kore.ai Bot?
A virtual assistant built on the Kore.ai XO and Agent Platform from Dialog Tasks, intent and entity NLU, Search AI (graph-RAG), and Tools, deployed across voice and chat channels.
What Does Native Testing Cover?
What Does It Miss?
NLU accuracy is not answer quality. Native tests do not score Search AI hallucination, tone, safety, or adversarial resistance, and batch testing does not consider conversation context.
How Do You Close That Gap?
Point TestMu AI's Agent Testing platform at the bot's Webhook endpoint. It runs autonomous evaluators across 10 personas, scores every conversation on 9 quality metrics, and returns a Green, Yellow, or Red verdict.
Kore.ai's builder is the XO Platform, now positioned inside the broader Agent Platform for building and orchestrating agentic applications. A bot's conversation logic lives in Dialog Tasks, but the current generation layers autonomous agents, an orchestrator, and Tools on top. That shift from scripted dialog to generative reasoning is exactly what changes how you have to test it.
What a real Kore.ai bot is made of:
Because the bot mixes deterministic dialog with generative answers, two parts of it fail in two different ways. The dialog can route correctly and the generated answer can still be wrong. For the shared surface across platforms, our overview of chatbot testing maps the test types that apply to any bot.
Kore.ai's native testing is genuinely strong, and worth using first. It is also, by its own descriptions, NLU-accuracy testing. Knowing exactly where it stops is what tells you what to add.
| Native Tool | What It Measures | Where It Stops |
|---|---|---|
| Utterance Testing | Intent and entity match for a single utterance across the ML, fundamental meaning, and knowledge graph models, with confidence scores. | One utterance at a time; no end-to-end dialog outcome and no generative-answer quality. |
| Batch Testing | Precision, Recall, F1, and Entity Success across a dataset, capped at 1000 utterances. | Does not consider conversation context, so a batch false negative can be a live true positive. |
| Conversation Testing | Dialog-task execution and transition coverage against expected paths, with a Flow Health summary. | Validates flow coverage, not the semantic quality or safety of a generated answer. |
| Talk to Bot console | Manual chat to try an utterance and inspect which intent and entity matched. | One conversation at a time; no automated regression or adversarial sweep. |
Batch testing scores curated utterances without conversation context. Real users bring context, paraphrase, and off-script intent, which is where the failures the native metrics cannot see actually live.
| Failure Mode | Where It Comes From | What Breaks with a Real User |
|---|---|---|
| Intent misclassification on paraphrases | A novel phrasing lands in the possible-match band rather than a definitive match, or falls through to fallback. | "My login is busted" misses the password-reset intent that the trained phrasing hit cleanly. |
| Search AI hallucination | Graph-RAG retrieves a stale or off-topic chunk, and the model generates a fluent answer not supported by policy. | The bot quotes an outdated refund window, and NLU tests never checked answer factuality. |
| Context loss across dialog tasks | A conversation branches from one Dialog Task into another, and captured entities or session state do not carry over. | The bot re-asks for an account number it already had, or resumes the wrong task after an interruption. |
| Entity extraction errors | Composite or free-form entities like dates, amounts, or alphanumeric IDs extract partially or with low confidence. | A malformed amount reaches a service node and stalls the dialog or passes a bad value downstream. |
| Voice and IVR failures | On the voice channel, speech recognition mis-transcribes accents, noise, or spelled-out numbers, and barge-in or timeouts mishandle. | The bot mishears intent and loops, a failure invisible to text-based utterance testing. |
Testing happens in three layers: the native NLU tools that catch intent and entity bugs, the Webhook endpoint that lets you drive the deployed bot, and an evaluation platform that scores the generative answers the native tools never grade.
Run Utterance Testing to see how the NLU scores a specific phrasing across its three models. Run Batch Testing on a dataset to get Precision, Recall, F1, and Entity Success for the whole intent set. Run Conversation Testing to confirm dialog tasks still execute the expected transitions after a change, using the Flow Health summary to spot uncovered paths.
This is the right foundation for NLU correctness and flow coverage. Its blind spot is everything downstream of a correct intent match: whether the Search AI answer was true, whether tone held, whether the bot refused what it should refuse.
To test the whole bot at scale, reach it the way a channel does. Kore.ai's Webhook channel exposes an HTTP endpoint: a POST to host_url/chatbot/hooks/bot_id with a JWT bearer token, the user message in message.val, and the bot's reply returned in the data array's val field in synchronous mode.
# Send a user message to a Kore.ai Webhook endpoint and read the reply
curl -X POST "https://bots.kore.ai/chatbot/hooks/<bot_id>" \
-H "Authorization: bearer $KORE_JWT" \
-H "Content-Type: application/json" \
-d '{"message": {"type": "text", "val": "reset my password"},
"from": {"id": "tester"}, "session": {"new": true}}'
# Response: the bot reply is in the data array's "val" field
# { "data": [ { "type": "text", "val": "Sure, let's reset it...", "messageId": "..." } ] }That endpoint is the seam. Any tool that can send this body and read data[].val can run hundreds of full conversations against the bot, which is what the third layer automates.
This is where TestMu AI's Agent Testing plugs in, at the Webhook endpoint the bot already serves. Instead of curated utterance datasets, autonomous evaluators hold full multi-turn conversations with the deployed bot the way real users would, across 10 pre-built personas including confused, impatient, angry, and off-script users, and score every conversation on the same 9 quality metrics each time.
Connecting a Kore.ai bot takes only its Webhook URL, a JWT, and a prompt describing what it should and should not do. The platform generates 60 to 100 or more scenarios from that prompt automatically, spread across happy-path flows, edge cases, and adversarial input, so coverage stops depending on which utterances you happened to add to a dataset.
Connecting Agent Testing to a Kore.ai bot does not require the BotKit SDK or a change to the bot. It calls the Webhook endpoint directly, adapting to Kore.ai's request shape with a body template and a response path, then layers three inputs on top before generating a full scenario set.
# Point the evaluator at a Kore.ai Webhook endpoint
testmu-a2a test \
--agent https://bots.kore.ai/chatbot/hooks/<bot_id> \
--header "Authorization: bearer $KORE_JWT" \
--body-template '{"message": {"type": "text", "val": "{{message}}"}, "from": {"id": "testmu-eval"}, "session": {"new": false}}' \
--response-path "data[0].val" \
--spec "Banking support bot that resets passwords, checks balances, and escalates disputes" \
--count 30From there, autonomous evaluators run the generated scenarios against the endpoint and score each on the 9 quality metrics. A Search AI answer is checked against what the bot should actually know, not just whether NLU matched the intent, and every run rolls up into a Green, Yellow, or Red verdict, the same model our overview of AI agent testing walks through in depth.
Note: Point TestMu AI's Agent Testing at your Kore.ai Webhook endpoint and score generative-answer quality the native NLU tools never grade. Start testing free
Precision and Recall tell you the NLU matched the intent. They do not tell you whether the answer was honest, complete, or safe. Agent Testing scores each conversation on 9 quality metrics that pick up exactly where the native NLU metrics stop.
Every score also carries a confidence level, High, Medium, or Low, based on how many scenarios actually ran, so a Green built on ten scenarios is never mistaken for a Green built on three hundred. That distinction is what separates a demo that passed from a bot that is ready.
The four dimensions cover a user trying to get help. Red-teaming covers a user, or a poisoned document, trying to break the bot on purpose: override its instructions, exfiltrate data through a Tool, or coax out PII. Kore.ai bots are especially exposed because they call Workflow, Code, and MCP Tools that act on enterprise systems. The testmu-a2a-cli runs adversarial probes against the endpoint, scoring categories including prompt injection, jailbreak, data exfiltration, and PII leakage at basic, intermediate, or advanced intensity.
testmu-a2a redteam \
--agent https://bots.kore.ai/chatbot/hooks/<bot_id> \
--header "Authorization: bearer $KORE_JWT" \
--intensity advanced \
--spec "Kore.ai banking bot with balance and dispute Tools"
# Target specific attack categories only
testmu-a2a redteam \
--agent https://bots.kore.ai/chatbot/hooks/<bot_id> \
--categories prompt-injection,jailbreak,pii-leakageThe output is a letter grade, A+ to F, per category rather than one pass or fail, because a bot can resist a direct jailbreak and still follow instructions injected through a retrieved document. For any bot wired to Tools that touch enterprise data, that per-category grade is the gap between a vulnerability you found and one an attacker finds.
Co-Founder, Steadfast Systems
Discovered @TestMu AI yesterday. Best browser testing tool I've found for my use case. Great pricing model for the limited testing I do 👏
Deliver immersive digital experiences with Next-Generation Mobile Apps and Cross Browser Testing Cloud
A Dialog Task edit, a new Search AI source, or a model change ships the moment it is published. Native Batch Testing gates the NLU, and the testmu-a2a-cli adds the endpoint-level generative sweep: it installs with pip, authenticates from CI secrets instead of an interactive login, and writes JUnit XML that GitHub Actions, GitLab CI, and Jenkins read natively.
# .github/workflows/kore-ai-bot-tests.yml
name: Kore.ai Bot Tests
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install TestMu A2A CLI
run: pip install testmu-a2a-cli
- name: Run Kore.ai bot regression suite
env:
TESTMU_USERNAME: ${{ secrets.TESTMU_USERNAME }}
TESTMU_ACCESS_KEY: ${{ secrets.TESTMU_ACCESS_KEY }}
KORE_JWT: ${{ secrets.KORE_JWT }}
run: |
testmu-a2a test \
--agent ${{ vars.KORE_WEBHOOK }} \
--header "Authorization: bearer $KORE_JWT" \
--body-template '{"message":{"type":"text","val":"{{message}}"},"from":{"id":"testmu-eval"},"session":{"new":false}}' \
--response-path "data[0].val" \
--spec "Kore.ai banking bot with balance and dispute Tools" \
--format junit --output results.xml
- name: Publish results
uses: dorny/test-reporter@v1
if: always()
with:
name: Kore.ai Bot Test Results
path: results.xml
reporter: java-junitGate on exit code: 0 for all scenarios passed, 1 for any failure. Run the full evaluation for dialog, Search AI, or model changes, and a smaller smoke set for a change that does not touch bot behavior. The discipline is the same one covered in our guide to AI agent regression testing.
A Green verdict means the bot passed on the scenarios you ran, with the personas you tested, on the metrics you configured. Here is what it does not cover:
None of this is a reason to skip testing. It is a reason to keep testing after launch, not just before it.
Keep running Kore.ai's Batch and Conversation Testing; they are among the best native NLU tools in the market. Then point the bot at the questions those tools were never built to answer: is the Search AI response actually true, does the tone hold when the user is angry, can the bot be talked into ignoring its rules. The native tools grade the intent. TestMu AI's Agent Testing grades the answer, running the deployed bot through hundreds of personas and adversarial probes and handing back a go-live verdict before a real user finds the gap first.
Point the evaluator at your Webhook endpoint, check the setup docs, and run your first evaluation before the next dialog or model change ships.
Author
Akarshi Aggarwal is a community contributor with 2+ years of experience in marketing and growth. She specializes in automation testing and frameworks like Cypress, Playwright, Selenium, and Appium. Akarshi has written numerous technical articles, contributing valuable insights into automation testing practices. She actively engages with the tech community, sharing expertise on test automation and quality engineering. On LinkedIn, she is followed by over 7,000 QA professionals, software testers, DevOps engineers, developers, and tech enthusiasts.
Reviewer
Salman is a Test Automation Evangelist and Community Contributor at TestMu AI, with over 6 years of hands-on experience in software testing and automation. He has completed his Master of Technology in Computer Science and Engineering, demonstrating strong technical expertise in software development, testing, AI agents and LLMs. He is certified in KaneAI, Automation Testing, Selenium, Cypress, Playwright, and Appium, with deep experience in CI/CD pipelines, cross-browser testing, AI in testing, and mobile automation. Salman works closely with engineering teams to convert complex testing concepts into actionable, developer-first content. Salman has authored 120+ technical tutorials, guides, and documentation on test automation, web development, and related domains, making him a strong voice in the QA and testing community.
Did you find this page helpful?
More Related Blogs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance