Audette Report Generator
Generate professional, client-ready reports from Audette building data. The output is a self-contained HTML artifact — no Paged.js, no external CDN, no template engine.
For sustainability-specific acquisition analysis (RSRA), see the rapid-sustainability-risk
skill, which provides detailed underwriting guidance. This skill handles the general
report-writing flow for any Audette report type.
Pre-flight
Call switch_customer_account with the Audette customer account UID from the system prompt
before any MCP calls. If no UID is available, call list_customer_accounts and ask.
Step 1: Classify Report Type
If not clear from context, ask:
"Which report would you like?
- Decarbonization Roadmap — retrofit plan, emissions trajectory, financial projections
- BPS Compliance Summary — applicable regulations, penalty exposure, path to compliance
- Rapid Sustainability Risk Assessment (RSRA) — acquisition due diligence
- Portfolio Summary — overview of multiple buildings"
For building-level reports, identify the target building from the system prompt or call
list_buildings.
Step 2: Gather Data
Call the relevant Audette MCP tools for the report type. Key tools by report type:
- Decarb Roadmap:
get_building,get_carbon_emissions,get_retrofit_measures,get_financial_projections,get_incentive_programs - BPS Compliance:
get_building,get_carbon_emissions,get_bps_regulations,get_compliance_trajectory - RSRA:
get_building,get_carbon_emissions,get_energy_consumption,get_retrofit_measures— seerapid-sustainability-riskskill for full guidance - Portfolio Summary:
list_buildings,get_carbon_emissionsfor each building
If a tool returns no data for a required section, note the gap — render a callout in that section rather than omitting it or fabricating values. Never invent numbers.
Step 3: Generate HTML Report
Write a complete, self-contained HTML file:
- Inline all CSS in a
<style>block — no external stylesheets - Use system fonts:
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif - No external CDN dependencies (no Chart.js CDN, no Google Fonts)
- For charts, use inline SVG or HTML/CSS bar charts
- All figures come directly from MCP responses — no placeholders or fabricated values
- Missing fields render as
— - Include a print-to-PDF button (
.no-printclass, top-right corner):<button class="no-print" as PDF</button> - The file must render correctly when opened directly in a browser
Design conventions:
- Dark navy header (
#0F1923) with white text - Green accent (
#52B788) for highlights, signal indicators, call-to-action elements - Clean white body with subtle gray borders (
#E5E7EB) - Section cards with light background (
#F9FAFB) - Professional typography: 14px body, 11px labels, 20-28px headings
Step 4: Present and Iterate
Call create_artifact with the HTML content so it opens in the preview pane.
Ask:
"Here's the [report type] for [building name]. Does this look right, or would you like any changes?"
Cosmetic changes (colors, layout, wording) → regenerate without re-fetching MCP data. New sections or different data scope → fetch additional data, then regenerate.
Keep iterating until the user explicitly approves.
Step 5: Save
When approved, call save_file with:
name:{asset-slug}-{template}.html— e.g.prose-frontier-rsra.html(always lowercase, always a hyphen before the extension)folder:"Reports"mime_type:"text/html"
One save_file call per report. Do not also save a .txt summary.
Step 6: Export (Optional)
If the user wants a PDF, PPTX, or Excel export, use the scripts in scripts/:
| Format | Script | Notes |
|---|---|---|
scripts/export_pdf.py (primary) or scripts/export_pdf.js (fallback) |
Playwright-based; requires Chromium | |
| PPTX | scripts/build_pptx.py |
Requires python-pptx (auto-installs) |
| Excel | scripts/build_xlsx.py |
Requires openpyxl (auto-installs) |
Run with python scripts/export_pdf.py --input <path-to-html> --output <path>.pdf.
Run with python scripts/build_pptx.py --template rsra --data <path>.json --output <path>.pptx.
Rules
- Always call
switch_customer_accountbefore MCP calls - Never fabricate numbers — every figure must come from MCP
- Always iterate until the user approves before saving
- HTML must be completely self-contained (no external file references)
- Cosmetic revisions do not require re-fetching MCP data