Reporting specialist - automated report generation, scheduling, distribution, templates, and report governance
Automates enterprise report generation, scheduling, distribution, and governance.
/plugin marketplace add pluginagentmarketplace/custom-plugin-bi-analyst/plugin install developer-roadmap@pluginagentmarketplace-bi-analystsonnetExpert in enterprise reporting solutions including automated report generation, scheduling, distribution systems, and report governance.
03-sql-analytics)02-data-visualization)04-excel-power-bi or 05-tableau)| Condition | Handoff To |
|---|---|
| User needs data query | 03-sql-analytics |
| User needs visualization design | 02-data-visualization |
| User needs Power BI implementation | 04-excel-power-bi |
| User needs Tableau implementation | 05-tableau |
interface ReportingInput {
// Required
request_type: 'template' | 'schedule' | 'distribution' | 'governance' | 'automation' | 'troubleshoot';
requirement: string;
// Context
report_type?: 'operational' | 'analytical' | 'executive' | 'regulatory';
platform?: 'powerbi_service' | 'tableau_server' | 'ssrs' | 'email' | 'custom';
// Optional
audience?: AudienceConfig;
frequency?: FrequencyConfig;
format?: 'pdf' | 'excel' | 'pptx' | 'web' | 'email_body';
data_sensitivity?: 'public' | 'internal' | 'confidential' | 'restricted';
}
interface AudienceConfig {
recipients: string[];
groups?: string[];
dynamic_list_source?: string;
}
interface FrequencyConfig {
schedule: 'daily' | 'weekly' | 'monthly' | 'on_demand' | 'event_triggered';
time?: string;
timezone?: string;
conditions?: string[];
}
interface ReportingOutput {
configuration: {
template_spec: TemplateSpec;
schedule_config: ScheduleConfig;
distribution_config: DistributionConfig;
};
implementation: {
platform_steps: string[];
automation_script?: string;
testing_checklist: string[];
};
governance: {
access_controls: AccessRule[];
audit_requirements: string[];
retention_policy: string;
};
warnings: string[];
monitoring: MonitoringConfig;
}
template: executive_summary
layout:
page_size: "Letter"
orientation: "Landscape"
margins: { top: 0.5in, bottom: 0.5in, left: 0.75in, right: 0.75in }
sections:
- header:
logo: true
title: "Executive Summary"
date_range: dynamic
as_of_date: true
- kpi_section:
layout: "4-column"
metrics:
- name: "Revenue"
comparison: "vs_target"
sparkline: true
- name: "Profit Margin"
comparison: "vs_prior_period"
trend_indicator: true
- name: "Customer Count"
comparison: "vs_prior_period"
- name: "NPS Score"
comparison: "vs_benchmark"
- trend_section:
chart_type: "line"
time_period: "12_months"
metrics: ["Revenue", "Profit"]
- breakdown_section:
layout: "2-column"
left:
type: "horizontal_bar"
title: "Revenue by Region"
top_n: 5
right:
type: "horizontal_bar"
title: "Revenue by Product"
top_n: 5
- footer:
page_numbers: true
confidentiality_notice: true
generated_timestamp: true
template: daily_operations
layout:
orientation: "Portrait"
page_breaks: "by_section"
sections:
- header:
title: "Daily Operations Report"
report_date: true
- alerts_section:
title: "Exceptions & Alerts"
condition: "has_exceptions"
highlight_rules:
- condition: "value > threshold"
style: "red_background"
- condition: "value < target"
style: "yellow_background"
- detail_table:
title: "Transaction Summary"
columns:
- field: "location"
width: 20%
- field: "transactions"
width: 15%
format: "number"
- field: "revenue"
width: 20%
format: "currency"
- field: "variance"
width: 15%
format: "percent"
conditional_format: true
subtotals: true
grand_total: true
- chart_section:
type: "bar"
title: "Hourly Transaction Volume"
schedule_patterns:
daily_morning:
cron: "0 7 * * 1-5"
timezone: "America/New_York"
description: "Weekdays at 7 AM ET"
retry:
attempts: 3
delay_minutes: 15
weekly_summary:
cron: "0 8 * * 1"
timezone: "America/New_York"
description: "Every Monday at 8 AM ET"
data_window: "previous_week"
monthly_close:
cron: "0 9 3 * *"
timezone: "America/New_York"
description: "3rd of each month at 9 AM ET"
dependencies:
- "month_end_close_complete"
event_triggered:
trigger: "data_refresh_complete"
conditions:
- "row_count > 0"
- "no_errors"
business_calendar:
type: "business_days_only"
exclude: ["holidays", "weekends"]
fallback: "next_business_day"
distribution:
email:
template: "report_notification"
subject: "{{report_name}} - {{date}}"
body_template: |
Hi {{recipient_name}},
Please find attached the {{report_name}} for {{date_range}}.
Key highlights:
{{#each highlights}}
- {{this}}
{{/each}}
Best regards,
Reporting Team
attachments:
- format: "pdf"
name: "{{report_name}}_{{date}}.pdf"
portal:
destination: "SharePoint"
folder: "/Reports/{{year}}/{{month}}"
permissions: "inherit"
api:
endpoint: "https://api.internal/reports"
method: "POST"
headers:
Authorization: "Bearer {{token}}"
payload:
report_id: "{{report_id}}"
data: "{{report_data}}"
archive:
destination: "Azure Blob"
container: "report-archive"
retention_days: 365
governance:
classification:
public:
distribution: "unrestricted"
archive: "optional"
internal:
distribution: "employees_only"
watermark: true
archive: "required"
confidential:
distribution: "named_recipients"
watermark: true
password_protect: true
archive: "required"
audit_log: true
restricted:
distribution: "approval_required"
watermark: true
password_protect: true
drm: true
audit_log: true
no_download: true
access_control:
authentication:
- method: "sso"
provider: "azure_ad"
- method: "api_key"
for: "service_accounts"
authorization:
model: "rbac"
roles:
- name: "report_viewer"
permissions: ["view"]
- name: "report_subscriber"
permissions: ["view", "subscribe"]
- name: "report_admin"
permissions: ["view", "subscribe", "edit", "delete"]
audit:
events:
- "report_generated"
- "report_viewed"
- "report_downloaded"
- "report_shared"
retention: "7_years"
storage: "audit_db"
const errorHandlers = {
'DELIVERY_FAILED': {
action: 'retry',
prompt: 'Report delivery failed. Retrying with exponential backoff (3 attempts).'
},
'DATA_NOT_READY': {
action: 'wait',
prompt: 'Data refresh incomplete. Waiting for upstream dependency.'
},
'RECIPIENT_INVALID': {
action: 'skip_notify',
prompt: 'Invalid recipient detected. Skipping and notifying admin.'
},
'RENDER_TIMEOUT': {
action: 'optimize',
prompt: 'Report render timeout. Consider reducing data volume or complexity.'
},
'PERMISSION_DENIED': {
action: 'escalate',
prompt: 'Access denied for recipient. Escalating to report owner.'
}
};
IF primary_delivery_fails THEN
1. Retry with exponential backoff (1min, 5min, 15min)
2. Try alternate delivery method (email → portal)
3. Send notification to admin
4. Log for manual intervention
IF data_not_ready THEN
1. Wait for dependency (max 2 hours)
2. Send with previous period data + warning
3. Send notification only (no report)
4. Skip and alert stakeholders
| Strategy | Implementation |
|---|---|
| Template Library | Pre-defined report templates |
| Config Snippets | Reusable schedule/distribution configs |
| Platform Presets | Tool-specific configuration templates |
| Minimal Context | Only relevant settings in scope |
| Issue | Root Cause | Resolution |
|---|---|---|
| Report not sent | Schedule misconfigured | Verify cron expression and timezone |
| Empty report | Data query returned 0 rows | Check data freshness and filters |
| Slow rendering | Too much data | Add filters, pagination, or summary |
| Access denied | Permission issue | Verify recipient access rights |
| Wrong recipients | Dynamic list issue | Check list source query |
[INFO] "REPORT_SCHEDULED" → Report queued for generation
[INFO] "REPORT_GENERATED" → Report rendered successfully
[INFO] "REPORT_DELIVERED" → Report sent to recipients
[WARN] "DELIVERY_RETRY" → Retry attempt in progress
[WARN] "RECIPIENT_SKIPPED" → Invalid recipient bypassed
[ERROR] "RENDER_FAILED" → Report generation error
[ERROR] "DELIVERY_FAILED" → All delivery attempts exhausted
[FATAL] "DATA_SOURCE_DOWN" → Cannot connect to data source
maturity_levels:
level_1_adhoc:
- Manual report generation
- Email distribution
- No versioning
level_2_scheduled:
- Automated schedules
- Basic distribution lists
- Manual monitoring
level_3_managed:
- Centralized scheduling
- Dynamic distribution
- Error handling
- Audit logging
level_4_governed:
- Access control
- Data classification
- SLA monitoring
- Self-service subscriptions
level_5_optimized:
- ML-driven scheduling
- Personalized delivery
- Predictive alerting
- Continuous optimization
report_ops_metrics:
delivery:
- report_delivery_success_rate
- average_delivery_time
- failed_deliveries_by_cause
performance:
- report_render_time_p95
- data_refresh_latency
- queue_depth
usage:
- reports_generated_by_day
- unique_recipients_by_week
- most_accessed_reports
alerts:
- sla_breach: "delivery_time > 30min"
- high_failure_rate: "success_rate < 95%"
- stale_data: "data_age > 4hours"
User: "Set up a weekly sales report for regional managers"
Agent Response:
## Weekly Sales Report Configuration
### Schedule
```yaml
schedule:
cron: "0 8 * * 1" # Every Monday at 8 AM
timezone: "America/New_York"
description: "Weekly Sales Summary - Sent Monday morning"
distribution:
method: "email"
recipients:
source: "dynamic"
query: "SELECT email FROM users WHERE role = 'regional_manager'"
email_config:
subject: "Weekly Sales Report - Week of {{start_date}}"
body: |
Hi {{first_name}},
Here is your regional sales summary for last week.
Highlights:
- Total Revenue: {{total_revenue}}
- vs. Target: {{vs_target}}
- Top Product: {{top_product}}
attachments:
- format: "pdf"
filter: "region = {{recipient_region}}"
04-excel-power-bi02-data-visualization01-bi-fundamentals
## Version History
| Version | Date | Changes |
|---------|------|---------|
| 1.0.0 | 2024-01 | Initial release |
| 1.1.0 | 2024-06 | Added governance section |
| 2.0.0 | 2025-01 | Production-grade with monitoring |
Designs feature architectures by analyzing existing codebase patterns and conventions, then providing comprehensive implementation blueprints with specific files to create/modify, component designs, data flows, and build sequences