What it does
What the automation does
Cross-project status reports combines data from Jira (tasks, epics, sprints), Asana (projects, subtasks, due dates) and Runn (resource planning, team utilization), turns it into a weekly or daily portfolio report. The AI agent reads raw data, highlights key changes, anomalies and risks, and forms a narrative — coherent text, not a table of numbers.
What goes into the report
- Project progress. Completion percentage, burn rate, deviation from plan.
- Delays and blockers. Tasks overdue during the week; tasks marked blocked.
- Risks. The AI agent compares current velocity against the plan, highlights projects trending toward falling behind before the deadline becomes hard.
- Team workload. From Runn — who is overloaded, where there is idle capacity, where overbooked.
- Scope changes. New tasks, shifted deadlines, changes in estimation.
- Executive summary. 3-5 sentences for the manager: what matters, what requires a decision, where we are heading.
- Comparison with the previous period. Week-over-week progress, rolling trends for the month.
Formats and delivery channels
The report goes to Slack (thread in the PMO channel), email to managers, Notion or Confluence as a page, or PDF for clients. One report — multiple recipients with different levels of detail: executive summary for the CEO, full version for PMO, client-facing version with internal metrics filtered out for the client.
Triggers and schedule
The report is generated on a cron schedule (weekly digest every Monday at 9:00) or by a trigger — a button press in Slack, a call from Notion, an event in Jira (P0 bug), a budget overrun in Runn (team load 90%+), a missed deadline in Asana. In trigger scenarios, the AI agent produces not a weekly overview but an alert: a short report on the anomaly with recommendations. The combination of schedule and triggers covers most PMO visibility requests.
Typical configuration options
#### Solo PMO / 1-5 projects
For freelancers, solo PMs and small teams where one person manages 1-5 parallel projects. The automation pulls data from a single source (Asana or Jira), generates a weekly digest in Markdown, and sends it to a personal Slack or email. Focus on personal overview and outstanding items. Setup — 1 working day, including auth and the prompt template. The AI agent on an AI model runs via a cron trigger once a week. No additional hosting, no resource planning — Runn is not needed here. Infrastructure — GitHub Actions or AWS Lambda in the free tier.
#### SMB PMO / 6-30 projects
For agencies and SaaS teams of 6-30 people with a portfolio of 6-30 projects. All three systems are connected: Jira (development), Asana (design, marketing), Runn (resources). The AI agent groups the report by type: client projects, internal initiatives, R&D. A separate section covers capacity alerts from Runn. The report goes to two channels: executive summary for the manager, full version for PMO. Client-facing versions are available with internal details filtered. Setup — 2-3 working days, including project mapping between systems, prompt tuning, and template configuration.
#### Enterprise PMO / 30+ projects
For companies with a PMO office and a portfolio of 30+ projects. Hierarchy: programs → projects → epics. The report is produced in cascades: program-level for C-suite, project-level for program managers, tactical for teams. The AI agent highlights cross-project dependencies (dependencies between projects from different tracks) and proactively surfaces escalation risks. Integration with a BI system for historical trends, report versioning in Notion or Confluence. Setup — 2-3 weeks, including the role-based access model, review process, and RBAC for client-facing versions.
How it works
How it works
Architecture
Automation — a custom-code solution (Python or TypeScript), runs in 5 steps on a schedule (cron) or by trigger:
- Extraction. The script calls the Jira, Asana, and Runn APIs, fetches data for a specified period (week or day). OAuth tokens from a PMO account or service account are used.
- Normalization. Data from the three systems is normalized to a unified schema:
project_id,status,owner,deadline,progress,risk_signal. Project mapping across systems — by custom ID or naming convention. - Analysis. An AI agent on an AI model reads the normalized data, compares it with last week's data, identifies deltas, anomalies, and risks.
- Generation. The same AI agent writes the narrative: executive summary, project sections, risk list, recommendations. Structured output is used — a JSON schema for the report, markdown for text.
- Delivery. The report is delivered to Slack, email, Notion, or PDF according to rules defined in the config.
AI analysis steps
The AI agent doesn't just format data — it performs 4 types of analysis:
- Delta analysis. Week-over-week progress comparison: what sped up, what slowed down, which projects show a stable rate.
- Anomaly detection. Projects with an unusually slow burn rate, unexpectedly high number of blocked tasks, sharp scope spikes, teams overloaded at 120%+.
- Risk forecasting. Extrapolation of the current pace: whether the project will meet its deadline at the current rate. A proactive signal before the deadline turns red.
- Summarization. Condensing dozens of projects and hundreds of tasks into 3-5 priorities that require PMO attention in the coming week.
Output quality
The JSON schema strictly fixes the report structure — the AI agent cannot "forget" a section or add a fabricated field. Text fields go through post-processing: hallucination checks (the AI agent references a project not present in the data), tone checks, length checks. For critical reports (client-facing), a human-in-the-loop is configured — the PMO sees the draft in Slack, makes 1-2 edits, and approves it for sending to the client.
Alternative approaches
Status reports can be produced in three ways — each with its own trade-off between control, speed, and cost.
Approach | Time per report | Flexibility | Control | Entry threshold |
|---|---|---|---|---|
Manual collection | 5+ hours | Maximum | Full | Zero |
No-code (Zapier, Make) | 30-60 minutes + editing | Low | Medium | Low |
AI automation (custom code) | 5 seconds | High | High | Medium |
Manual collection — the PMO copies data from three systems into a Google Doc, reviews, and formats it. Quality depends on fatigue; by the end of the week the report is perfunctory. Full control over every line, but it costs a real working day every week.
The no-code approach (Zapier, Make.com) pulls data on a schedule but cannot analyze — it outputs a table or bullet list. Narrative and risk conclusions are still written manually. Saves 30-40% of time, does not solve the analysis quality problem. Suitable for dashboards, not for narrative reports.
AI automation produces narrative, risk forecasting, and summarization in seconds. Requires custom code, hosting, and prompt configuration. Control — via the report's JSON schema (structure is fixed) and regression tests on historical data. Maintenance cost is higher than no-code, but lower than PMO manual time.
Automation does not replace PMO judgment — final decisions on prioritization, resources, and client communication remain with the human. The AI agent prepares the material for a decision, not the decision itself.
Security and compliance
Data from Jira, Asana, and Runn contains business-sensitive information: clients, deadlines, rates, employee names. The custom-code solution is deployed in the customer's infrastructure (on-premise, Docker, private cloud) — data does not reach third-party services beyond what is required for the AI request. OAuth tokens are stored in a secret manager (Vault, AWS Secrets Manager). For companies with GDPR or SOC2 requirements — reports are stored in a controlled environment (Notion workspace with SSO, Confluence with RBAC); the prompt is configured to redact PII and sensitive fields before sending to AI. For compliance-demanding industries (fintech, healthcare), a self-hosted AI model is used instead of a public API — data does not leave the perimeter. Automation logs every request: who requested it, what data the AI agent read, what report was produced. Log retention is configured separately.
Prerequisites
What you need before launch
Basic requirements
- API access. A working PMO account or service account in Jira, Asana, and Runn with read permissions for projects and tasks.
- OAuth or API tokens. For each system — a personal access token or OAuth app registered in the admin panel.
- Delivery channel. Slack workspace, working email, or Notion/Confluence workspace with write permissions.
- Unified project schema. Consistent project IDs across systems, or a mapping table (manual or via naming convention).
- AI model. An AI model API key (or equivalent) with a quota sufficient for 1-4 runs per week.
- A place to run the script. A cron server, AWS Lambda, GitHub Actions, or a local workflow engine — any headless runtime with API access.
What is configured separately
- Report template (markdown + JSON schema) — PMO defines the section structure and field formats.
- Delivery rules: who receives the executive summary, who gets the full version, who gets the client-facing version.
- Risk thresholds: from what percentage of delay to flag as a risk.
- List of ignored projects (internal chores, archived).
- Report language (EN/RU/UK/ES) and tone (executive, technical, friendly).
Potential pitfalls
- Different status flows across systems. Jira has one set of statuses, Asana another, Runn a third. Without explicit mapping ("Done" in Jira == "Complete" in Asana == "Delivered" in Runn), the AI agent will get a confusing picture. Solution — a status mapping table before launch.
- Duplicate projects. The same project is registered in Jira and in Asana under different IDs. The AI agent sees two projects, and the report is duplicated. Solution — a unique project tag in each system or a mapping file.
- Expecting a perfect narrative from the first run. The first version of the prompt either produces overly generic text or overloads with details. You need 3-5 iterations of prompt tuning with real PMO data. Allow 1 week for calibration before production.
- Rate limits. Jira and Asana have limits on the number of requests per minute; with 30+ projects you may hit them. Solution — caching, batch requests, exponential backoff.
- Data changes after collection. The report is built on a snapshot at the time of the run. If PMO edits tasks during generation, a desync is possible. Solution — an atomic pull for the period with a fixed timestamp recorded in the report.
Pain points
- Too Many Tools Without Integration
- Time on Manual Reports
- Constant context switching
FAQ
How long does implementation take?
For a solo setup (1 source, simple report) — 1 business day. For SMB PMO with three systems (Jira + Asana + Runn) and custom templates — 2-3 business days. For Enterprise with program hierarchy, RBAC, and BI integration — 2-3 weeks. The bulk of the time goes not to code but to mapping statuses between systems and iterating the prompt to match company terminology.
What if we don't have Jira or Runn?
Automation is modular. If you only use Asana — we connect one source, the report is built from it. If ClickUp, Linear, or Monday is used instead of Runn — we adapt to that tracker's API. Basic requirements: one issue tracker with an API and one delivery channel (Slack, email, Notion). Runn is only needed for team capacity alerts; without it, the report focuses on progress and risks.
What can break?
Three typical failure sources. First — API rate limits of trackers with a large portfolio (resolved with caching and retry). Second — API changes from providers (Atlassian, Asana) without prior notice; monitoring and regression tests are needed. Third — prompt quality drift when the PMO project structure changes; weekly review of the first runs is needed. Automation does not replace PMO — the final decision rests with a human.
Does this work in our industry?
Automation suits agencies (marketing, dev, design), SaaS teams, consulting, in-house IT — anywhere a PMO manages a project portfolio and collects statuses weekly. Horizontally applicable to any company of 5-50 people with 5+ concurrent projects. For production lines, construction projects, or agro-holdings, metric adaptation is required — there is no out-of-the-box solution for these industries.
How accurate is the risk analysis?
The AI agent calculates risk based on task completion velocity, the number of blocked items, and the weekly delta. This is a proactive signal — not a prediction, but an early warning. Accuracy depends on data quality: if the PMO does not update Jira regularly, risk is calculated from an incomplete picture. The recommendation is to use the AI assessment as a reason for review, not as an automatic decision.
Can the report format be customized?
Yes. The format is defined by a JSON schema and a markdown template, both are configurable. You can add client-facing sections, remove financial metrics, change the report language (EN/RU/UK/ES), and adjust the tone (executive, technical, friendly). Changing the template does not require rewriting code — the config is edited. Template versioning — via git.
What data does the AI agent see?
Normalized data from issue trackers: project name, status, owner, deadline, progress, comments-summary. Financial data from Runn (rates) is filtered before being sent to AI. For companies with GDPR or SOC2 requirements, the prompt is configured to redact PII. The custom-code solution is deployed in the client's infrastructure — data does not leave to external services beyond what is necessary for the AI call.
Want this in your business?
Book a free audit — we'll show how this automation will work for you.