Create reports
The AI assembles your monthly/weekly report end-to-end and outputs it as an HTML slide deck. You can run data-source discovery, precheck, data collection, slide construction, and HTML rendering in a single command — or step through each stage with confirmation.
When to use this category
Section titled “When to use this category”- “Make me a nice-looking report in one command.”
- “Check whether the data is ready before generating.”
- “Save my custom report settings so I can reuse them.”
- “Confirm in advance whether I can build the Contribution slides.”
- “Generate a report that includes Before/After comparison.”
Prompt 1: Generate a report in one command
Section titled “Prompt 1: Generate a report in one command”🎯 Purpose
Section titled “🎯 Purpose”Specify the target period and a comparison period, and complete everything from Data precheck to HTML slide deck output in a single command.
📋 When to use
Section titled “📋 When to use”- You want a one-command HTML output for the most recent advertising report.
- You want to run your month-end / week-end standard report with the same steps every time.
- You only need the final result and would rather not step through the pipeline manually.
📝 Prompt
Section titled “📝 Prompt”Generate a standard report for period {{PERIOD}}, comparison period {{COMPARE_PERIOD}}.Use HTML output mode and run precheck → data collection → slide construction →HTML rendering automatically in sequence. max_pages {{MAX_PAGES}}.If any issue comes up mid-flight, stop and ask me.Placeholders:
| Placeholder | Description | Default source |
|---|---|---|
{{PERIOD}} | Target period (e.g., 2026-04-01–2026-04-30) | User input (default: most recent finalized month) |
{{COMPARE_PERIOD}} | Comparison period (e.g., 2026-03-01–2026-03-31) | User input (default: previous month, same length) |
{{MAX_PAGES}} | Max slide count (e.g., 10) | Default 10 |
⚙️ What the AI does
Section titled “⚙️ What the AI does”- Data precheck — Lightly verifies that the SQP, ad reports, and sales data sources are all available for the target period.
- Why precheck first: Report generation takes time, so we want to avoid failing at the very last stage because of missing data.
- Data collection — Once precheck returns
ready, gathers KPI, Contribution, and Before/After comparison material from the validated data sources.- Why also pull Before/After: So the report includes effect verification for any actions taken during the period.
- Slide composition — Builds slides in this fixed order: title / summary / KPI / Contribution / Before/After / next-month plays.
- Why fixed order: Monthly reports are skimmed by executives and agency clients, and a consistent reading order improves their efficiency month over month.
- HTML rendering — Renders the slide deck to HTML and returns a shareable URL.
- Why HTML: It works for Slack delivery, embedding in internal wikis, and PDF export equally well.
- Mid-flight stop logic — If precheck returns
blocked/needs_confirmation, halts immediately and proposes next steps.
📊 Example output
Section titled “📊 Example output”Report generation complete — Period: 2026-04 / Comparison: 2026-03
Item Result Precheck ready Data collection Done (SQP 4 weeks / ads 30 days / sales 30 days) Slides 10 (summary 1 / KPI 2 / Contribution 3 / Before/After 2 / next-month plays 2) HTML preview https://reports.picaro.ai/r/XXXXXX The preview URL is valid for 7 days. To share via Slack, paste the URL directly. Reply “regenerate” to rebuild from scratch, or specify a single slide (e.g., “swap out just the KPI slide”) for partial replacement.
🔒 Safety guards
Section titled “🔒 Safety guards”- If precheck returns
blocked, the run stops before data collection (prevents reports built on invalid data). - When estimated values are involved, a note is automatically inserted at the top of the deck.
- Sensitive fields (partner names, account info, etc.) are automatically masked (redacted or shown as ”***”).
- On failure, the system falls back from the last successful stage (template-only layout to preserve presentation).
- The HTML preview URL is valid for 7 days; after that you must regenerate.
- If the sample size is insufficient (target-period rows below threshold), a warning is shown at the top of the deck.
🚦 Execution modes
Section titled “🚦 Execution modes”| Phase | State | Conditions |
|---|---|---|
| Phase 1 (now) | One-shot | Available with just Picaro connected |
| Phase 2 (Q3 2026) | Month-end manual | Register a report rule + save as a “stored prompt” for one-click month-end |
| Phase 3 (Q4 2026) | Month-end automated + Slack delivery | Specify rule ID for automatic month-end generation, deliver HTML URL via Slack |
| Phase 4 (2027) | Month-end auto + emergency generation | Auto-generate an ad-hoc report when a KPI anomaly is detected |
👉 Next steps
Section titled “👉 Next steps”- Saving and reusing report rules — Issue a rule ID so every run uses the same settings.
- Contribution data precheck only — Use this right after month-end to confirm data availability first.
- Inspect the market search funnel with SQP — Dig into the data backing the Contribution slides.
Q: Can I paste the generated HTML report into Slack for delivery? A: Yes. The HTML preview URL unfurls nicely in Slack, so you can use it to share with internal stakeholders and clients. From Phase 3, Slack workflow integration will deliver it automatically.
Q: Can I change the slide count from 10?
A: Yes. Set {{MAX_PAGES}} up front, or give a follow-up instruction like “compress to just the KPI slides” to adjust after generation.
Prompt 2: Build the report step by step
Section titled “Prompt 2: Build the report step by step”🎯 Purpose
Section titled “🎯 Purpose”Step through the four stages — precheck, data collection, slide construction, and HTML rendering — one at a time, so you can customize the slide composition midway.
📋 When to use
Section titled “📋 When to use”- You want to inspect intermediate artifacts at each step.
- You want to confirm data availability before kicking off data collection.
- You want to edit the slide composition before rendering to HTML.
📝 Prompt
Section titled “📝 Prompt”Build the report step by step:1. Run precheck for period {{PERIOD}} / comparison {{COMPARE_PERIOD}}.2. If status=ready, run data collection.3. Show me the slide composition (apply my edits if any).4. Render to HTML.
Wait for my confirmation between steps before moving on.If you hit blocked / needs_confirmation, stop and tell me.Placeholders:
| Placeholder | Description | Default source |
|---|---|---|
{{PERIOD}} | Target period | User input |
{{COMPARE_PERIOD}} | Comparison period | User input |
⚙️ What the AI does
Section titled “⚙️ What the AI does”- Step 1: Precheck — Runs the same precheck logic as Prompt 1.
- Why a standalone first step: So you can decide whether to proceed when data is missing or anonymization is high.
- Step 2: Data collection (after approval) — Once
ready, starts collection only after you reply “next.”- Why gated: To support cases where you want to change the target period after seeing the precheck results.
- Step 3: Show slide composition — Presents a draft in this order: title / KPI / Contribution / Before/After / next-month plays.
- Why before HTML: So edit requests like “drop the Contribution slides, beef up the KPI section” can be reflected before rendering.
- Step 4: HTML rendering — Once the composition is finalized, renders to HTML and returns a shareable URL.
- Inter-step state management — Keeps intermediate artifacts so you can step back (re-run a prior step) if needed.
📊 Example output
Section titled “📊 Example output”Step 1: Precheck complete — status=ready
SQP 4 weeks / ads 30 days / sales 30 days available. Reply “next” to start data collection.
Step 3: Slide composition (before edits)
# Slide Content 1 Summary Current-month KPI and commentary 2-3 KPI Monthly trend for ACoS / TACoS / ROAS 4-6 Contribution Top 20 search terms by sales contribution 7-8 Before/After Effect verification for bid adjustments run during the period 9-10 Next-month plays Keywords with room for improvement / top search terms by opportunity score If you’d like edits, say something like “compress KPI to 1 slide” or “extend Contribution to Top 30.” To proceed as-is, reply “render to HTML.”
🔒 Safety guards
Section titled “🔒 Safety guards”- Each step waits for an explicit “next” (it never auto-advances).
- Step 2 (data collection) can be canceled mid-flight; partial data is discarded.
- During slide-composition edits, Sensitive data masking rules cannot be disabled by user edits (always enforced by the editor).
- The HTML preview URL is valid for 7 days.
- Intermediate artifacts are kept for 1 hour within a session; after that you must restart from scratch.
🚦 Execution modes
Section titled “🚦 Execution modes”| Phase | State | Conditions |
|---|---|---|
| Phase 1 (now) | One-shot (stepwise) | Available with just Picaro connected |
| Phase 2 (Q3 2026) | Stays one-shot | Out of scope for automation since it assumes custom edits |
| Phase 3 (Q4 2026) | Stays one-shot | Edit templates can be stored in a report rule |
| Phase 4 (2027) | Stays one-shot | Kept as one-shot to preserve customizability |
👉 Next steps
Section titled “👉 Next steps”- Generate a report in one command — Standard flow when you want a no-edit, end-to-end build.
- Saving and reusing report rules — Save your edit patterns as a rule.
Prompt 3: Contribution data precheck only
Section titled “Prompt 3: Contribution data precheck only”🎯 Purpose
Section titled “🎯 Purpose”Before kicking off full report generation, run a lightweight check that the SQP and ad data needed for the Contribution slides is ready.
📋 When to use
Section titled “📋 When to use”- You want to know — right after month-end — whether the data is ready.
- You want to confirm that the row counts are sufficient for both target and comparison periods.
- You want to know whether the Contribution slides are buildable.
📝 Prompt
Section titled “📝 Prompt”Run a Contribution data precheck for period {{PERIOD}}, comparison {{COMPARE_PERIOD}}.Return data-source discovery results, row counts for the target and comparison periods,the share of anonymized search terms, and whether fallback is available.max_pages {{MAX_PAGES}}.Placeholders:
| Placeholder | Description | Default source |
|---|---|---|
{{PERIOD}} | Target period | User input |
{{COMPARE_PERIOD}} | Comparison period | User input |
{{MAX_PAGES}} | Max pages to fetch | Default 10 |
⚙️ What the AI does
Section titled “⚙️ What the AI does”- Data-source discovery — Identifies which of SQP / ad reports / sales are retrievable for the target period.
- Why discover first: Full report generation runs long, and a final-stage failure due to missing data wastes effort.
- Row counts for both periods — Determines whether each period has enough rows to be useful.
- Why also check the comparison period: Contribution is computed as a delta against the prior period, so coverage on only one side breaks the comparison.
- Anonymized search-term share — Returns the percentage of search terms that Amazon has anonymized.
- Why look at the anonymization rate: When anonymization is high, per-term Contribution breakdowns get coarser, which affects the report’s granularity.
- Fallback determination — Decides whether the report can be generated with a fallback source (e.g., ads only) if data is missing.
- Return a status — Reports back at one of three levels:
ready/needs_confirmation/blocked.
This prompt calls the same tool as Prompt 3 in Inspect the market search funnel with SQP. You can reach it either from the SQP category or from here in the report category.
📊 Example output
Section titled “📊 Example output”Contribution data precheck — Period: 2026-04 / Comparison: 2026-03
Item Result SQP data Available (target 4 weeks / comparison 4 weeks) Ad reports Available (target 30 days / comparison 30 days) Anonymized search terms 12.4% (within tolerance) Fallback Not needed status ready You can proceed directly to report generation. Use Generate a report in one command to produce the month-end report.
🔒 Safety guards
Section titled “🔒 Safety guards”- Precheck only — No report generation or writes to the ad account occur.
- When the anonymized-search-term share is high, returns
needs_confirmationand leaves the call to a human. - For periods with data gaps, returns
blockedand surfaces a remediation path. - SQP report finalization can lag, so a precheck immediately after month-end can fail (try again a few days later).
- Fields with sensitive information (partner names, account info, etc.) are also excluded from the precheck output.
🚦 Execution modes
Section titled “🚦 Execution modes”| Phase | State | Conditions |
|---|---|---|
| Phase 1 (now) | One-shot | Available with just Picaro connected |
| Phase 2 (Q3 2026) | Month-end manual | Run as a pre-check before report generation at month-end |
| Phase 3 (Q4 2026) | Month-end automated | Runs automatically before auto report generation; notifies only on blocked |
| Phase 4 (2027) | Month-end automated | Linked to emergency ad-hoc generation |
👉 Next steps
Section titled “👉 Next steps”- Generate a report in one command — Once
ready, move on to report generation. - Inspect the market search funnel with SQP — On
blocked, revisit the target products and period. - Support and feedback — Where to ask when anonymization rates look abnormally high.
Prompt 4: Saving and reusing report rules
Section titled “Prompt 4: Saving and reusing report rules”🎯 Purpose
Section titled “🎯 Purpose”Save custom report settings under an ID and call the same settings back when generating monthly reports.
📋 When to use
Section titled “📋 When to use”- You want to generate reports with the same look and feel every month.
- You want to lock in policies like “no guessing” / “always confirm estimates.”
- As an agency, you maintain separate report templates per client.
📝 Prompt
Section titled “📝 Prompt”Manage report rules:- List: action=list- Get: action=get rule_id={{RULE_ID}}- Upsert: action=upsert rule_id={{RULE_ID}} name={{RULE_NAME}} rules={{RULES_JSON}}- Remove: action=remove rule_id={{RULE_ID}}
Saved rules will then be reused during data collection,slide construction, and report generation.Placeholders:
| Placeholder | Description | Default source |
|---|---|---|
{{RULE_ID}} | Rule ID (e.g., monthly-standard / agency-client-a) | User input |
{{RULE_NAME}} | Display name for the rule | User input |
{{RULES_JSON}} | Rule body (slide composition, thresholds, mask settings, etc.) | User input |
⚙️ What the AI does
Section titled “⚙️ What the AI does”- Branch by
action— Splits behavior across list / get / upsert / remove. - Validate the rule body — On upsert, checks that required fields (slide composition, data sources, period type) are all present.
- Why validate: Incomplete rules can produce unexpected gaps in the slide construction stage.
- Show common rule templates — Surfaces frequent combinations as starting points:
- No guessing: Don’t let the AI infer missing data (estimates require explicit approval).
- Confirm estimates: When estimates are included, always insert a note at the top of the report.
- Contribution precheck required: Makes the Contribution data precheck non-skippable.
- Stronger Sensitive data masking: Adds extra columns to the automatic-mask list beyond partner names and account info.
- Prevent duplicate rule IDs — On upsert, if the same ID exists, warns and requires explicit confirmation before overwriting.
- Auto-reference on reuse — When you specify a rule ID in Prompt 1 / 2, the saved rule is applied automatically.
📊 Example output
Section titled “📊 Example output”Rule saved — rule_id=monthly-standard
Item Setting Name Monthly standard report Slide-count limit 10 Required slides Summary / KPI / Contribution / Before/After Estimates handling Confirmation required (note auto-inserted at top) Contribution precheck Required Sensitive data masking Auto-mask partner names / account info / personal names Going forward, specify
rule_id=monthly-standardin Prompt 1 / 2 to generate with these settings.
🔒 Safety guards
Section titled “🔒 Safety guards”- Upsert overwrites only after explicit confirmation (prevents accidental overwrites of existing rules).
- Remove is a permanent delete with no recovery, so the system requires a final confirmation before deletion.
- Sensitive data masking settings always apply the default masks (partner names, account info) even if the user disables overrides.
- The rule body (
rules) is stored internally only and is not exposed in the CMS or on public pages. - The cap is 50 rules per account (when exceeded, you’ll be prompted to prune older entries).
🚦 Execution modes
Section titled “🚦 Execution modes”| Phase | State | Conditions |
|---|---|---|
| Phase 1 (now) | One-shot | Available with just Picaro connected |
| Phase 2 (Q3 2026) | Stays one-shot | Rule editing will become available through the CMS UI |
| Phase 3 (Q4 2026) | Stays one-shot | Specify a rule ID to drive automated report generation |
| Phase 4 (2027) | Stays one-shot | Rule management stays manual since it requires human judgment |
👉 Next steps
Section titled “👉 Next steps”- Generate a report in one command — Generate with a saved rule.
- Discover data sources — Survey available sources before creating a new rule.
Prompt 5: Discover data sources
Section titled “Prompt 5: Discover data sources”🎯 Purpose
Section titled “🎯 Purpose”When creating new report rules or extending existing ones, return up to the top 5 data-source candidates available in the Picaro backend.
📋 When to use
Section titled “📋 When to use”- You want to survey data sources before creating a custom report rule.
- You want to find available endpoints by feature name (inventory, profit margin, etc.).
- You want to confirm what data is in scope before extending an existing rule.
📝 Prompt
Section titled “📝 Prompt”Discover Picaro data sources for the report from the OpenAPI:- source_names: {{SOURCE_NAMES}} (comma-separated)- top_n: {{TOP_N}}Return the candidates.Placeholders:
| Placeholder | Description | Default source |
|---|---|---|
{{SOURCE_NAMES}} | Feature names / keywords to look for (comma-separated) | User input |
{{TOP_N}} | Top-N candidates (e.g., 5) | Default 5 |
⚙️ What the AI does
Section titled “⚙️ What the AI does”- Search the OpenAPI spec — Pulls endpoints that match the feature names from the Picaro backend’s API catalog.
- Why look at OpenAPI: The source of truth is the API catalog, so even undocumented data sources can show up as candidates.
- Scoring — Ranks by match strength across exact path / operation ID / tag / summary / description.
- Why multi-field: A concept like “inventory” shows up in the path (
/inventory) and in descriptions, so weighting multiple fields gives better precision.
- Why multi-field: A concept like “inventory” shows up in the path (
- Return top 5 — Includes the match reason (which field hit).
- Why include reasons: When multiple APIs share a name but serve different purposes, humans need that context to pick the right one.
- Handoff hints for report rules — For candidates that can be wired into a report, includes an example
rulesJSON snippet.
📊 Example output
Section titled “📊 Example output”Data-source discovery — source_names: inventory, profit
# Path Matched in Score 1 /inventory/daily path / summary / tag 0.92 2 /finance/profit-margin path / description 0.87 3 /inventory/forecast path / operation ID 0.78 4 /finance/cost-breakdown description 0.64 5 /inventory/restock-alerts summary / tag 0.58 To wire one of these into a report, add the following to your report rule’s
rulesJSON:{"data_sources": ["inventory/daily", "finance/profit-margin"]}You can persist this via Saving and reusing report rules.
🔒 Safety guards
Section titled “🔒 Safety guards”- Discovery only — No data retrieval or writes to the ad account occur.
- Internal-only (gated) data sources are not shown in results (only publicly available sources are returned).
- Scores are guides only; final selection is left to human judgment (prevents same-name API confusion).
- Results are kept only within that session — save them in a report rule if you need them again.
🚦 Execution modes
Section titled “🚦 Execution modes”| Phase | State | Conditions |
|---|---|---|
| Phase 1 (now) | One-shot | Available with just Picaro connected |
| Phase 2 (Q3 2026) | Stays one-shot | Data-source selection stays manual since it requires human judgment |
| Phase 3 (Q4 2026) | Stays one-shot | Same as above |
| Phase 4 (2027) | Stays one-shot | Same as above |
👉 Next steps
Section titled “👉 Next steps”- Saving and reusing report rules — Register the selected data sources in a new rule.
- Generate a report in one command — Generate with the extended rule.
Prompt cheat sheet
Section titled “Prompt cheat sheet”| What you want to do | Use |
|---|---|
| Output an HTML report in one command | Prompt 1 |
| Build step by step with confirmation | Prompt 2 |
| Contribution data precheck only | Prompt 3 |
| Save / update / delete report rules | Prompt 4 |
| Discover candidate data sources | Prompt 5 |
Report generation pipeline
Section titled “Report generation pipeline”[Save a report rule (optional, Prompt 4)] ↓Discover data sources (optional, Prompt 5) ↓Precheck (Prompt 3 or Step 1 of Prompt 2) ↓Data collection ↓Slide composition ↓HTML rendering → Slack deliveryPrompt 1 (one-command) is a shortcut that runs precheck → data collection → slide composition → HTML rendering in a single shot.
Related categories
Section titled “Related categories”- Inspect the market search funnel with SQP — The Contribution data precheck shares tooling with the SQP category.
- Break down sales contribution with N-gram — Dig into the data backing the Contribution slides.
- Watch KPIs on the dashboard — Reports incorporate the dashboard’s KPIs as well.
- Log actions and events — Before/After slides reference the action log.
- Why looking at ACoS alone isn’t enough — How to combine ACoS with TACoS and ROAS.