I built the ops layer under a $250M+ revenue line
CRM architecture, routing, attribution and reporting, wired together so sales, marketing and finance stop debating whose spreadsheet is right. Ten years of it, across B2B and fintech GTM systems.
Senior Marketing Manager at ThinkingAI since 2026. Four years at PingPong before that, a 1,500-person company: Marketing Manager, Ads & Lifecycle, 2021–2023, then Senior Digital Marketing Manager, Growth & Operations, 2023–2025. And six years at ToLocal, a company of twenty-odd, the last of them as VP of Marketing there: seven people in the US and five in China, on a $10M annual media budget.
Two teams, two lead numbers, twenty minutes of reconciliation
The reconciliation tax shows up as two teams reporting different lead volumes and both being right. When marketing, sales and finance each pull from their own export, every pipeline review starts with reconciliation before anyone can talk about what to do. That is the problem I get hired to fix.
I architect the CRM across Salesforce, HubSpot or Pipedrive, then build the measurement spine on top: attribution frameworks, UTM strategy, tracking plans, data integrity rules and cross-system sync, finished with dashboards for funnel health, velocity, conversion and revenue. At PingPong I owned that stack end to end, Salesforce, HubSpot, Webflow, 6sense, Zapier, ZoomInfo, Salesloft, and GA4 with Tag Manager, one architecture instead of nine islands.
I owned marketing on the cross-border payments line end to end, with sales and finance running their own sides, and revenue on it went from $2M to $76M in year one and past $250M+ by year two without my ops layer ever becoming the bottleneck.
Three kinds of evidence, and what each one settles
Grouped by what they prove, not by when I shipped them. The case studies show the stack running under a real revenue line. The systems show what I build when an off-the-shelf tool will not fit. The writing shows the diagnosis, including the times the obvious cause turned out to be wrong.
The stack in production
Marketing ops200+ governed workflows and the handoff that went from twelve hours to under two minutes. Global web and trackingMulti-region lead flow and attribution that held across three regulatory realities. Reports and insights portalSelf-hosted BI built from platform APIs, so reporting stopped depending on a vendor's definition. CMS rebuildA funnel-aware Sanity platform with governance a non-technical team can actually operate. Revenue engineThe line this all sat under, $2M to past $250M, with instrumentation that survived finance review.Systems I built for it
MarketingOpsForwarded report emails to versioned master data, with a person clearing only the exceptions. FinGuardCompliance maintaining its own rulebook inside the product, which is what kept it current. AdGuardFour platform rulebooks as schema so a distributed team could self-check before spend. TechSpyAccount enrichment pushed into the CRM through Zapier and an API, rather than another tab.How I diagnose, written down
Fixing a cross-domain tracking problemTwo months blamed on the cookie layer, one hour on the actual cause. The clearest example of the method. Marketing ops that replaced chaos with a queueIntake, prioritisation and the operating system underneath the execution. Automating a messy monthly reportOne to two hours of hand-cleaning to under five minutes, with the accuracy limit measured rather than assumed. Turning email chaos into a calm operationDiagnosing the root cause instead of the symptom, and admitting the first attempt was wrong. The trade-show follow-up systemBadges to CRM with the routing and the SLA agreed in the week before the event, while there is still time to change them. Scaling a launch on ops infrastructureWhat has to exist before a launch, and what breaks when it does not.The order I build in,
every time
01 · Create operational clarity
Lifecycle stages, qualification logic, routing rules and handoff points, defined once and written down before anything gets automated. Most “attribution problems” I've been handed were definition problems: two teams counting different things under the same name. I settle the language first, because no tool fixes a disagreement about words.
Settle the words before buying the tool02 · Build reliable data foundations
Source-of-truth definitions, CRM structure, field governance and sync logic. Hygiene runs on write, not on read. That is what makes one dataset safe to report from, and the layer I refuse to skip no matter how loudly someone wants a dashboard first.
No dashboard before the definitions hold03 · Automate predictable processes
Lead assignment, enrichment, follow-up and lifecycle triggers move from human queues to workflows that inherit the shared definitions. That's how the 200+ workflows I built stayed coherent instead of becoming a pile of one-off zaps, and how the lead handoff I automated collapsed from ~12 hours to 1–2 minutes, end to end.
Workflows inherit the definitions, or they drift04 · Measure what the system does
Dashboards for funnel health, velocity, conversion and revenue, all projections of the same dataset. I treat reporting as a product of the architecture rather than a monthly chore, which is why that monthly report ended up compiling in under five minutes, and why daily snapshots became worth standing up.
Reporting is a product of the architectureTwo receipts: a 12-hour queue and a two-hour report
A 12-hour queue became a 2-minute handoff
Before I rebuilt it, a form-fill waited roughly twelve hours for a human to route it. I rebuilt the path as system behavior: capture normalized at the form, enrichment and intent scored on arrival, routing rules that put the lead in front of the right rep with context attached, and a cadence triggered the moment the record lands. Handoff now takes 1–2 minutes, automated end to end.
Seventy-odd of them sat on the payments line; by the time I left the stack carried 200+. They share one architecture, so a new workflow inherits the definitions already settled.
Lead handoff ~12 hours → 1–2 minutes · 200+ workflows in productionEight reports that agree by construction
I collapsed reporting into a single cleaned dataset that generates eight different reports, channel, lifecycle, pipeline and campaign views that feed themselves from the same numbers. Monthly compile time fell from one-to-two hours to under five minutes, and I added daily snapshots because refreshing suddenly cost nothing.
To keep the inputs honest I built the Marketing Report Assistant myself, an AI tool that turns scattered CSV and channel exports into clean centralized data, normalizing messy column names and duplicates so attribution isn't quietly broken by dirty data before anyone reads a chart.
Monthly report 1–2 hours → under 5 minutes · daily snapshots on demand