mAindmAind
הועתק ✓Copied ✓
Hands-on AI workshop · 60 minutes

Speed Date(a) — When AI Meets Your Data

From messy data into an executive dashboard you can trust
Omer Mayost
Omer Mayost · mAind C.E.O
The problem

Same task. With and without validation.

Without validation — broken process, broken numbers
Broken dashboard
With validation — every number proven in code
Validated dashboard
What we do differently today A staged workflow where each step must prove its numbers in code before the next step starts. Stops are features, not failures.
The method

A chain of contracts

Every stage issues certified control totals. The next stage opens by verifying them. If a link breaks — we stop. We never decorate bad numbers.

01
Clean
_CLEAN files
02
Merge & enrich
_MERGED file
03
Audit
PASS + certified totals
04
Excel dashboard
.xlsx
05
HTML dashboard
.html
06
Executive deck
the story for management
Stage 0 · Setup · 5 min

Get ready in three steps

Download your domain files from the table — every domain has the same planted real-world data bugs.
Open Copilot and upload both files to a new chat.
Pick the GPT-5.6 Think model in Copilot. This workflow runs real code. On any lighter model the AI guesses instead of computing.
DomainFile AFile BBackup
FinanceBudget_FY26Actuals_FY26Merged (backup)
BizDevAccount_MasterPipeline_FY26Merged (backup)
BizOpsSLA_TargetsProcess_RunsMerged (backup)
ITAsset_RegistryService_TicketsMerged (backup)
R&DComponent_RegistrySprint_ItemsMerged (backup)
HRRequisitionsApplicationsMerged (backup)
ProductFeature_CatalogFeature_AdoptionMerged (backup)
Do not skip step 3. Any other model produces estimates — the exact failure we are here to eliminate. The backup merged file is a safety net: if your run gets stuck in Stages 1–2, download it and continue with the group from Stage 3.
Clean
Stage 1 · Clean · 12 min

What to expect

One paste. Copilot runs a six-station protocol on your two files — proving every number in code before anything moves forward.

01
Profile
Scans both files in code — every issue mapped with its monetary impact
02
Join keys
Declares how the files will connect; flags orphans and near-matches
03
Clean + log
Trims, normalizes, converts — every change logged with its dollar effect
04
Hard gates
Control totals before vs after must reconcile to the cent, or it stops
05
Decision stop
If money is at stake, Copilot pauses and asks you — options + cost of each
06
_CLEAN files
Certified files with a Cleaning Log. Only these continue to the merge
Where do you come in? Station 05. When money is at stake, Copilot stops and asks — you rule, it applies. A stop is a feature that protects your numbers, not a jam in the process.
Stage 1 · The prompt

Paste with both raw files attached

Step 1 of 6Clean_CLEAN files
Your practice files
#1
01 · data-cleaning
This prompt operates on the two raw files: [FILE_A] and [FILE_B].

You are a deterministic data-preparation engine. Before ANY merge, aggregation, or analysis, run the full cleaning protocol below on every input file. Use code (Python/pandas) for every check — never estimate or eyeball. Do not skip a step even if the data "looks clean".

STEP 1 — PROFILE (read-only): For each file: row count, columns, types; nulls/blanks/whitespace-only per column; for text columns list distinct values and flag variants differing only by case, leading/trailing spaces, double spaces, or invisible characters; for numeric-looking columns count values stored as text (thousands separators, currency symbols, parentheses); duplicates — (a) fully duplicated rows, (b) duplicated IDs with DIFFERENT data (list separately, needs a human decision); dates stored as text or outside the expected period. Output a Data Quality Report: issue, column, row count, affected sum, examples.

STEP 2 — JOIN KEYS: Declare which columns will join the files. Per key column, compare distinct values across files: only-in-A, only-in-B, and near-matches (equal after trim/case-fold = formatting bugs). Flag orphan keys; do NOT silently drop or keep — list with the financial impact of each option.

STEP 3 — CLEAN (log every change): (1) trim/collapse whitespace in all text columns; (2) normalize case on categorical/key columns to the most frequent variant; (3) convert numeric-text to numbers (strip separators/symbols, parentheses=negative); unconvertible = NULL and listed, never zero silently; (4) remove fully duplicated rows (report count and sum); (5) duplicated keys with different values: STOP and ask which to keep or whether to sum; (6) orphan keys: STOP and ask — exclude, keep flagged, or map; (7) NULL amounts: STOP and ask — exclude or keep as NULL (never auto-zero); (8) parse dates to date type.

STEP 4 — VALIDATE (hard gates): control totals before vs after cleaning reconciled line-by-line to the log — every unit of value accounted for; row counts reconciled; key integrity across files; no amount column contains text, no key column contains whitespace/case variants. Any gate fails = stop and report.

STEP 5 — OUTPUT: If you stopped at unresolved decisions: save "_ALMOST_CLEAN" files (automatic rules applied, pending decisions untouched) + an Open Decisions list (item, options, monetary impact each). _ALMOST_CLEAN is NOT certified and must never be merged. After the user rules: save final "_CLEAN" files, each with a Cleaning Log sheet (every change, rule, rows, monetary impact) and a Data Quality Summary (issues, decisions, final control totals). Only _CLEAN files proceed to the merge stage.

HARD RULES: never fill, guess, or interpolate; never drop rows without listing them; every decision point stops and asks with options + monetary impact; all sums verified in code.
Stage 1 · Clean · 12 min

This is how it looks in Copilot

1Data problem + human decision
Copilot maps the open decisions with the cost of each option — and waits for you.
2Copilot executes
Your ruling is applied in code — deterministic, logged, reproducible.
3A deliverable you can trust
Certified _CLEAN files with a Cleaning Log — the contract for the next stage.
Merge & enrich
Stage 2 · Merge & enrich · 10 min

What to expect

One paste with the _CLEAN files. Copilot designs the join before running it — and proves the result matches the prediction.

01
Verify inputs
Re-verifies the _CLEAN control totals — the anchors every number must match
02
Join design
Declares keys, grain and join type; predicts the row count BEFORE joining
03
Execute join
Full outer join — nothing dropped; every row gets a Match_Status flag
04
Enrich
Adds variance, time fields and classifications — documented in a Data Dictionary
05
Granularity
Stays maximally granular; every roll-up must reproduce the anchors
06
_MERGED file
One source of truth: Data + Data_Dictionary + Reconciliation sheets
Where do you come in? Station 02. If the files live at different levels of detail (grain mismatch), Copilot stops and proposes the allocation rule — you approve before any number is doubled.
Stage 2 · The prompt

Paste with the _CLEAN files from Stage 1

Step 2 of 6Merge & enrich_MERGED file
Your practice files
#2
02 · data-merge
This prompt operates on the cleaned files from the previous stage: [FILE_A]_CLEAN and [FILE_B]_CLEAN. Refuse any input without the _CLEAN suffix.

You are a deterministic data-integration engine producing ONE merged, enriched, analysis-ready file — the single source of truth for a dashboard with filters, trends, and segmentations. Everything in code, reproducible, nothing decided silently.

STEP 0 — VERIFY INPUTS: re-verify each file's control totals against its Cleaning Log. These are the anchors every later number must reconcile to. Mismatch = stop.

STEP 1 — DESIGN THE JOIN (declare before executing): identify the full key combination defining matching granularity; prove each file's grain in code (rows per key combination); if grains differ, declare the handling: keep the transaction-grain side at full granularity and attach the key-grain side's amount via an allocated column — [AMOUNT]_Allocated equals the amount on exactly ONE row per key (first by date, tie-break by ID), NULL on others; all downstream totals and calculations use ONLY the allocated column. Choose join type with justification — default FULL OUTER, never inner (inner silently drops unmatched rows). Predict the output row count BEFORE joining; after joining, actual must equal predicted or stop and diagnose.

STEP 2 — EXECUTE: join on declared keys only; add Match_Status (Matched/Left_Only/Right_Only) — nothing dropped; immediately reconcile every amount column's sum (allocated where applicable) to its source, overall and per dimension. Mismatch = stop.

STEP 3 — ENRICH (add, never overwrite): comparison fields (variance absolute and %, NULL when denominator is 0 — never divide by zero, never fill 0); time fields for trends (sortable period components + a true chronological sort key); classification fields by explicit declared rules; carry single-source dimensions with NULL where unmatched. Document every derived column in a Data_Dictionary sheet: name, formula, source columns, null policy.

STEP 4 — GRANULARITY: output stays at the most granular level — no pre-aggregation, no subtotal rows. Every dashboard dimension is its own clean column. Verify in code: aggregating by each dimension reproduces the anchors.

STEP 5 — OUTPUT: one file "[NAME]_MERGED" with sheets: Data (flat table, one header row, proper types), Data_Dictionary, and Reconciliation (row-count equation, control totals source vs merged overall + per dimension, unmatched inventory with amounts, declared join design and allocation rules). State that this file must pass the validation prompt before any dashboard.

HARD RULES: full outer by default; no value invented, no null filled, no row dropped; grain stays maximal; every formula recomputable; any reconciliation mismatch = stop.
Stage 2 · Merge & enrich · 10 min

The deliverable: one _MERGED source of truth

192 rows exactly as predicted, reconciled totals, three sheets — and a reminder that nothing touches a dashboard before the audit passes.

Audit
Stage 3 · Audit · 8 min

What to expect

One paste with the _MERGED file and its _CLEAN sources. Copilot becomes an auditor: it judges, it fixes nothing — PASS or FAIL, computed on 100% of rows.

01
Contract check
Refuses anything without the _CLEAN suffix; reads the Reconciliation contract
02
Completeness
Anti-joins both ways — every source row present, no fabricated rows
03
Control totals
Every sum to the cent, per every dimension — offsetting errors exposed
04
Join integrity
Proves no fan-out; spot-checks the largest amounts field-by-field
05
Schema & derived
Types, chronological sort keys, every derived formula recomputed at zero tolerance
06
Verdict
PASS + Certified Control Totals — or FAIL with root cause per failure
Where do you come in? You don’t — by design. The auditor never fixes and never negotiates. On PASS you get Certified Control Totals; on FAIL you get the exact failing rows and go back one stage.
Stage 3 · The prompt

Paste with the _MERGED file + the _CLEAN sources

Step 3 of 6AuditPASS + certified totals
Your practice files
#3
03 · merge-audit
This prompt operates on [NAME]_MERGED against its _CLEAN sources.

Run a deterministic merge-and-aggregation audit. You are an auditor: PASS or FAIL, you fix nothing. Every check in Python/pandas on 100% of rows. One failed check = overall FAIL. All expected values are COMPUTED at runtime from the _CLEAN sources and the Reconciliation sheet — never hard-coded.

GATE 0 — CONTRACT: sources must carry _CLEAN (an _ALMOST_CLEAN file = hard FAIL, unresolved decisions). Verify source control totals against their Cleaning Logs and confirm user decisions are reflected in the data. The _MERGED file must contain Data, Data_Dictionary, Reconciliation; read declared keys, join type, grain/allocation rules, predicted row count as the contract.

GATE 1 — COMPLETENESS: merged row count = predicted, reconciled independently from source key structure. Anti-join each source vs Data: every source row present. Reverse anti-join: no fabricated rows. Match_Status counts and amounts = the Reconciliation inventory.

GATE 2 — CONTROL TOTALS: every amount column's sum in source vs merged, to the cent. If the contract declares an allocated column: non-NULL on exactly one row per key; its sum equals the source total; ALL aggregations and derived fields use it, never the repeated original. Re-aggregate by EVERY filter dimension — each roll-up reproduces source-computed totals (offsetting group errors hide under a matching grand total). Per-group row counts.

GATE 3 — JOIN INTEGRITY: prove no fan-out — no source amount appears more times than the contract allows. Spot-check 10 random keys + 5 largest amounts field-by-field vs source. No value altered in transit (string/numeric/date exact).

GATE 4 — SCHEMA & DASHBOARD-READINESS: flat table, single header, no subtotals/merged cells/spacers; amounts numeric with zero text values; dates typed with a true chronological sort key (not alphabetical); filter columns free of whitespace/case variants/near-duplicates; every column in Data_Dictionary; no NULLs beyond declared policy.

GATE 5 — DERIVED FIELDS: recompute every derived column from its dictionary formula row-by-row, zero tolerance; NULL/zero denominators yield NULL (never 0, inf, or 100%); decision-affected rows behave per policy.

VERDICT: table of gate/check/expected(computed)/actual/PASS-FAIL. On PASS: emit a Certified Control Totals block (overall + per dimension + row count) — the dashboard stage must open by matching it exactly. On FAIL: stop, list exact failing rows/groups/amounts + root cause + which stage to redo. Never explain away a discrepancy.
Stage 3 · Audit · 8 min

The verdict

51 of 51 checks passed — and the certification carries forward: the dashboard must reproduce these certified totals exactly.

Excel dashboard
Stage 4 · Excel dashboard · 10 min

What to expect

One paste with the validated _MERGED attached. Copilot reads the data before designing, builds a one-page dashboard plus a findings table, and must recalculate the workbook in code before delivering it.

01
Gate 0
Re-aggregates the data and matches the certified totals before drawing anything
02
Filters & staging
Dropdown filters drive formula staging ranges — every chart is bound to them
03
Cockpit build
KPI cards, chronological trends, segmentation cross-tabs with live check rows
04
Red flags
Computed rules only: outliers, concentration risks, trend breaks — no opinions
05
Action items
One item per flag: what to check, owner, monetary impact, evidence link
06
Recalc gate
The workbook is recalculated in code — zero #VALUE!, charts proven reactive
Where do you come in? After delivery. Open it, change a filter, watch every chart follow. All thresholds live on the Reconciliation sheet — tune one value there and every flag updates.
Stage 4 · The prompt

Paste with the validated _MERGED file attached

Step 4 of 6Excel dashboard.xlsx
Your practice files
#4
04 · excel-dashboard
This prompt operates on the validated [NAME]_MERGED file (audit PASS).
INPUT CONTRACT: the attached file contains exactly three sheets - Data, Data_Dictionary, Reconciliation. That is all you need. The Dashboard sheet does not exist yet: creating it is your job. If a Certified Control Totals block is not pasted below, read the certified totals from the Reconciliation sheet.

You are a deterministic dashboard builder producing ONE self-contained Excel dashboard workbook. Every number computed in code from the Data sheet - nothing typed, nothing estimated, nothing invented.

GATE 0 - CONTRACT: refuse input whose Reconciliation sheet shows any FAIL. Re-aggregate Data in code and match the certified totals exactly (overall, per dimension, row count) before building anything. Use ONLY columns the Data_Dictionary designates for calculation (allocated columns, never repeated originals).

GATE 1 - READ THE DATA BEFORE DESIGNING ANYTHING: in code, print the inventory - every categorical column with its EXACT distinct values, every numeric measure, and the chronological sort key. This inventory is the only vocabulary allowed in the workbook: every dropdown entry, axis label, series name, cross-tab header and finding is copied verbatim from it. Any label that does not exist in Data = FAIL. From the inventory, declare before building: the 3 filter dimensions, the 4 visuals, and the mapping of each visual -> source columns -> aggregation.

ARCHITECTURE - exactly four sheets in the output, this is what makes the filters work:
(1) Dashboard - the only sheet a human reads day to day.
(2) Data - the COMPLETE dataset from the input file, every row and every column, carried over unchanged as a formatted table with a header row, autofilter, and frozen header. This sheet is a working surface in its own right: anyone must be able to filter, sort, pivot and build further analysis directly on it beyond what the dashboard shows. Never hide it, never truncate it, never replace it with a sample.
(3) Staging - every aggregate on the dashboard, computed by SUMIFS/COUNTIFS/AVERAGEIFS formulas that reference the filter cells on Dashboard and read their source ranges from the Data sheet. Every chart's series AND category ranges point at Staging - never at Data directly, never at pasted values. A chart on static ranges = FAIL.
(4) Reconciliation - certified vs computed totals with live PASS/FAIL formula cells, all thresholds declared once.
Do NOT build PivotTables or slicers - in this pipeline they arrive dead. The Data Validation dropdown + SUMIFS pattern IS the implementation, not a fallback.

FORMULA COMPATIBILITY (prevents #VALUE!/#NAME?): only SUMIFS, COUNTIFS, AVERAGEIFS, INDEX, MATCH, IF, AND, OR, IFERROR, SUMPRODUCT, and & for assembling text. Never FILTER, IFS, TEXTJOIN, LET, LAMBDA, XLOOKUP, UNIQUE, SORT, no CSE arrays. "All" handled by explicit IF branches. Bounded ranges only, headers excluded. IFERROR on display cells only - never on PASS/FAIL cells.

DASHBOARD LAYOUT CONTRACT - the top block fits one screen at 80% zoom, nothing outside column U:
- A1: title, reporting period, row count. A3:B6: the filter panel - exactly 3 dropdowns, each defaulting to "All".
- D3:U6: 4-5 KPI cards - big bold formula-driven number, green/red conditional formatting vs a declared threshold, and a one-line caption in the cell directly beneath.
- Rows 8-38: exactly 4 charts in a 2x2 grid: chronological trend (by sort key, never alphabetical), composition, entity comparison, variance or exception ranking. Titles phrased as executive questions.
- EVERY visual carries a caption in the cells directly beneath it: one line, 12 words max, saying what is measured and how to read it. A visual without a caption = FAIL.
- No gridlines, zoom 80, frozen top rows, print area set to the dashboard grid.

FINDINGS TABLE - rows 41 onward on the same Dashboard sheet, titled "What stands out in this data":
Detect in code, on 100% of rows, using ONLY these declared rules:
- TREND: a measure moving in the same direction across 3+ consecutive periods (by the sort key). Report direction and total change.
- GAP: a segment 30%+ below the average of its dimension, or a dimension value with fewer than 5 rows.
- OUTLIER: rows beyond the 5th-95th percentile band of a measure, or a group at more than double / less than half the overall rate. State the method.
- CONCENTRATION: top 3 entities holding 50%+ of a measure.
Rank and keep the strongest 8, by severity: High = touches 20%+ of rows or of a key measure. Medium = clear and material. Watch = real but small. Declare the bands above the table.
Columns: # | Type | Finding - one sentence, numbers inside, written for a manager | Evidence - exact columns and values | Magnitude - the one number that sizes it | Severity | Suggested action - specific, never generic.
Styling: dark header with white bold text, banded rows, severity cell green/amber/red by conditional formatting, wrapped text, widths sized so nothing is cut off, thin borders.
A finding you cannot back with a number recomputed from Data is dropped, not softened. No finding may contradict the KPI values above it - cross-check each against the dashboard at "All" and report the cross-check.

PRE-DELIVERY GATE: open and recalculate the workbook in code. Confirm and report: ZERO error values on all sheets; the Data sheet row and column counts equal the input file exactly; KPIs at "All" equal the certified totals to the cent; every dropdown lists only values that exist in Data; CHANGE each filter in code, recalculate, and show the staging ranges and KPIs moved; all 8 findings verified against Data with their computation shown. An unrecalculated workbook is not deliverable. Close by stating the dashboard totals at "All" and the top 3 findings - the handoff contract for the next stage.
Stage 4 · Excel dashboard · 10 min

The morning cockpit — in Excel

KPIs matching the certified totals, filters that drive every chart, and cost-center variance ranked by monetary impact — reds first.

HTML dashboard
Stage 5 · HTML dashboard · 10 min

What to expect

One paste with the validated _MERGED and its certified totals. Copilot builds a single self-contained HTML file — no CDN, works offline, double-clicked from disk.

01
Gate 0
Data embedded as JSON; totals matched in code; libraries embedded in full
02
Cockpit layout
KPI strip → trends → segment explorer → anomalies → granular table
03
Global filters
Everything recomputes AND visibly redraws on every filter change
04
Drill-down
Click a flag or a cross-tab cell — land on the underlying evidence rows
05
Self-test
Headless run with network off: every control works or hides itself
06
Integrity badge
The page audits itself live — divergence turns the badge red with the delta
Where do you come in? Explore. Ten seconds on the KPI strip, spot the reds, two clicks to the evidence rows — while the integrity badge re-proves the totals on every load.
Stage 5 · The prompt

Paste with the validated _MERGED + certified totals

Step 5 of 6HTML dashboard.html
Your practice files
#5
05 · html-dashboard
This prompt operates on the validated [NAME]_MERGED (audit PASS) and its Certified Control Totals block.

Build ONE fully self-contained executive-grade interactive HTML dashboard: all data embedded as JSON, ALL libraries embedded in full inside the file (no CDN, no external scripts/fonts/CSS — must work offline, double-clicked from disk). Init only after DOMContentLoaded and after embedded library tags; if a library object is undefined at init, show a visible error banner naming it — never fail silently. Verify embedded library integrity (length/checksum vs official build).

DATA EMBEDDING - this is what prevents a broken page: never build JavaScript strings, arrays or objects by concatenating data values into code. Embed the entire dataset ONCE as , written with a JSON serializer (json.dumps), and load it in JS with JSON.parse(document.getElementById('data').textContent). Straight ASCII quotes only - no curly quotes, no backticks around data, no line breaks inside string literals. If any value contains  string literals; then run in a headless browser with network DISABLED; scripted interaction pass — load, apply every filter, click every button, drill down, export, reset; confirm ZERO console errors, every control functional, all charts rendered; verify unfiltered browser totals = Certified Control Totals and 3 filter combinations match the same computed in pandas; verify a load-time self-test that programmatically applies a filter and asserts every chart dataset changed. Report all checks with the delivery.
Stage 5 · HTML dashboard · 10 min

The live dashboard — running inside this deck

This is the actual file Copilot produced. Filter, drill, explore — the integrity badge at the bottom is re-proving the totals right now.

Open full screen in a new tab
Executive deck
Stage 6 · Executive deck

What to expect

One paste with the dashboard workbook. Copilot turns certified numbers into the management story — opening, insights, flags, actions — under the NiCE brand system.

01
Gate 0
Re-verifies every KPI against the Certified Control Totals — to the cent
02
Story outline
Opening, agenda, summary, insights, flags, actions — one message per slide
03
Brand system
NiCE tokens declared in the prompt: colors, fonts with Arial fallback, real logo only
04
Slides & charts
Native charts from proper chart-data objects — never inline junk, never empty series
05
Hardening audit
Zero placeholders, no overflow, no fabricated figures — audited in code
06
Ready deck
A .pptx that passed its own audit — ready for the boardroom
Where do you come in? You present it. Give it the presenter name and the logo file — and check that nothing on a slide says more than the data can support.
Stage 6 · The prompt

Paste with the validated dashboard workbook

Step 6 of 6Executive deckthe story for management
Your practice files
#6
06 · executive-deck
This prompt operates on [EXCEL_DASHBOARD_FILE] — the validated dashboard workbook — and its Certified Control Totals block.

Build an executive PowerPoint (.pptx) for management: opening, agenda, executive summary, insights & trends, issues & red flags, action items, thank-you. Every number comes from the workbook sheets (Dashboard, Trends, Anomalies & Red Flags, Action Items, Reconciliation) — nothing invented, nothing estimated.

GATE 0: re-aggregate the workbook data and match the Certified Control Totals exactly before creating any slide. Any KPI shown on a slide must equal the certified value to the cent.

BRAND SYSTEM (NiCE brand guidelines, hardened — do NOT fetch the brand PDF, it may be unreachable; these tokens are the contract): colors — Charcoal #21212b, White #ffffff, NiCE blue #3694fc, Electric blue #025afb, Electric indigo #6100ff, Warm white #f2f0eb for panels; semantic green #00e2a0 / coral #ff5b8a ONLY for favorable/unfavorable variance. Backgrounds: white or charcoal only, one accent color per slide. Typography: Be Vietnam Pro if installed, otherwise Arial (the brand-approved system fallback) — declare the fallback explicitly, never leave the library default. Writing rules: sentence case everywhere, no ALL-CAPS headlines, and the name is always written NiCE (capital N, C, E, lowercase i). Logo: only a provided image file, per the INPUTS rule below.

INPUTS (resolve from here, do not stop to ask): presenter name = [PRESENTER_NAME]. Logo: if a logo image file is attached to this chat, place it on the opening and closing slides; if none is attached, proceed WITHOUT any logo — a clean typographic header in the brand colors. Never draw a substitute logo and never type the wordmark as decorated text.

STRUCTURE (16:9, one message per slide): (1) Opening — title, subtitle, date, presenter name; (2) Agenda — the sections ahead; (3) Executive summary — KPI strip matching certified totals, variance colored semantically; (4-6) Insights & trends — each slide: one headline finding phrased as a statement, one supporting chart, one computed so-what line; (7) Issues & red flags — ranked by monetary impact with severity chips, from the Anomalies sheet only; (8) Action items — table: what, owner (from data if present), monetary impact, severity, evidence reference; (9) Thank you.

COPILOT FAILURE MODES — PREVENT EXPLICITLY:
1. Charts: build native pptx charts fed through proper chart-data objects (python-pptx CategoryChartData), or embed chart images exported from computed data. NEVER pass inline junk or empty series — after building, assert every chart has at least one series with more than zero points.
2. Text overflow: max 5 bullets per slide, each up to 12 words; declared font sizes (title 32-40pt, body 18-20pt); content that exceeds the limit is split into another slide — never shrunk to unreadable, never clipped.
3. Placeholders: zero occurrences of "[", "TBD", "XXX", "Lorem", "placeholder" in any text frame — audited in code.
4. Fabrication: every figure on every slide must trace to a workbook cell or a computed aggregate of workbook cells. If the data cannot support a claim, the slide does not make it.
5. Layout drift: one slide master, consistent margins, no random theme colors — only the declared tokens.

LAYOUT ENGINE — GRID DISCIPLINE (prevents overlaps): treat every slide like an HTML grid. Define explicit non-overlapping zones with fixed coordinates (header band, content columns, footer); every element lives inside exactly ONE zone and must fit within it. No two elements' bounding boxes may intersect. Z-order: text is ALWAYS on top — a decorative shape may never cover any part of a text frame; if a shape and text share a zone, the shape is a background panel and the text sits fully inside its padding. After building, run an overlap audit in code: per slide, compute the bounding box of every shape and text frame and assert zero intersections (the only allowed case: a background panel that fully contains its text). Any intersection = rebuild that slide.

PRE-DELIVERY GATE (in code, reported with the delivery): open the generated .pptx and verify — declared slide count; zero placeholder strings; every chart series non-empty; fonts are Be Vietnam Pro or Arial only; every KPI equals the certified totals; brand colors only; and the overlap audit passes with zero intersections. A deck that has not passed this audit is not deliverable.
Stage 6 · Executive deck

The deliverable: the story for management

Certified numbers, brand-clean design, one message per slide — built from the dashboard, not from imagination.

The takeaways

What we are taking back to the desk

01
The process is the standard
Use cases from every department converged into one quality process
02
Human validation is mandatory
AI output is never the final word. We own the deliverable and the result
03
The first run writes the prompt
Every failure we hit goes back into the prompt so it cannot happen twice
04
Build and validation stay apart
The engine that builds a number never grades its own work
05
Always ask for stop points
Wherever the AI would otherwise assume, make it stop and ask you first
06
The limit is the ask, not the tool
Ask for anything. The worst case is that you refine it and ask again
07
Keep every prompt
They are reusable assets. Edit them to fit your own needs next time
Thank you

The magic isn’t the tool. It’s the process.

Our power is knowing what to ask — so we can stand behind every number.
Omer Mayost
LinkedIn