I've spent the last few months building a Rovo agent that produces portfolio status reports across a large Jira instance — status rollups, kanban snapshots, sprint summaries, and release notes. Sharing what I built and the lessons in case they help others going down this path.
What I built
Rather than one big agent, I landed on an orchestrator + sub-agents pattern: a thin router agent that does nothing but hand off to focused sub-agents, one per report type. Keeping each sub-agent small and single-purpose made them far easier to keep accurate — and it sidestepped the config-size limits you hit when instruction bodies get too big.
Lessons learned
The biggest challenge wasn't wiring things up — it was trusting the numbers. Early versions confidently reported totals that were subtly wrong. What fixed it:
- Read counts off the query's total field. Never let the agent tally an in-memory list — pagination caps mean that list is usually incomplete. Paginate every query to completion.
- Group by status category (Done / In Progress / To Do), not by literal status name. Custom workflow statuses vary between projects; categories are stable.
- Define ambiguous words explicitly. Spell out exactly what "open," "remaining," or "complete" mean, or the model will guess. Mine once labeled the full descendant count as "open" when most were already done.
- Any breakdown must come from a query, not a guess. For by-type or by-assignee splits, run the actual count query. I caught the agent inventing a tidy two-type split that just happened to sum to the total.
- Add a reconcile step before output. Bake in checks the agent must pass (sub-buckets sum to the total, subsets stay within their parent). If a check fails, it re-queries instead of shipping.
- Put concrete failure examples in the instructions. Showing the exact past mistake works better than abstract rules.
Keep the orchestrator thin, keep sub-agents lean, and make the agent show its work so bad numbers are easy to spot.
Curious whether others have found similar accuracy patterns with Rovo — what's worked for you?