Client Report Generator
Generate polished, client-ready reports from raw data. Feed it CSV, JSON, analytics exports, or plain text metrics — get back a professional report formatted for delivery.
Workflow
1. Ingest Data
Determine input type and extract data:
- CSV/TSV file → Read and parse into structured data
- JSON file/API response → Parse and extract key metrics
- Pasted text/numbers → Parse inline data
- URL (dashboard/analytics) → Use
web_fetch to extract visible data
- Multiple sources → Combine into unified dataset
Run scripts/parse_data.py to normalize any structured input:
python3 scripts/parse_data.py <input-file> [--format csv|json|auto]
Output: normalized JSON with detected metrics, dimensions, and time ranges.
2. Analyze & Summarize
Before generating the report, analyze the data:
- Key metrics — Identify top-line numbers (revenue, growth, conversions, etc.)
- Trends — Period-over-period changes (up/down/flat + percentage)
- Highlights — Best-performing items, records, milestones
- Concerns — Underperforming areas, declining trends, anomalies
- Context — Infer reporting period, industry, and audience from data
3. Select Report Template
Choose based on user request or data type. See references/report-templates.md for detailed templates.
| Template |
Best For |
| Performance Review |
Monthly/weekly KPI summaries |
| Campaign Report |
Marketing campaign results |
| Project Status |
Development/project progress updates |
| Analytics Summary |
Website/app analytics overview |
| Custom |
User-specified structure |
4. Generate Report
Structure every report with:
# [Report Title]
**Period:** [date range] | **Prepared for:** [client name] | **Date:** [today]
## Executive Summary
[2-3 sentences: what happened, key takeaway, recommendation]
## Key Metrics
| Metric | Current | Previous | Change |
|--------|---------|----------|--------|
| ... | ... | ... | +X% |
## [Detailed Sections — template-specific]
## Highlights & Wins
- ...
## Areas for Improvement
- ...
## Recommendations & Next Steps
1. ...
5. Format Output
Default output: Markdown (clean, portable, renders in most tools)
Other formats on request:
- HTML → Run
scripts/report_to_html.py for styled HTML with inline CSS
- Plain text → Stripped formatting for email body
- Structured data → JSON summary of all metrics and analysis
python3 scripts/report_to_html.py <report.md> [--template default|minimal|branded]
Customization Options
Users can specify:
- Client name — appears in header and throughout
- Reporting period — "last week", "March 2026", "Q1 2026"
- Tone — professional (default), friendly, executive-brief
- Sections — include/exclude specific sections
- Branding — company name, colors (for HTML output)
- Comparison — vs previous period, vs target/goal, vs benchmark
- Charts — include ASCII/text charts for key metrics (when data supports it)
- Language — generate in specified language
Data Handling
- Automatically detect metric types (currency, percentages, counts, rates)
- Format numbers appropriately (commas, decimal places, currency symbols)
- Calculate period-over-period changes when historical data is available
- Flag statistical anomalies or significant changes (>20% swings)
- Round appropriately for audience (executives get rounded numbers, analysts get precision)
Tips
- For executive audiences: lead with the bottom line, keep it to 1 page equivalent
- For marketing reports: emphasize ROI and conversion metrics
- For project status: focus on timeline, blockers, and deliverables
- When data is incomplete: note gaps clearly, don't fabricate numbers
- Include "So what?" after every metric — explain why the number matters
1---2name: client-report-generator-23description: Generate professional client-facing reports from raw data, metrics, and KPIs. Supports analytics summaries, project status reports, monthly/weekly performance reviews, and campaign results. Use when asked to create a client report, generate a performance report, summarize metrics for a client, build a weekly/monthly report, create a project status update, format analytics data into a report, or produce a deliverable report from raw data. Triggers on "client report", "performance report", "weekly report", "monthly report", "status report", "generate report from data", "metrics report", "campaign report", "analytics summary".4---56# Client Report Generator78Generate polished, client-ready reports from raw data. Feed it CSV, JSON, analytics exports, or plain text metrics — get back a professional report formatted for delivery.910## Workflow1112### 1. Ingest Data1314Determine input type and extract data:1516- **CSV/TSV file** → Read and parse into structured data17- **JSON file/API response** → Parse and extract key metrics18- **Pasted text/numbers** → Parse inline data19- **URL (dashboard/analytics)** → Use `web_fetch` to extract visible data20- **Multiple sources** → Combine into unified dataset2122Run `scripts/parse_data.py` to normalize any structured input:2324```bash25python3 scripts/parse_data.py <input-file> [--format csv|json|auto]26```2728Output: normalized JSON with detected metrics, dimensions, and time ranges.2930### 2. Analyze & Summarize3132Before generating the report, analyze the data:33341. **Key metrics** — Identify top-line numbers (revenue, growth, conversions, etc.)352. **Trends** — Period-over-period changes (up/down/flat + percentage)363. **Highlights** — Best-performing items, records, milestones374. **Concerns** — Underperforming areas, declining trends, anomalies385. **Context** — Infer reporting period, industry, and audience from data3940### 3. Select Report Template4142Choose based on user request or data type. See `references/report-templates.md` for detailed templates.4344| Template | Best For |45|----------|----------|46| **Performance Review** | Monthly/weekly KPI summaries |47| **Campaign Report** | Marketing campaign results |48| **Project Status** | Development/project progress updates |49| **Analytics Summary** | Website/app analytics overview |50| **Custom** | User-specified structure |5152### 4. Generate Report5354Structure every report with:5556```57# [Report Title]58**Period:** [date range] | **Prepared for:** [client name] | **Date:** [today]5960## Executive Summary61[2-3 sentences: what happened, key takeaway, recommendation]6263## Key Metrics64| Metric | Current | Previous | Change |65|--------|---------|----------|--------|66| ... | ... | ... | +X% |6768## [Detailed Sections — template-specific]6970## Highlights & Wins71- ...7273## Areas for Improvement74- ...7576## Recommendations & Next Steps771. ...78```7980### 5. Format Output8182**Default output:** Markdown (clean, portable, renders in most tools)8384**Other formats on request:**85- **HTML** → Run `scripts/report_to_html.py` for styled HTML with inline CSS86- **Plain text** → Stripped formatting for email body87- **Structured data** → JSON summary of all metrics and analysis8889```bash90python3 scripts/report_to_html.py <report.md> [--template default|minimal|branded]91```9293## Customization Options9495Users can specify:96- **Client name** — appears in header and throughout97- **Reporting period** — "last week", "March 2026", "Q1 2026"98- **Tone** — professional (default), friendly, executive-brief99- **Sections** — include/exclude specific sections100- **Branding** — company name, colors (for HTML output)101- **Comparison** — vs previous period, vs target/goal, vs benchmark102- **Charts** — include ASCII/text charts for key metrics (when data supports it)103- **Language** — generate in specified language104105## Data Handling106107- Automatically detect metric types (currency, percentages, counts, rates)108- Format numbers appropriately (commas, decimal places, currency symbols)109- Calculate period-over-period changes when historical data is available110- Flag statistical anomalies or significant changes (>20% swings)111- Round appropriately for audience (executives get rounded numbers, analysts get precision)112113## Tips114115- For executive audiences: lead with the bottom line, keep it to 1 page equivalent116- For marketing reports: emphasize ROI and conversion metrics117- For project status: focus on timeline, blockers, and deliverables118- When data is incomplete: note gaps clearly, don't fabricate numbers119- Include "So what?" after every metric — explain why the number matters