The Citadel · 30 min mission
Weekly Executive Reporting Factory with Copilot, Jira, Confluence, Rovo, and Tableau
Build the weekly reporting workflow as a source-backed operating console: evidence first, Confluence draft second, AI review third, approval last.
On this page
Build outcome
Build a personal, no-code weekly reporting factory for a non-developer program leader — not a company-wide platform. It collects evidence from Outlook, Jira, Confluence, and Tableau, stages it in approved storage, assembles a Confluence-first draft, uses Atlassian Rovo and Microsoft 365 Copilot to review and tighten the wording, then a human approves and publishes a reviewed Confluence report as the single record of truth.
The mental model: the factory is four single-responsibility agents over deterministic flows. A Data-Collector gathers and cites evidence; a Report-Drafter writes the draft from that evidence only; a QA-Reviewer checks the draft against the evidence; and a Report-Orchestrator runs the three in order, on a schedule, and hands the result to a human approval. Flows move and gate data; agents read, reason, and write words; nothing publishes before review.
The audience is non-developers — business users, TPMs, delivery managers, operations leads, and program leaders who can configure enterprise tools but do not want to write code or maintain middleware. Build it at the highest of three levels your access allows: a scheduled prompt (draft only), the tested Power Automate flow MVP, or the full four-agent factory.
How to read this guide
Work top to bottom — each section sets up the next. Concept: the factory, the two diagrams, and the agent-vs-prompt-vs-flow decision. Set up the sources (Phases 0–5): the Jira filters, Tableau views, Outlook folders, and Confluence workspace each agent reads. Build the flows (Phase 6): the deterministic spine that moves and gates data. Build the agent layer: the four Copilot Studio agents that reason over the flows. Assemble, review, and approve (Phases 7–9). Automate and verify (Phase 10): schedule the orchestrator, run it once, and confirm the scheduled run fired.
What you are building
Build this
Scheduled Power Automate cloud flows, managed connections, Jira saved filters, Confluence templates and labels, Tableau custom-view subscriptions, Outlook reporting folders, four Copilot Studio agents (Data-Collector, Report-Drafter, QA-Reviewer, Report-Orchestrator), Rovo/Copilot review, and an approval record.
Do not build this
Do not design this around a custom reporting platform, Azure Functions, Azure Logic Apps, Azure AI Foundry, Azure AI Studio, Azure OpenAI, Microsoft Graph API development, custom Python scripts, custom backend services, LangChain, AutoGen, CrewAI, custom MCP servers, direct REST API implementation, custom OAuth work, or developer-maintained middleware.
The factory, end to end
Architecture diagram
The Confluence-first reporting factory
Scheduled collection stages evidence, builds a Confluence draft, runs Rovo and Copilot refinement, then waits at a human approval gate before the final report becomes the archive record. This is the infrastructure view; the agent reasoning layer is shown in the separate handoff graph.
The reasoning layer
Four-agent orchestration
Agent handoff graph
How the scheduled flow, the parent orchestrator, and its three child agents pass typed payloads end to end. Evidence flows right across four lanes; the only backward edge is the single QA → Drafter fix loop.
- Agent / orchestrator
- Tool-flow / source
- Human-approval gate
- Published record
- QA → Drafter fix loop
Agent, prompt, or flow?
Pick the lowest-autonomy option that does the job — do not default to "make an agent." A flow moves and gates data: it runs unattended on a clock, calls connectors, retries, and keeps run history. An agent reads, reasons, and writes words: judgement and synthesis, reused by name with a stable input/output contract. A saved prompt is the throwaway, one-shot version of an agent. The orchestrator never performs a side effect itself — it asks a flow to.
| Pipeline step | Build it as | Why |
|---|---|---|
| Weekly cadence kick-off | Scheduled flow | Must fire unattended every week with durable run history. |
| Create run folder + init variables | Flow | Deterministic, no judgement. |
| Collect Jira facts | Flow tool, orchestrated by Data-Collector | The connector exposes no JQL input, so the flow reads the filter-subscription emails; the agent only picks the scope. |
| Collect Tableau snapshots | Flow (Flow B) | Attachment handling is deterministic. |
| Collect Outlook evidence | Flow tool | Folder read is deterministic; the agent picks the scope. |
| Pull prior Confluence context | Flow tool | Read-only connector actions exist and return full page body. |
| Normalize all evidence into one bundle | Agent (Data-Collector) | Cross-source synthesis into a typed contract, reused weekly. |
| Draft the report | Agent (Report-Drafter) | Judgement and wording, source-constrained, reused. |
| QA the draft | Agent (QA-Reviewer) | Independent judgement; must stay separate from the drafter. |
| Human approval | Flow (Approvals) | Durable, audited, not conversational-only. |
| Create/update the Confluence page | Not the connector — manual template, Atlassian Automation, or a governed Rovo agent | The connector has no create/update action. |
| Run weekly, tie it together | Agent (Report-Orchestrator) triggered by a scheduled flow | The parent fans out to the workers; the clock stays a flow. |
Reporting Factory Planner
Reporting factory planner
Choose the smallest weekly reporting factory that can work
Select your build level, source inputs, Confluence page creation path, and approval route. Copy the generated checklist into your Confluence build page before configuring flows.
Source inputs
Selected operating model
- Build level
- One program, core Jira filters, one Confluence template, Tableau snapshots, and a single approval owner.
- Page creation
- Power Automate prepares the evidence package; the owner creates the Confluence page from the template.
- Best fallback when tenant policy blocks write automation.
- Approval
- Flow C sends an approval card and records approve/reject comments in run history.
Build checklist
- Create Confluence parent pages, template, labels, and report archive
- Create weekly staging folder pattern: Program / YYYY-WW / source folders
- Require human review before replacing draft/review labels with published
- Prepare bounded Jira saved filters and dashboard gadgets
- Subscribe to Tableau custom views and route snapshot emails
- Save Rovo compare, evidence-check, and executive-summary prompts in Confluence
- Treat page creation as a manual review step until write automation is approved
What the weekly run will collect
Jira filters
Blockers, overdue items, aging work, defects, release scope
Tableau snapshots
Custom-view PNG/PDF snapshots and dashboard links
Rovo review
Compare, summarize, tighten, and flag weak claims in Confluence/Jira
Executive Cockpit / Guided Workshop / Command Center Narrative
Reporting factory console
Choose the view that matches the job
Cockpit for scanning, workshop for building one connected path, command center for explaining the system. The same Confluence-first architecture sits behind all three.
Tick each area as you set it up. The badge above and the copyable record below update live — paste the record into your build-plan page so next week you know exactly what is still open.
Set up the sources
Phases 0–5 prepare the evidence each agent reads. The console above teaches the operating path; the artifacts below are the reusable pieces you create in each system before building Flow A.
| Area | Ready when | Owner |
|---|---|---|
| Power Automate | You can create scheduled cloud flows, manage connections, use Office 365 Outlook, SharePoint/OneDrive, Jira, and Approvals/Teams actions. | Report owner + platform admin if DLP policy blocks a connector. |
| Copilot Studio | You can create agents in a dev environment with an unmanaged solution, turn on generative orchestration, and publish to Teams (a Microsoft 365 Copilot or Copilot Studio User License with Copilot Credits allocated). | Report owner + Power Platform admin. |
| Confluence | You can create pages/templates/labels in the reporting space, or have an approved Atlassian Automation/admin-owned draft creation path. | Confluence space admin or reporting owner. |
| Jira | You can create/share saved filters and dashboards; the flow owner can read the same project/filter data. | Jira project admin or delivery owner. |
| Tableau | You can save custom views, subscribe to views, receive PNG/PDF where permissions allow, and route subscription mail. | Dashboard owner or BI owner. |
| Outlook | You can create real folders and rules for project mail, leadership mail, and Tableau KPI feeds. | Report owner. |
| Rovo / Copilot | Licensed users can use approved AI features inside Atlassian and Microsoft 365 tools, with source review. | Report owner + tenant/product admins. |
| Content type | Preferred handling | Review rule |
|---|---|---|
| Jira issue status | Link issue/filter/dashboard. Summarize only fields relevant to delivery risk. | Verify the issue is still current before reporting. |
| Tableau KPI | Link live dashboard and preserve PNG/PDF snapshot in approved storage. | Confirm custom view, filters, refresh time, and attachment readability. |
| Email evidence | Summarize decisions/follow-ups; link or cite thread only if allowed. | Exclude private, HR, legal, procurement, customer-sensitive, and speculative content unless approved. |
| Confluence history | Link prior report, decision log, action tracker, meeting notes. | Check permissions before linking restricted pages. |
| AI-generated text | Use as draft wording or review notes. | Keep confirmed facts, assumptions, and recommendations separate. |
Phase 0: Governance and feasibility check
Confirm approved tools
In Power Automate, check
Data > Connectionsfor Office 365 Outlook, SharePoint or OneDrive, Jira, Confluence, Approvals, and Teams. If a connector is blocked by DLP policy, stop and record the fallback.Provision the agent environment
In Copilot Studio (
copilotstudio.microsoft.com), confirm you can build in a dev environment with an unmanaged solution namedWeeklyExecReporting. Publishing needs a Microsoft 365 Copilot license, or a Copilot Studio User License with Copilot Credits allocated (metering is in Copilot Credits, not "messages"). For autonomous/recurrence triggers, ask the admin to enable solution-aware cloud flow sharing in the environment.Choose the Confluence write path
Pick one: manual template launcher, Atlassian Automation Publish new page rule, a governed admin-owned draft path, or a governed Rovo agent. Do not assume the Microsoft Confluence connector creates pages, and do not ask the business user to configure custom OAuth or developer-owned middleware.
Name owners
Assign owners for Jira filters, Tableau custom views, Confluence template, Power Automate connections, the Copilot Studio agents, the approval route, and the weekly review.
Phase 1: Define the weekly report product
Create the build plan page
In Confluence, create
Reporting Factory Build Planunder the reporting hub. Add a table: Section, Source of truth, Owner, Publish rule.Set source rules
Jira owns delivery state. Tableau owns KPI values. Outlook owns communication evidence. Confluence owns history, decisions, actions, and the final archive.
Set the naming convention
Pages:
Weekly Executive Report | Program | YYYY-WW. Run folders:WeeklyExec/{Program}/{YYYY-WW}/01_Email,02_Jira,03_Confluence,04_Tableau,05_Final-Draft. Agents:WeeklyExec-<Role>(e.g.WeeklyExec-DataCollector). Flows:WeeklyExec-Flow-A-Orchestrator. Keep it consistent so agent orchestration descriptions stay unambiguous.
Phase 2: Prepare Jira saved filters and dashboard
Create saved filters
Jira >
Filters>View all work items> switch to JQL/advanced search > paste query > run > set columnsKey,Summary,Status,Priority,Assignee,Due date,Fix version,Updated> save filter. Bound every query by project plusstatusCategory/fixVersion/date — the Jira connector rejects unbounded JQL with400 Bad Request. These filters feed the weekly run as Jira filter-subscription emails (set up in Phase 6), not a direct connector JQL call — the connector exposes no JQL input.Share filters before dashboards
Open the saved filter details, update
Shares, add the right group/project role, then save. If sharing is missing, ask for the JiraCreate Shared Objectspermission.Create the dashboard
Jira >
Dashboards>Create dashboard> nameWeekly Executive Delivery Dashboard - Program> share viewers/editors >Edit>Add gadget.Use executive gadgets
Use Filter Results for blockers/overdue/defects; Two Dimensional Filter Statistics for priority by status; Created vs Resolved for defect flow; Average Age or Time Since Work Items for stuck work; Road Map for release scope.
JQL Query Builder
JQL Query Builder
Build a saved filter query before copying it into Jira
Choose the executive-reporting signal, tune the project/release scope, then copy the JQL and the subscription setup card. The output is designed for saved filters, dashboard gadgets, and Flow A intake.
Scope controls
Generated JQL
01project = ABC AND statusCategory != Done02AND (priority in (Highest, High)03OR labels in (exec-attention, escalation, decision-needed)04OR due <= endOfWeek()05OR status in ("Blocked", "On Hold"))06ORDER BY priority DESC, due ASC, updated ASC
Supports
Feeds executive summary, decisions needed, and stakeholder attention.
Subscription
[Jira Weekly Filter][Leadership]
Gadget
Filter Results with owner, due date, source link
Copy this setup card into your build notes
Filter name: Weekly - Leadership attention - ABC Purpose: Feeds executive summary, decisions needed, and stakeholder attention. Dashboard gadget: Filter Results with owner, due date, source link Subscription subject: [Jira Weekly Filter][Leadership] Jira click path: 1. Jira > Filters > View all work items. 2. Switch to JQL / advanced search. 3. Paste the generated JQL and run it. 4. Set columns: Key, Summary, Status, Priority, Assignee, Due date, Fix version, Updated. 5. Save as filter and share with the reporting group. 6. Details > New subscription > send to the reporting mailbox before the Monday flow. Power Automate intake: Read the real Outlook folder Weekly Report - Jira Filters with Get emails (V3). Filter by the subscription subject prefix and save the message body/link into 02_Jira.
Phase 3: Prepare Confluence report workspace
Create the page hierarchy
Confluence > choose reporting space > create
00 Reporting Hub,01 Weekly Reports,02 Decisions,03 Actions,04 Source References,05 Templates and Prompts,99 Archive.Create the weekly template
Space settings > Look and Feel > Templates > Create new template. Add placeholders for program, period, prepared by, previous report, status, summary, risks, decisions, actions, source references, and review notes.
Add launcher and macros
On
00 Reporting Hub, insert/create from template(choose Page, not Live Doc),/content tree,/content report table,/decision report, and/task report.Apply labels
Use
weekly-report, program label,yyyy-ww, and status labels:draft,ready-for-review,published.
Confluence Template Machine
Confluence Template Machine
Generate a weekly report template from your report choices
Pick the report personality, tune sections and metadata, then copy a Confluence-ready template with labels, source discipline, and review gates already baked in.
Page metadata
Section mixer
Generated template
01# Weekly Executive Report | ACME Operations | 2026-W390203**Program / Portfolio:** ACME Operations04**Reporting Period:** 2026-W3905**Prepared By:** Reporting owner06**Report mode:** MVP report07**Status:** Draft / Ready for review / Published08**Previous Report:** [Previous weekly report link]0910> Report rule: Fast weekly operating report. Keep claims source-backed. Put uncertainty in Review Notes.1112## 1. Executive Summary13- [Material change, risk, or decision. Keep to three to five bullets.]14- [Confirmed fact with source link.]15- [Needs confirmation: mark uncertain items here instead of overstating.]1617## 2. Progress This Week18- [Progress update with Jira or Confluence source.]19- [Scope, date, or owner change if material.]2021## 4. KPI Snapshot22| KPI | Current | Previous | Trend | Tableau source |23|---|---:|---:|---|---|24| Delivery confidence | [Value] | [Value] | [Up/Down/Flat] | [Custom view / snapshot link] |25| Open blocker count | [Value] | [Value] | [Up/Down/Flat] | [Custom view / snapshot link] |26| Defect escape rate | [Value] | [Value] | [Up/Down/Flat] | [Custom view / snapshot link] |2728**KPI check:** Confirm custom view, filter context, snapshot date, data refresh time, and live dashboard link before using the number.2930## 5. Risks and Blockers31| Risk / Blocker | Impact | Owner | Mitigation | Escalation Needed | Source |32|---|---|---|---|---|---|33| [Risk] | [Impact] | [Owner] | [Mitigation] | Yes/No | [Jira/Confluence/Email link] |3435## 6. Decisions Needed36| Decision | Why now | Recommendation | Owner | Needed by | Source |37|---|---|---|---|---|---|38| [Decision] | [Why] | [Recommendation] | [Owner] | [Date] | [Link] |3940## 8. Next Week Focus41- [Priority 1]42- [Priority 2]43- [Priority 3]4445## 9. Action Table46| Action | Owner | Due date | Status | Source |47|---|---|---|---|---|48| [Action] | [Owner] | [Date] | [Open/In progress/Done] | [Link] |4950## 10. Source References51### Jira52- [Weekly filters, dashboard, and subscription email folder]5354### Confluence55- [Previous report, decision log, action tracker, meeting notes]5657### Tableau58- [Custom view, snapshot folder, refresh note]5960### Outlook61- [Approved thread references only]6263## 11. Review Notes64- [Evidence gaps]65- [Excluded sensitive or unsupported claims]66- [Reviewer comments]
Labels
weekly-report, acme-operations, 2026-w39, draft, ready-for-review, mvp-report
Template mode
Fast weekly operating report
Confluence setup card
Page title: Weekly Executive Report | ACME Operations | 2026-W39 Labels: weekly-report, acme-operations, 2026-w39, draft, ready-for-review, mvp-report Parent page: 01 Weekly Reports > current year Confluence click path: 1. Space settings > Look and Feel > Templates > Create new template. 2. Paste the generated template body. 3. Add labels weekly-report, program label, yyyy-ww, draft/ready-for-review/published. 4. On 00 Reporting Hub, insert /create from template and point it to this template. 5. Add /content report table filtered by weekly-report and program label.
Phase 4: Prepare Tableau subscriptions and KPI snapshots
Save custom views
Open Tableau dashboard > apply exact reporting filters (the
Save Custom Viewbutton only appears in the toolbar after you change the view) > toolbarSave Custom View> nameWeekly Exec KPI - Scope - Last Completed Week> make visible if your role/site allows.Subscribe to the custom view
Watch>Subscriptions> selectCurrent View> choose PNG, PDF attachment, or both > subject prefix[Tableau KPI][Weekly Exec][Program]> schedule after refresh plus a buffer. Live connections follow the Data Freshness Policy; extract-backed dashboards follow their extract refresh schedule — time the subscription against whichever applies.Route evidence mail
In Outlook, create a rule for the Tableau sender/subject prefix into
Weekly KPI Feeds/Tableau. Flow B watches that real folder.Verify the snapshot
Check current cycle, custom view name, dashboard link, visible filters, data freshness, quality warnings, and attachment readability.
Phase 5: Prepare Outlook intake folders and searches
Create real folders
Outlook > create folders
Weekly Report - Project Mail,Weekly Report - Leadership,Weekly Report - Jira Filters, andWeekly KPI Feeds. Power Automate reads real folders, not Search Folders — Search Folders are only for human review and are not selectable in the flow folder picker.Create routing rules
Right-click an example message > Rules > Create rule > choose destination folder. For richer rules: Settings > Mail > Rules >
Add new rule> add conditions, actions, exceptions, order, and stop-processing behavior. TheWhen a new email arrives (V3)trigger fires only on arrival, so the rule must run server-side at delivery — moving mail into the folder later will not trigger the flow.Add exclusions
Exclude legal, HR, procurement, confidential, private side conversations, and customer-sensitive content unless your reporting policy allows it.
Build the Power Automate flows
The flows are the deterministic spine — they move and gate data on a schedule, with run history and failure handling. The agent layer in the next section reasons over these flows; it does not replace them.
Phase 6: Build Power Automate flows
Flow A: Weekly Main Orchestrator
Power Automate > Create > Scheduled cloud flow > Monday 07:00. Keep the recurrence
Start timeconsistent with the create-dialogStartingvalue. InitializereportWeek,runId,stagingPath,draftTitle,approver. Create source folders. Get Outlook messages, Jira issues, previous Confluence context, and Tableau snapshots. Prepare draft package. Start approval.Wire Jira collection explicitly
Primary no-code path: use Jira saved filter subscriptions as the collection feed. In Jira, open each saved filter >
Details>New subscriptions; schedule it before the Monday run and send it to the reporting mailbox with a subject prefix such as[Jira Weekly Filter][Blockers]. In Flow A, add Office 365 OutlookGet emails (V3)scoped to the real folderWeekly Report - Jira Filters; filter by subject prefix and received time (the Subject Filter only matches the first 250 items, so setTopexplicitly and use the Search Query field for busy folders); save each email body/link set into02_Jirawith filter name, run ID, result count if visible, dashboard link, and collection time.Use the Jira connector only after a tenant test
Microsoft documents Jira action
Get list of issues(ListIssues) as returning issues using JQL, andGet list of Filters(ListFiltersorListFilters_V2) as returning accessible filters. In practice the publishedGet list of issuesaction exposes only theJira instanceparameter — no maker-facing JQL input — so treatGet list of Filtersas an access check, not issue retrieval. The only first-class JQL-input surface is the event triggerWhen a new issue is returned by a JQL query(OnNewIssueJQL), which is limited to the latest 100 results. If your tenant exposes a bounded JQL/filter input forGet list of issues, run one action per saved filter and enforce a review limit, usually 50 issues. If it does not, keep the filter-subscription email path as the supported no-code source. Atlassian sends only the first 200 filter results in subscription emails, so filters above that limit must use dashboard links/manual review rather than email as complete evidence. Do not confuse the two numbers: 200 = the filter-subscription email cap; 100 = the JQL trigger window.Flow B: Tableau Intake
Create automated cloud flow from Office 365 Outlook
When a new email arrives (V3)inWeekly KPI Feeds/Tableau. Save PNG/PDF attachments and metadata into04_Tableau; move message to Processed.Flow C: Approval / Review
Use
Start and wait for an approvaland set the Approval type selector (the standalone "first to respond" action is gone). Include draft link, evidence folder, Jira dashboard, Tableau snapshot folder, checklist, and approve/reject comments. Leave rejected drafts inneeds-review.Add failure handling
Put main work in
Scope - Main processing; addScope - Failure handling; configure run after failed/timed out/skipped; notify owner with run ID, failed phase, and staging folder. Use Flow checker before enabling.
| Flow | Trigger | What it should produce | Failure rule |
|---|---|---|---|
| Flow A: Weekly Main Orchestrator | Scheduled recurrence Monday 07:00 after data refresh/cutoff. | Run folder, source links/files, draft package or Confluence draft, approval request. | Missing required source blocks publish and creates warning note. |
| Flow B: Tableau Intake | New Tableau email in monitored Outlook folder. | Snapshot attachment, dashboard link, metadata file, processed email. | No attachment keeps dashboard link and logs warning; do not invent chart evidence. |
| Flow C: Approval / Review | Called by Flow A or manual owner trigger. | Approval decision, reviewer comments, status update or publish instruction. | Timeout/rejection leaves page in draft or needs-review. |
Build the four agents in Copilot Studio
The agents are an additive reason → draft → QA layer between "evidence staged" and "approval sent." They perform no write the flows did not already perform, and they never publish to Confluence. Build all four in Microsoft Copilot Studio (not the lightweight Agent Builder inside the Microsoft 365 Copilot app — you need triggers, tools, and multi-agent), inside the unmanaged solution WeeklyExecReporting, using Authenticate with Microsoft so each connector read runs in the signed-in owner's permission context. The three workers are child agents of the orchestrator (GA, in-environment, with typed inputs/outputs) — not externally-hosted A2A agents. Reusable tools live on the Tools page (formerly "Library").
| Agent | Single responsibility | Build surface | Inputs → Outputs | Connected tools |
|---|---|---|---|---|
| WeeklyExec-DataCollector | Gather and normalize the week's evidence — and collect nothing it cannot cite. | Child agent | program, reportWeek, stagingPath, jiraFilterScope → evidenceBundle (JSON) | GetJiraWeeklyFacts, GetOutlookEvidence, GetConfluenceContext (read-only), Tableau snapshot folder |
| WeeklyExec-ReportDrafter | Turn the evidence bundle into a source-linked draft — write nothing the bundle does not support. | Child agent (no fetch tools) | evidenceBundle, reportMode, audience → reportDraft (markdown) + claimMap (JSON) | None — reasons only over the bundle; "Allow ungrounded responses" off |
| WeeklyExec-QAReviewer | Adversarially check the draft against the evidence; return pass/fail + fix list, change no wording. | Child agent (no fetch tools) | reportDraft, claimMap, evidenceBundle → qaVerdict (JSON) | None — independent of the drafter |
| WeeklyExec-ReportOrchestrator | Run the three workers in order, resolve outputs into one review-ready draft, hand to approval. | Parent agent, published to Teams | program, reportWeek, reportMode, jiraFilterScope → staged finalDraft + qaVerdict + approval | The three child agents, StageFinalDraft, StartApproval (Flow C) |
Build the four agents
Create the orchestrator and solution
Copilot Studio > create agent
WeeklyExec-ReportOrchestratorinside the unmanaged solutionWeeklyExecReportingin your dev environment. OnOverview, turn generative orchestration on (required for triggers, MCP, and connected agents) and paste the orchestrator Instructions (use the generator below).Add each worker as a child agent
Open the orchestrator > Agents page > Add an agent > New child agent > name it
WeeklyExec-DataCollector(then-ReportDrafter, then-QAReviewer) > keep When will this be used? → The agent chooses, based on description > paste the Description (the orchestration signal) and Instructions > set the typed Inputs/Outputs > Save > set Enabled on.Attach the Collector's tool-flows
On the Data-Collector, open the Tools page > Add a tool > Flow > add
GetJiraWeeklyFacts,GetOutlookEvidence, andGetConfluenceContext. Each is a published agent flow using theWhen an agent calls the flowtrigger andRespond to the agentaction; set a precise Name + Description (the description drives tool selection) and map inputs.GetJiraWeeklyFactsdefaults to reading the Jira filter-subscription emails (Get emails (V3)), not a direct JQL call.Lock down drafting and QA
On the Report-Drafter and QA-Reviewer, turn off "Allow ungrounded responses" so a turn with no tool or knowledge cannot answer from general knowledge. Keep the QA-Reviewer a separate agent from the Drafter — the reviewer must not mark its own homework.
Test with the activity map
Use the Test your agent panel and open the activity map to watch the orchestration plan: which child agent was chosen, its inputs/outputs, timings, and errors. Restart with Start new test session.
Agent Spec Generator
Agent spec builder
Generate a paste-ready Copilot Studio agent spec
Pick one of the four reporting-factory agents, set your program key, report mode, in-scope sources, and the grounding gate. The card on the right regenerates a full spec — name, build surface, description, instructions, typed I/O, tools, and the exact click-path — that you copy straight into Copilot Studio.
WeeklyExec-DataCollector
Child agentGather and normalize the week's evidence from Jira, Tableau, Outlook, and prior Confluence into one validated bundle — and collect nothing it cannot cite.
Why this surface: Collection is deterministic and lives in agent-flow tools; the agent only chooses scope and assembles + validates the bundle.
Description (orchestration signal)
Use this agent to collect the weekly evidence bundle for ACME-OPS and a reporting week. It reads Jira, Tableau, Outlook, Confluence in scope, then returns one validated JSON evidence bundle with source URLs. It does NOT write the report, judge wording, publish anything, or include any source it cannot link. Inputs: program, reportWeek, stagingPath, jiraFilterScope. Output: evidenceBundle JSON.
Instructions (system prompt)
You are the Data-Collector for a weekly executive reporting factory. Your only job is to gather and normalize evidence into one JSON bundle. You never draft prose, never judge, never publish. Program in scope: ACME-OPS. Sources in scope this run: Jira, Tableau, Outlook, Confluence. Rules: 1. Use ONLY the provided tools and the staged Tableau snapshot folder. Do not use general knowledge to fill in facts. 2. For Jira: call GetJiraWeeklyFacts once per scope in jiraFilterScope. The tool reads the Jira filter-subscription emails (it does not run JQL directly). Keep at most 50 issues per scope. Record key, summary, status, priority, assignee, due, updated, url, and the scope name for every issue. 3. For Outlook: include an item only if it is a decision, action, follow-up, or risk and is allowed to be cited. Exclude anything HR, legal, procurement, customer-sensitive, private, or speculative. Set allowedToCite accordingly. 4. For Tableau: record view name, filters applied, refresh time, snapshot URL, and live dashboard URL. Never invent a KPI value or a chart that is not in the snapshot. 5. For Confluence: read and link the previous report, decision log, and action tracker. You may quote prior page content returned by the tool, but only as context — never copy it forward as this week's facts. 6. Every item MUST carry a source URL or sourceRef. If you cannot cite it, drop it and add the source name to "missing". 7. If a Jira subscription/filter likely exceeded 200 results, or any result was truncated, add a line to "warnings". 8. Output ONLY the evidenceBundle JSON in the contract you were given. No commentary. Strictness: turn OFF "Allow ungrounded responses" so any turn that uses no tool or knowledge is blocked from answering with general knowledge.
Inputs
| Name | Type | Req. |
|---|---|---|
| programProgram/portfolio key, e.g. ACME-OPS | String | Yes |
| reportWeekISO week, format YYYY-WW | String | Yes |
| stagingPathRun folder, WeeklyExec/{program}/{reportWeek} | String | Yes |
| jiraFilterScopeSaved-filter scope (blockers, overdue, defects, leadership-attention) | String | Yes |
Outputs
- evidenceBundle (String, JSON) — typed bundle with jira[], tableau[], email[], confluencePrior[], missing[], warnings[]
Connected tools / sources
- GetJiraWeeklyFacts — Reads the saved-filter subscription emails (Get emails V3 on the Jira-filter Outlook folder). No direct JQL is assumed.
- Tableau snapshot folder (04_Tableau) — Reads KPI snapshots staged by Flow B; optional tableau-mcp read tool for live values (advanced).
- GetOutlookEvidence — Get emails (V3) scoped to the real reporting folder, filtered by subject prefix + received time.
- GetConfluenceContext — Connector reads (GetPagesBySpace + GetPageMetadata, full page body). Read-only — never creates or updates pages.
Click-path to build it
- 1Copilot Studio → open WeeklyExec-ReportOrchestrator
- 2Agents → Add an agent → New child agent
- 3Enter name WeeklyExec-DataCollector; keep "The agent chooses — Based on description"
- 4Paste the Description
- 5Paste the Instructions
- 6Add the Knowledge / Tools listed below
- 7Set Inputs/Outputs under the child-agent detail pane
- 8Save
- 9Enabled: on
Human-approval gate
Block ungrounded answers is ON — the spec turns off "Allow ungrounded responses". A human still approves before anything publishes.
This run
- Program
- ACME-OPS
- Report mode
- Balanced
- Ungrounded
- Blocked
- Sources
- Jira, Tableau, Outlook, Confluence
Assemble, review, and approve
The Report-Drafter produces the content and the QA-Reviewer checks it, but the page itself is still created by the approved write path and published only after a human approves.
Phase 7: Assemble the Confluence draft page
Use the approved page path
Manual MVP: click the create-from-template launcher. Automation path: use the page created/copied by the Atlassian Automation Publish new page rule, a platform-owned governed write path, or an admin-scoped Rovo agent (Create page / Edit / Publish, confirm-before-publish). The Report-Drafter produces the content; the page is created by one of these paths. Page creation stays on the four approved paths — never a hand-built API call.
Fill sources before prose
Add Jira links, Tableau snapshots, previous report, decision/action pages, and approved email references before writing the executive summary. The Data-Collector's
evidenceBundleis the single source of truth the Drafter writes from.Label status
Use
draftwhile assembling,ready-for-reviewbefore approval, andpublishedonly after review.
Phase 8: Add Rovo and Copilot refinement
Run evidence checks
The QA-Reviewer agent runs these automatically against the evidence bundle and claim map: weak claims, missing owners/dates, vague risks, operational noise, sensitive email content, and unsupported KPI interpretation. For the prompt/MVP tier, Rovo and Copilot run the same checks by hand.
Keep AI output reviewable
Copy useful edits into the draft only after confirming source links. The
claimMapties each sentence to a source; mark uncertain claims in Review Notes and keep confirmed facts, assumptions, and recommendations separate.
Prompt Workbench
Generated script
01Tool: Rovo02Goal: Find weak or unsupported claims03Program: ACME-OPS04Reporting period: 2026-W3905Audience: senior leadership06Source scope: current Confluence draft, previous weekly report, Jira dashboard, Tableau snapshots, approved email references0708Task: Find weak or unsupported claims for the weekly executive report.09Return: claim, missing evidence, why it matters, suggested fix, section owner.10Use only the supplied sources. If evidence is missing, say what is missing instead of inferring.11Keep confirmed facts, assumptions, and recommendations separate.12Preserve source names or links where available.13Do not copy sensitive email content into the output; summarize and point to approved references instead.1415Context note: Use inside Confluence or Jira against the draft, previous report, or issue/filter context.
Checklist for this prompt
Phase 9: Add approval and publishing controls
Send the approval package
The orchestrator calls
StartApproval(Flow C). The approval message includes the staged Confluence draft, evidence folder, Jira dashboard, Tableau snapshot folder, the QA verdict, the review checklist, and required decision buttons.Review checklist
Check sources, Tableau filters, current blockers, action owners/dates, sensitive mail exclusions, and whether the summary matches detail sections.
Publish the reviewed page
After approval, replace
draftorready-for-reviewwithpublished, move or link the page under the weekly archive, and use that page for email/PPT outputs.
Automate and verify
This is where the pieces become one running workflow. Schedule the orchestrator, run it once by hand, then confirm the scheduled run fired on its own.
Run the factory on a schedule
Publish the orchestrator to Teams
On
WeeklyExec-ReportOrchestrator> Publish > connect the Teams channel. Teams is required because the pipeline relies on long worker reasoning and asynchronous agent-flow responses, and async callbacks are supported only on Teams — not on the Microsoft 365 Copilot or telephony channels.Build the clock as a scheduled flow
Copilot Studio > Flows > New agent flow (or Power Automate > Scheduled cloud flow). Set Recurrence: every 1 week, Monday 07:00, after the data-refresh buffer — this is Flow A's trigger. Initialize
program,reportWeek(computeYYYY-WW),reportMode,jiraFilterScope,runId,stagingPath.Invoke the orchestrator from the flow
Add the Microsoft Copilot Studio connector action Execute Agent and wait (
ExecuteCopilotAsyncV2): setAgentto the published orchestrator andMessageto a JSON string carryingprogram/reportWeek/reportMode/jiraFilterScope. It returnslastResponse,responses[], andconversationId. Alternatively use the GA agent node ("Run an agent" under AI capabilities). The flow keeps the durable run history, retries, and Flow-A failure scope — which is why the clock stays a flow even though the reasoning is an agent.Run it manually first
In the Teams chat, message the orchestrator: "Run the weekly executive report for ACME-OPS, week 2026-25, risk-heavy." It prompts for any missing input, then runs Data-Collector → Report-Drafter → QA-Reviewer → stage → approval. If the QA verdict fails, the orchestrator returns the fix list to the Report-Drafter once and re-checks before staging; a second failure is staged for a human with a
QA FAILEDnote. Each autonomous fire bills a Copilot Credit, so avoid very frequent recurrences.
Phase 10: Run first weekly test and improve
Dry run with one program
Use four Jira filters, two Tableau custom views, one Outlook folder, one Confluence template, three child agents, and one approver. Trigger the orchestrator manually in Teams and watch the activity map.
Diagnose a broken handoff
If a worker returns nothing, open the activity map, find that worker's step, and check its inputs/outputs — usually a vague child-agent description or a failed tool-flow. Test the tool-flow alone. If the run times out, confirm the orchestrator is on the Teams channel (async callbacks are Teams-only).
Confirm the scheduled run fired
Check the scheduled flow's run history and the agent's Activity page for the next Monday — each trigger and reaction is recorded there. A green run with a staged
05_Final-Draftand an approval request means the cadence works.Measure and fix before expanding
Track manual search time saved, missing evidence, noisy filters, review fixes, and whether a leader can scan the report in under five minutes. Narrow filters/rules, repair custom views, tighten agent descriptions, and document tenant-specific variations before adding more sources.
Weekly operating procedure
Monday 07:00: the scheduled flow starts, creates the run folder, initializes the reporting week, and invokes the Report-Orchestrator.
Monday 07:00-07:20: the Data-Collector pulls Jira filters, Confluence context, Outlook reporting folders, and Tableau subscription attachments into one evidence bundle.
Monday 07:20-07:30: the Report-Drafter writes the draft and the QA-Reviewer checks it; the orchestrator stages the result and prepares the Confluence draft package/page through the approved page path.
Monday 07:30-07:40: the reviewer receives the approval package with the QA verdict.
Monday review window: the owner reviews the QA verdict and draft, fixes any unsupported claims, checks source links, and approves or rejects before publishing.
Three report variants
The baseline above builds the factory. These are the variants worth tuning for once it runs — each changes what leads the executive summary and maps to the Report-Drafter's reportMode.
Email-and-Copilot summary (reportMode: balanced). The baseline mode. Route project and leadership mail into real Outlook folders, use Copilot (or the Data-Collector's Outlook tool) to summarize selected threads, then copy only source-backed, approved points into the draft.
Risk-heavy report (reportMode: risk-heavy). Drive it from the Jira blockers, overdue, stale-in-progress, and leadership-attention filters. Lead each item with risk impact, owner, mitigation, decision needed, and source.
KPI-focused report (reportMode: kpi-focused). Use three Tableau custom views, subscribe to PNG/PDF snapshots, verify filters/refresh/attachments, and link every KPI to its live dashboard.
| Symptom | Likely cause | Fix |
|---|---|---|
| Power Automate connector authentication failure | Expired connection, MFA/conditional access, revoked consent. | Power Automate > Data > Connections > re-authenticate; ask admin about policy if it fails again. |
| Jira filter returns too many issues | Broad project query or no date/status bound. | Add statusCategory, fixVersion, due date, updated date, label, or priority bounds. |
| Jira evidence is incomplete or returns 400 | Filter subscription exceeded the first 200 results, the JQL was unbounded (Jira rejects unbounded queries with 400 Bad Request), an expired Jira API token, or the source folder missed the email. | Bound every query by project plus statusCategory/fixVersion/date, tighten the saved filter, link the Jira dashboard, re-create the Jira connection if the 400 persists (it can mean an expired token), and treat a subscription email as incomplete until manually checked. |
| Confluence page creation fails | Unsupported connector write path or missing permission. | Use the manual template launcher, the Atlassian Automation Publish new page rule, an admin-owned governed draft path, or a governed Rovo agent. |
| Orchestrator runs but a worker returns nothing | Child-agent description too vague, or its tool-flow failed. | Open the activity map, find the worker's step, check inputs/outputs; tighten the child-agent description; test the tool-flow on its own. |
| Agent flow times out / no result returned | Long run on a channel without async callbacks. | Publish the orchestrator to the Teams channel — async callbacks are unsupported on the Microsoft 365 Copilot and telephony channels. |
| Scheduled run did not fire | Flow disabled, trigger auth expired, environment not provisioned, or not published. | Check the flow run history and the agent Activity page; confirm the orchestrator is published and the schedule flow is on. |
| Tableau subscription missing attachment | Permission, admin setting, unsupported object, or email size limit. | Check View/Download permissions, PDF setting, attachment size, and try PNG-only if needed. |
| Tableau snapshot has wrong filters | Subscribed to base view instead of custom view. | Open custom view, confirm filters, recreate subscription to Current View. |
| Outlook folder misses email | Rule order, sender/subject changed, rule did not run at delivery, or broad Search Folder assumption. | Use real folders, inspect rule order, test with new mail (moving old mail will not trigger), adjust prefix/sender conditions. |
| AI summary overstates status | Prompt lacked source constraints, "Allow ungrounded responses" left on, or draft lacked evidence. | Turn off ungrounded responses on the Drafter/QA agents, use the Prompt Workbench source-only/red-team mode, and move unsupported claims to Review Notes. |
| Approval does not trigger | Flow failed before approval, approver value invalid, environment not provisioned. | Open run history, inspect failed action, verify approver email/UPN and approval provisioning. |
| Week | Build | Proof |
|---|---|---|
| Week 1 | Confluence workspace/template, Jira filters/dashboard, Tableau custom views/subscriptions, Outlook folders. | Manual report can be created from template with real evidence links. |
| Week 2 | Flow B Tableau Intake, Flow A Main Orchestrator, staging folders, source collection, failure scope. | Run folder appears with source evidence and warnings where sources are missing. |
| Week 3 | The four Copilot Studio agents, the scheduled flow that invokes the orchestrator, Flow C approval, first dry run, review checklist, optional Copilot Word/PPT output. | A reviewed Confluence page is published from a scheduled run and is reusable for the leadership update. |
Knowledge check
Which path is the safest MVP if Confluence page creation automation is blocked?
Knowledge check
Why are the Report-Drafter and QA-Reviewer built as two separate agents instead of one?
Reach the end and this star joins your charted sky.