Automated
KPI Reporting
A live small business gets an accurate morning KPI snapshot every weekday, with zero AI anywhere in the calculation path. A metric that isn't computable yet is reported as missing — never estimated, never guessed — because a wrong number reaching a real business decision is worse than no number at all.
THE PROBLEM
A wrong number is worse than no number.
The business needed one honest morning KPI snapshot — but a number that's wrong is worse than no number at all, and a metric that isn't computable yet needs to say so, not get filled in with a plausible-looking guess. The fix: a single deterministic pipeline, with no AI anywhere in the calculation path, that reports what it can't compute as missing instead of estimating it.
WHAT CHANGED
From "check the Sheet yourself" to a trustworthy daily number.
| No single source of truth each morning | One deterministic pipeline — Sheet, then KPI calculation, then snapshot, then a Slack post — the same steps every time. |
| Risk of an AI-estimated number reaching a real decision | Zero AI in the calculation path. Every figure is either genuinely computed or explicitly null. |
| Metrics that aren't tracked yet | Reported as missing, never guessed at and never silently dropped from the message. |
| Re-running the same day risked duplicate history | The snapshot step is idempotent per calendar date — safe to re-run without corrupting the trend history. |
THE STRUGGLE
The boring architecture decision was the right one.
Cloud-based scheduling was the first option on the table — it's the more "impressive" answer, no machine has to stay on. It didn't survive contact with reality: a cloud-scheduled job can't reach local secrets and files without restructuring the whole project onto a hosted git repo and reworking how credentials are handled, a much bigger rework than the scheduling problem justified. Local scheduling was the honest choice instead — which came with its own real friction, not a clean win.
The locally scheduled script silently couldn't read its own files at first. The cause: macOS blocks background processes from touching anything under a user's Desktop folder unless the specific binary running the script is explicitly granted Full Disk Access — a protection most people only ever encounter through the GUI, not from a cron-style scheduled script. The fix was a one-time manual grant in System Settings, not a code change — the kind of environment-specific gotcha no amount of code review catches.
HOW IT'S BUILT
One script. No AI in the loop.
A single script pulls the source Sheet, computes every KPI it can from real, current data, appends a snapshot, and posts to the relevant Slack channels — the same sequence every weekday morning, no model call anywhere in that path. If the Sheet is unreachable, the pipeline surfaces a clear error rather than retrying silently or posting a stale number as if it were current.
Want a KPI pipeline you can actually trust?
Happy to talk through what your own source-of-truth reporting would look like.