Getting a prospect onto the right rep's calendar before the call ends
When a prospect is ready to talk, someone has to find the right rep and a time they're free. I designed Handoff so a rep does it from the Salesforce record in seconds, without needing to understand the routing behind it.

ARR in year one, as its own licensed product line
meetings booked straight onto reps' calendars
active users across sales teams
average time to book, from opening it to a confirmed meeting
A prospect raising their hand was only step one
Then someone had to work out who should take the call and when they were free. Schedulers did it by hand.
Get a yes and a rough time.
Spreadsheets, ownership rules, or memory.
One at a time, or ask around in Slack.
Until a time sticks.
Often with the wrong people or missing context.
Handoff sits on LeanData's routing graph, a powerful and deeply technical engine. My job was to make its answer something a rep would trust in seconds, without asking them to understand how it got there.
A rep is live on a call. The prospect wants to talk to an AE now
Every decision was tested against that moment. The rep has seconds, and doesn't know how routing works.
The button lives where the rep already is
Handoff opens from the Salesforce lead, not our app.
Designed for time pressure, not for browsing.
Our product's front door mattered less than the rep's moment.
One green dot, not three colors
of testers could correctly identify the intended meaning of yellow and red statuses
A button beat a ghost block

Testers read it as another rep's meeting.

It only appears when someone is free right now.
It started as "Instant Handoff." Renaming it "Meet Now" said what it does, and fixed a positioning problem the UI couldn't.
I added friction with a purpose

Back out, fix Salesforce, rebook
Fix the name or email inline
A new PM caught what I'd missed
A new PM joined and hesitated on flows I considered done. I set up structured usability testing, and it caught both the three colors and the ghost block before launch.
The system, by what it did for the rep
Meet Now
Books the prospect with a rep who's free right now, while they're still on the call.
Smart Rep
Picks the right rep from ownership, round robin priority and fallback rules. No one hunts through a dropdown.
Availability first
Pools a team's calendars and shows every open slot at once, so the prospect gets more times to choose from.
Group booking
Books an SDR with an AE, or an AE with a consultant, in one flow. Open times update as people are added.

Guardrails
Buffers, minimum notice, daily and weekly limits, and Salesforce context in every invite.
0-to-1 is as much about what you don't build
More Salesforce objects
We launched on leads and contacts, where most routing happens. Accounts, opportunities and cases came once customers asked for them.
The Chrome extension
It went to Forms and Links, whose users work outside Salesforce. Handoff users were already in it.
What this taught me
Balancing flexibility and speed
Booking happens in seconds, mid-call, so every control is a time tax. Progressive disclosure wasn't decoration. It was the job.
Test early, before fluency sets in
Late testing kept a broken availability system from shipping. Now when a flow feels obvious to me, I treat that as a risk, not a sign it's done.
The interface resolves the complexity
I didn't architect the routing graph. I made its answer something a rep could trust in 2.3 seconds, while still on the call.


