Outcomes first. Method underneath.
Every engagement below ran to a fixed-fee scope and a measurable outcome, then ended in a handoff your team owns. Engagement details are anonymized to protect client confidentiality.
14-second dashboard loads cut to 4 at a $5B AUM wealth manager
The latency complaints kept pointing at the same thing: a security predicate written in 2017 that had picked up 23 CASE branches across seven years of reorgs. The tempting fix was to index the join column and call it done. That would not have held; no index rescues 23 branches of stacked CASE logic. So we rebuilt access around territories instead. The join moved to an indexed column and the logic came down to 4 branches. We validated the new predicate against five days of production access patterns before we cut over. No advisor noticed the switch, and invisible was exactly what we were going for.
Every advisor promotion broke someone's access, because the predicate assumed the role hierarchy never moved
Catching the churn model that misrouted $1.2M in retention spend
Sales ops had been routing retention spend off an Einstein Discovery churn model for 14 months when we opened it up. The 92% accuracy figure was the first red flag. Churn does not predict that well when the model is clean. The audit turned up three separate target leakages. Account.Id was sitting in the feature set as a raw high-cardinality categorical, which lets a model memorize accounts rather than learn churn. A date field in the training data only got populated after the event it was supposed to predict. And the renewal-risk score the model leaned on hardest came from the CS team, filled in after renewals had already closed. The rebuilt model scored 71%. Lower number, real signal. Once spend followed it, $1.2M surfaced that had been chasing accounts that were never at risk.
Account.Id as a direct model feature is memorization dressed up as accuracy
Nightly data prep at a 30,000-employee manufacturer, from 14 hours to 3
In 2022 the client migrated everything from dataflow JSON to Recipes, wholesale, because that is what the docs recommended. The docs describe the tools. They say nothing about your workload. Three datasets had landed on the wrong tool. One, a 90M-row dataset, was full-refreshing every night because incremental processing kept misfiring on it. Another, a multi-source revenue rollup, ran 4x slower as a Recipe than it ever had as a Dataflow. The third, a cohort build heavy on window functions, was paying the nightly Compute Relative tax. We moved those three back to dataflow JSON and left everything else where it was. Nobody in-house had a written rule for which tool a dataset belongs on, so we wrote the decision matrix and trained the team to run it without us.
Incremental sync quietly falls back to full refresh when a dataset goes through rename-and-recreate cycles
Five days to score a $40B CPG's 2017-era analytics estate for AI readiness
After the Salesforce-Anthropic partnership, the client wanted their distributor analytics in front of Claude through Agentforce 360, and they wanted to know what would break first. The short answer was most of it. Eight of the ten datasets scored under 50/100. The Wave-era security predicates are the worst offenders, because logic a human report viewer never notices will trip an agent reasoning across regions in multiple steps. Auto-exposed Recipe schemas got far less attention and deserved more; half the estate breaks the moment someone renames a column. The roadmap sequences the rebuild by business priority, so the gaps get fixed on schedule instead of discovered mid-rollout.
Wave-era predicates fail under multi-step agent reasoning across regions