Case study•Off Platform

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.

Role
Sole Product Designer
Team
CTOCPOSAPM+7
Timeline
Jan 2024 - Mar 2025
Status
Shipped
The standalone LeanData app with redesigned navigation and routing segments
$310K+

new ARR from closed-won Microsoft Dynamics deals

1st

standalone app in LeanData's history, since 2012

5

foundational workflows redesigned end to end

01The problem

A decade of growth left a product that works but doesn't cohere as one system

2012
Built inside Salesforce

LeanData launches as a Salesforce-native app.

LeanData×Salesforce
2013-2023
Features added by many hands

Routing, matching and automation shipped by different designers and engineers, with no shared system.

Save Changes
Save
Update
2024
Microsoft Dynamics

Supporting Dynamics means rebuilding core features outside Salesforce.

LeanData×Microsoft Dynamics
The constraint
Every feature had to work the same on Salesforce and Dynamics

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.

02The evidence

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.

Internal sales teams

They used the product every day

Implementation teams

The people fielding customer tickets

G2 reviews

Recurring pain around an outdated UI

Architect and senior engineers

Reconstructing how each feature really worked

Plus heuristics, then a decision

This didn't replace talking to users but it was the best evidence available at the time.

03Key decisions

Same logic underneath, a different experience on top

I made many calls across the platform. These three show the range: readability, flow and findability.

Routing Segment

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.

Before
Legacy Multi-Graph list with condensed condition strings
Rule logic
Segment 4Status unclear
1 AND 2 AND 3

You had to open each condition to know what it meant

After
Redesigned Routing Segments view with a summary per row
Summary, illustrative
US Enterprise WebinarLive

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

Kept
  • The logic model, exactly

Not built: a drag-and-drop builder. It would have required additional maintenance on the engineering side.

Changed
  • Plain-language summaries admins can check at a glance
  • One row structure: name, owner, logic, graph, status
  • Explicit ownership and which setup is live
Round Robin

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.

Before
Routing Round Robin New pool
GeneralMembersUsageSettings
No usage dataThis pool hasn't been created yet
4 tabs, no order

Usage showed data for a pool that didn't exist yet. Saving dropped you on a generic Settings tab

After
New pool
Settings
2Members
Add members
AK
SP
BackCreate pool
2 steps, in order

One guided modal. You land on the Member List, ready to add people

Kept
  • Every setting and behavior
Changed
  • One guided modal instead of tabs
  • Only what matters at creation time
  • Where you land when you're done
Navigation

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.

Groupings the system requires, like FlowBuilder under Routing, stayed put, set apart with dividers.
04Five workflows

Redesigned end to end, identical underneath

Welcome to LeanData — sign in with Okta, Microsoft, or Google Signed in with Google — Select Environment, dropdown closed Environment dropdown open — Production, Staging, Development, Sandbox Environment dropdown open — Staging option highlighted on hover Staging selected — Continue to LeanData button enabled
A first for LeanData

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.

Round Robin Pools list view with Create Pool button Create Pool modal open, settings step empty Pool Name filled in Pool Description filled in Pool Type dropdown open showing Count-Based, Order-Based, Weighted Count-Based highlighted on hover Pool Type set to Count-Based Pool Manager dropdown open Sana Chan highlighted on hover Pool Manager set to Sana Chan Salesforce Object dropdown open Lead highlighted on hover Salesforce Object set to Lead Step 2: Add Members Members added to pool List view with the new pool created First pool row highlighted on hover Pool detail view, landing on Member List Settings tab on pool detail
Round Robin

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.

Schedules list view with Add Working Hours button Add Working Hours modal open, empty form Working hours: name input filled Working hours: timezone selected Working hour created, back on Schedules list Time Off tab active, empty state with Add Time Off CTA Add Time Off modal open, empty user dropdown User dropdown open, list of users visible Amanda Bryant highlighted on hover Amanda Bryant click — intermediate state Amanda Bryant selected as user Vacation highlighted on hover in type dropdown Vacation selected as type Start date input clicked End date input clicked Note input filled Time off entry created, list view updated
Schedules

Out of People › Settings, into its own views. Time off is one searchable row per entry.

Renamed Vacations to Time Off, since it holds sick days and parental leave too
Collapsed sidebar with icons only Expanded sidebar — Dashboard active, Routing and People collapsed People row highlighted on hover People expanded — Round Robin, User Management, Schedules visible Round Robin row highlighted on hover Round Robin selected and active
Navigation

Collapsible, with redrawn icons for faster scanning.

Routing Segments list view, no segments yet Create Routing Segment modal opening Name input clicked, ready for entry Objects input clicked Admin input clicked Lead Source field clicked Operator input clicked Value input clicked Condition group added OR toggle selected in condition group First condition: field input clicked First condition: operator input clicked First condition: value input clicked Second condition row added Second condition: field input clicked Second condition: operator input clicked Second condition: value input clicked Third condition row added Third condition: field input clicked Third condition: operator input clicked Third condition: value input clicked Segment created, listed in table Enterprise Inbound segment moved to first priority Activate Lead Routing Segments toggle clicked in banner Confirmation checkbox checked Lead Routing Segments saved and deployed Show condition summary toggle on — plain-language summaries visible per row
Routing Segment

Build conditions, set priority, deploy, then read every segment in plain language.

05Scope

On a fixed deadline, deciding what to leave out mattered as much as what to build

CutHoliday Sets

Not needed to ship.

DeferredBulk pool editing and advanced validation

Useful, but not blocking.

ReusedSome Salesforce patterns

Where rebuilding cost more than it was worth.

How I ordered it: first whatever blocked Dynamics sales conversations, then the highest-value fixes based on feature requests and G2 reviews, then low-hanging fruit.
06Takeaways

What this taught me

01

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.

02

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.

Keep reading
Tradeshow Events case study cover
Next case study

Tradeshow Events

BookIt's first purpose-built system for booking meetings at live conferences, closing a competitive gap and protecting at-risk revenue.

Read it →
BookIt Handoff case study cover
Also

BookIt Handoff

A 0-to-1 product that became a $1.2M licensed line in year one.

RevOps Agentic Platform case study cover, in progress
Also

RevOps Agentic Platform

Designing an AI agent companies trust with their customer data.

↑Back to top