Inspiration
The challenge asked how AI could help teams align on decisions and review work better. Before coding, we talked to a real PM, who told us she manually tracks what every team knows, needs to know, and is working on — entirely in her head. We narrowed that into a specific, common failure: a PRD gets written in Confluence, Engineering builds against it in Jira, and the two quietly drift apart until it's expensive to fix.
What it does
Butterbean is a Mistral agent, connected live to Jira and Confluence via Mistral's Atlassian connector, that compares a PRD to its linked epic and classifies each requirement as:
- MATCHES — implementation reflects the PRD
- CONFIRMED_CHANGE — changed, but with real evidence it was a deliberate decision
- SILENT_DRIFT — diverged with no trace of why
Requirements change for good reasons all the time — Butterbean's job isn't flagging every difference, it's telling governed change apart from silent gaps nobody flagged. Results render in a filterable dashboard. In testing, it also caught a requirement with no owning story at all — a gap we never explicitly told it to look for.
How we built it
- Mistral Agents API with a system prompt encoding our detection rule: what counts as evidence of a governed change vs. silent drift
- Mistral's Atlassian Connector (MCP) for live, tool-based Jira/Confluence access — no custom API auth needed
- Structured JSON output for consistent, renderable results
- A static, hand-built dashboard (HTML/CSS/JS) — the model decides the data, not the UI, keeping demos reliable
- Test data built with both a confirmed-change and a silent-drift case, to verify the agent tells them apart
Challenges
Untangling Mistral's separate Vibe vs. pay-as-you-go billing systems, a corrupted local package install, and discovering connectors attach via the API (agents.create()), not the Studio UI.
Accomplishments
An end-to-end pipeline — real Atlassian data, reasoned about live, rendered cleanly — that correctly separated a real scope change from a silent one, and generalized well enough to catch a case we didn't plant.
What we learned
"Requirements changing" isn't the problem — silent, unconfirmed change is. That distinction shaped everything.
What's next
Making it continuous: webhook-triggered on ticket changes, with results published back into Confluence automatically.
Built with
Mistral Agents API · Mistral Atlassian Connector (MCP) · Python · HTML/CSS/JavaScript · Jira · Confluence
Log in or sign up for Devpost to join the conversation.