Revenue Data Reconciliation & Anomaly Agent
Catching bad data before it reaches a dashboard — with a system that explains why, not just what.
The Problem
Revenue teams don't lose trust in their data all at once — it erodes one silent error at a time. A single mis-flagged row in a source sheet can ripple into a forecast, a board deck, or a KPI review before anyone notices. Most monitoring stops at "something's wrong" — it rarely tells you what, why, or how urgent.
This project started as a simple monitoring workflow and grew into a full reconciliation and anomaly-detection system — one that doesn't just flag issues, but explains them in plain language.
What I Built
1. A rule-based detection layer
A monitoring workflow built on Google Apps Script that watches a live revenue extract sheet, flags rows failing validation checks, and highlights them directly in the source — no separate tool for the team to check.
2. A synthetic test dataset with planted anomalies
To validate detection accuracy without touching real business data, I built a synthetic dataset with known, deliberately planted errors — then scored the detection layer against that ground truth to measure precision and recall.
3. An AI reasoning layer
On top of rule-based detection, I added a narrative layer that explains why a flagged row looks anomalous in plain language — turning a red cell into an actual explanation a non-technical stakeholder can act on.
4. Automated delivery
Alerts route to Slack and email automatically, so the right people see issues the moment they're detected — not during a weekly review when the damage is already done.
Why It Matters
This isn't a proof-of-concept — it's built the way I'd want a production data-quality system to work: rule-based checks you can fully trust, paired with AI-generated explanations that save someone the job of digging through rows manually. It's the same discipline I bring to revenue analytics work day to day — validate first, automate second, explain always.
Tech Stack
Google Apps Script · Python · Claude (reasoning layer) · Slack & Email APIs
Have a similar data trust problem?
Whether it's a revenue sheet, a pipeline dashboard, or a KPI that nobody fully trusts anymore — this is exactly the kind of problem I like solving.