Chapter 13 · CrewAI Multi-Agent Track CLI Project

Three AI specialists triage every bug before a human ever opens it.

A CrewAI crew of three role-played QA experts: a Triage Analyst classifies severity, a Root Cause Investigator traces the failing layer, and a Test Strategy Advisor writes the regression plan. Fed by live Jira tickets, powered by Groq gpt-oss-120b.

01 What students build

Your first real multi-agent system. Instead of one giant prompt, the work is split across three CrewAI agents with distinct roles, goals, and backstories. Tasks run as a sequential process where each agent receives the previous outputs as context, so the Test Strategy Advisor reasons over both the severity call and the root cause. A small fetch_jira_ticket() helper pulls the real bug from the Jira REST API.

Role-Played Agents

Each agent carries a backstory: a 15-year triage veteran with a strict P0-P4 rubric, a debugger who thinks in UI, API, Service, DB layers, and an SDET who answers in Playwright TypeScript.

Context Chaining

Task 2 receives Task 1's output, Task 3 receives both. CrewAI's context=[...] wiring is the whole lesson: agents build on each other instead of guessing alone.

Live Jira Input

The crew triages real tickets from bugzz.atlassian.net, not toy strings. One function call turns VWO-24 into a clean bug report the agents can chew on.

02 Architecture

Jira ticketVWO-24 · REST API
──▶
fetch_jira_ticket()clean bug report
──▶
Triage Analystseverity P0-P4
──▶
Root CauseUI · API · Service · DB
──▶
Test StrategyPlaywright TS
──▶
Triage reportmerged output
crewai sequential process · task context flows forward · groq gpt-oss-120b brain

03 Live demo (simulated with sample data)

This is a UI walkthrough with pre-baked sample data so you can feel the crew without API keys. In the course you run the real thing: python 03_Building_QABugTriageCrew.py against your own Jira workspace with a free Groq key.

bug-triage-crew · python 03_Building_QABugTriageCrew.py demo · sample data

04 Inputs & outputs

What goes in

  • A Jira bug key (fetched live via the Jira REST API)
  • Three agent definitions: role, goal, backstory
  • A strict P0-P4 severity rubric baked into the analyst
  • Groq API key for the gpt-oss-120b brain

What comes out

  • Severity + category classification with justification
  • Root cause hypothesis with the affected system layer
  • Which logs and dashboards to check first
  • Verification, regression, and edge test recommendations
  • A merged final triage report from crew.kickoff()

05 How it's built

Subclass CrewAI's LLM to strip the cache_breakpoint field that Groq's OpenAI-compatible endpoint rejects, then point it at gpt-oss-120b.
Write fetch_jira_ticket(bug_id): one authenticated GET to the Jira REST API, flattened into a plain-text bug report.
Define Agent 1, the Bug Triage Analyst, with a P0-P4 rubric in its backstory so severity calls are consistent and justified.
Define Agent 2, the Root Cause Investigator, who traces UI, API, Service, and DB layers and names the logs to check.
Define Agent 3, the Test Strategy Advisor, an SDET persona that answers in Playwright TypeScript test recommendations.
Wire three Tasks with context=[...] chaining, assemble the Crew as a sequential process, and crew.kickoff().

06 Tech stack

CrewAI · PythonGroq gpt-oss-120bJira REST APISequential processTask context chainingAgent backstoriespython-dotenv