← Revenue Summary FormatCONTENT HISTORY

Update to Revenue Summary Format

Snapshot Sep 30, 2026 · 23:16 UTC · version 1.0.1

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Apply the standard summary-table formatting and structure (navy header band, min/max highlighting, total row, % of total, helper block + clustered column and doughnut charts) to a category-by-period data set in Excel.",
  "included_files": [],
  "name": "revenue-summary-format",
  "skill_md_contents": "---\nname: revenue-summary-format\ndescription: Apply the standard summary-table formatting and structure (navy header band, min/max highlighting, total row, % of total, helper block + clustered column and doughnut charts) to a category-by-period data set in Excel.\n---\n\n# Summary Table & Chart Format\n\nReusable layout + formatting standard for a \"categories down, periods across\" summary table with a total column, share-of-total column, and charts. Derived from the `Revenue Summary` pattern.\n\n## When to use\n\nUse when the user asks to build, reformat, or standardize a summary table where:\n\n- Row labels are categories (revenue streams, cost lines, products, departments)\n- Columns are periods (months, quarters, years)\n- They want totals, % of total, min/max callouts, and/or charts\n\nAlso use when they say \"format this like my revenue summary\", \"apply my standard table format\", or invoke `/revenue-summary-format`.\n\n## Layout\n\nAssume the block starts at A1. Adjust anchors if the user specifies a different origin.\n\n| Location                                                    | Content                                                                                                           |\n| ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |\n| A1                                                          | Title: `<Metric> by <Dimension> — <First Period> to <Last Period> (<Units>)`                                      |\n| Row 2                                                       | Blank spacer                                                                                                      |\n| Row 3                                                       | Header row: A3 = dimension name (e.g. \"Revenue Category\"), B3:N3 = period dates, then Total column, then % column |\n| Rows 4..n                                                   | One row per category, **sorted descending by the Total column**                                                   |\n| Row n+1                                                     | Grand Total row, label bold in column A                                                                           |\n| Row n+3 onward                                              | Callout block: \"Largest contributor\" / \"Smallest contributor\"                                                     |\n| Two columns right of the % column (gap of one blank column) | Helper block for charts                                                                                           |\n\nFreeze panes: `freezeRows(3)` and `freezeColumns(1)`.\n\n**Done when:** table occupies a contiguous block, categories are sorted descending by total, and panes are frozen at row 3 / column 1.\n\n## Formulas (never hardcode derived numbers)\n\n- Period total per category: `=SUM(B4:N4)` in the Total column\n- Grand total: `=SUM(<Total col>4:<Total col>n)` and `=SUM(B4:B12)` per period column\n- % of Total: `=O4/$O$13` (absolute grand-total ref), total row `=SUM(P4:P12)` → should render 100.0%\n- Largest contributor: `=INDEX($A$4:$A$12,MATCH(MAX($O$4:$O$12),$O$4:$O$12,0))`\n- Smallest contributor: `=INDEX($A$4:$A$12,MATCH(MIN($O$4:$O$12),$O$4:$O$12,0))`\n- Callout value: `=MAX($O$4:$O$12)` / `=MIN($O$4:$O$12)`; callout share: `=C15/$O$13`\n- Helper block: `=A4` for labels, `=O4` for values — never retype the numbers\n\nAdapt the example row and column references to the actual table size and origin. Do not hardcode the example O/P columns or row 13 if the source table has a different width or category count.\n\n**Done when:** every number outside the raw period grid is a formula, and the % total row reads exactly 100.0%.\n\n## Formatting spec\n\nFont throughout: **Aptos Narrow, 11pt** (title 14pt bold, black).\n\nHeader band (A3, period headers, Total and % headers):\n\n- Bold, font `#FFFFFF`, fill `#1F3864`, centered\n- Period header number format: `d-mmm`\n\nBody:\n\n- Value cells: `#,##0`\n- % column: `0.0%`\n- Largest-total category row (across labels, values, total, %): fill `#C6EFCE` (green)\n- Smallest-total category row: fill `#FFC7CE` (red), thin solid black bottom border\n- Grand Total row: bold, `#,##0` / `0.0%`, **thin solid black top border + thick double black bottom border**\n- Callout labels (column A) bold; callout name cells fill `#FFF2CC` (light amber)\n- Callout block separator: thin solid border under the row above the callouts\n\nColumn widths: uniform across period columns; autofit column A only.\n\n**Done when:** a read-back with `get_cell_ranges(includeStyles: true)` shows the navy header fill, the green/red category rows, and the double bottom border on the total row.\n\n## Helper block for charts\n\nCharts need one contiguous range, so build a two-column helper block to the right of the table (leave one blank column between):\n\n- Header row: dimension name | `<Metric> (<Units>)`, both bold black (no fill)\n- Rows link to the table: `=A4` and `=O4`, values formatted `#,##0`\n\n## Charts\n\nBuild with `execute_office_js` off the helper block range.\n\n**Clustered column** — magnitude by category:\n\n- `chartType: \"ColumnClustered\"`, size `525 × 294.75`\n- Title = the A1 table title; font Aptos Narrow **14pt, not bold, color `#595959`**\n- Legend **hidden** (single series)\n- Data labels **on**, number format `#,##0`\n- `series.gapWidth = 219`\n\n**Doughnut** — share of total:\n\n- `chartType: \"Doughnut\"`, size `456.75 × 294.75`\n- Title: `Share of Total <Metric> by <Dimension>`, same 14pt / not bold / `#595959`\n- Legend **visible, position Bottom**; data labels off\n\nPlace charts below the table, side by side, left-aligned to column A.\n\n**Done when:** both charts exist, titles use the 14pt `#595959` style, the column chart has no legend and visible data labels, and the doughnut has a bottom legend.\n\n## Provenance\n\nIf the underlying data came from another file, query, connector, or upload, put one source note on the top-left header cell (A3) in the format:\n`Source: <file/system>, <sheet/object>, <row range>, <period covered>.`\nDo not add per-cell notes on the value grid.\n\n## Verify before reporting\n\n1. Re-read the table with `get_cell_ranges(includeStyles: true)` — confirm fills, borders, number formats.\n2. Confirm no `#REF!`, `#VALUE!`, `#NAME?` and that the % column totals 100.0%.\n3. Confirm green/red fills are on the actual max/min rows after sorting.\n4. Name the ranges you verified in your reply.\n"
}

SHA-256 of public snapshot: 03adaf9e676241ce4908af1b9553d12e74e99b9da0376851eb47b28bf2489196