The problem
Every ticket that reaches QA needs test cases written before it can be tested. Writing them is slow, repetitive, and almost entirely derived from information already sitting in the ticket: the acceptance criteria, the affected surfaces, the edge cases someone already thought about during refinement.
Three QA engineers were each spending hours a month retyping that information into TestRail in a different format. Nobody considered it a problem. It was just what the job involved.
What I built
An agent that handles the mechanical part and leaves the judgment to a person.
When a ticket moves into QA status, the agent picks it up through the Jira MCP server and reads the full context: description, acceptance criteria, comments, linked issues. It drafts a set of test cases against that context and surfaces them for review.
A QA engineer edits or approves. Nothing is written until a human signs off. That was deliberate, because a test suite silently filled with plausible-looking cases nobody read is worse than no automation at all.
Once approved, the agent creates the test run in TestRail through its REST API, correctly linked to the originating ticket.
It runs inside Microsoft Copilot, which is the approved AI runtime at EBG. That mattered more than the model choice. A tool that requires security exceptions doesn't get adopted; one that runs where the company already permits it does.
Decisions worth explaining
Human approval in the middle, not at the end. The agent is good at drafting and bad at knowing which edge case actually matters for this release. Putting the review before the write keeps the reviewer's attention on something that still matters.
MCP for reading, REST for writing. Jira is the context source and the MCP server handles that cleanly. TestRail is where state gets created, and its REST API gives precise control over what gets written and where.
Built inside the sanctioned runtime. Copilot was already approved. Building on it meant no procurement conversation and no security review blocking adoption.
Outcome
In daily use by the QA team. Roughly six hours per engineer per month returned, which is time now spent on exploratory testing and coverage gaps rather than transcription.
I documented the architecture and configuration so the team can extend it without me.
Try the workflow
A working recreation with synthetic data. Move a ticket into QA, review what the agent drafts, and create a test run.
Interactive recreation. Synthetic data and pre-generated outputs. It contains no employer systems, customer data, or production code, and makes no live model calls.
Open demo