Taking LeanData off Salesforce without breaking what made it work
To support Microsoft Dynamics, engineering rebuilt LeanData outside Salesforce for the first time. I turned the port into a chance to fix a decade of inconsistent workflows, while keeping every feature identical underneath.

new ARR from closed-won Microsoft Dynamics deals
standalone app in LeanData's history, since 2012
foundational workflows redesigned end to end
A decade of growth left a product that works but doesn't cohere as one system
LeanData launches as a Salesforce-native app.
×
Routing, matching and automation shipped by different designers and engineers, with no shared system.
Supporting Dynamics means rebuilding core features outside Salesforce.
×
Many enterprise customers run both CRMs or move between them. So the question became how much usability I could win without touching the logic underneath.
No access to users, so I triangulated
Direct interviews weren't possible, so I built a picture of how admins work from four other sources.
They used the product every day
The people fielding customer tickets
Recurring pain around an outdated UI
Reconstructing how each feature really worked
This didn't replace talking to users but it was the best evidence available at the time.
Same logic underneath, a different experience on top
I made many calls across the platform. These three show the range: readability, flow and findability.
Make complex logic readable
One of LeanData's most powerful features, and one of the hardest to read. Conditions had no hierarchy, ownership was invisible, and you couldn't tell what was live.

You had to open each condition to know what it meant

Leads where Country is US, Lead Source is Webinar and Employees is over 1,000
The logic reads as a sentence, right in the row
- The logic model, exactly
Not built: a drag-and-drop builder. It would have required additional maintenance on the engineering side.
- Plain-language summaries admins can check at a glance
- One row structure: name, owner, logic, graph, status
- Explicit ownership and which setup is live
Fix the flow, not the feature
Creating a pool meant digging under Routing, then working across tabs, including a Usage tab that tried to show data for a pool that didn't exist yet. This was a sequencing problem, not a styling one.
Usage showed data for a pool that didn't exist yet. Saving dropped you on a generic Settings tab
One guided modal. You land on the Member List, ready to add people
- Every setting and behavior
- One guided modal instead of tabs
- Only what matters at creation time
- Where you land when you're done
Put features where people look for them
Features lived where the system's logic put them, not where admins searched. A card sort confirmed where people expected to find them.
Redesigned end to end, identical underneath
Login
LeanData never had its own sign-in. Authentication ran through Salesforce. Now there's Google, Microsoft and enterprise SSO, plus an environment picker for admins working across orgs.
Setup is one guided modal. When it's done, you land on the Member List, the view that matters most, instead of a Settings tab.
Out of People › Settings, into its own views. Time off is one searchable row per entry.
RenamedCollapsible, with redrawn icons for faster scanning.
Build conditions, set priority, deploy, then read every segment in plain language.
On a fixed deadline, deciding what to leave out mattered as much as what to build
Not needed to ship.
Useful, but not blocking.
Where rebuilding cost more than it was worth.
What this taught me
Without research access, the discipline is choosing what to trust
The responsible move wasn't faking confidence and building off assumptions. It was triangulating across the teams closest to customers, public reviews, engineering experts and heuristics, and being open about each source's limits.
I learned to hold a position the room didn't want to hear to advocate for the user
Most stakeholders wanted a straight port: less work, a simpler sales story. I pushed for the harder path, because a chance to fix a decade of divergent patterns wouldn't come again. It took uncomfortable conversations about scope and timeline.


