← All work

300+ reports a cycle, none built by hand

300+automated, every cycle
Scale
17M survey rows, three years, 31 slides per report
Methods
Config-driven generator, generated edge-case tests, slide-by-slide checks

The problem

Every site needed its own report, every cycle. Analysts were the bottleneck, and the old generator was a script only one person could touch.

What I did

I built a generator where slide layouts live in a config file, not in code. I tested it on generated edge cases, then checked it slide by slide against the old reports, within five points, before anyone switched.

FIG.04 ยท one config, any site, checked against the old reporttry it · sample data

What changed

  • Analysts are out of the bottleneck.
  • The team changes a slide without opening Python.

What this looks like for you

Replacements fail on trust, not function. I prove the new thing matches the old one before I ask you to trust it.

Let's talk data →
Next case100+ strategic accounts, assigned on one map →