Skip to content

Shipped

Redesigning Dispatch, an AI assistant for truck owner-operators

TruckSmarter offers a centralized platform that helps truck drivers grow their businesses. Small carriers are the fastest-growing segment of the $940B freight industry, but finding jobs is time-consuming and expensive: drivers either spend hours a day piecing together loads across dozens of broker apps, or pay a dispatcher 3–5% of every load to do it for them.

I identified the need for and drove the redesign of Dispatch, an AI assistant that helps owner-operators find jobs faster. This tripled weekly active users and eliminated the need for our ops team to provide white-glove support to users.

Timeline
1 month research,
40 days to ship
Role
Lead Product Designer
Team
2 PMs,
10 engineers,
1 other designer
Tools
Figma,
Claude Code,
Mode

Problem

CONTEXT

Carriers spend hours on tedious, repetitive job booking.

User workflows are messy and send truckers in loops. Dispatch v1 helped truckers with the search step, but left them with the rest of the messy process.

Insight #1

Truth is time-sensitive.

A load Dispatch verifies as available can become unavailable minutes later. As a result, users often get stale information.

Timeline: at 2:14 Dispatch verifies the load and it shows as available. At 2:18 another carrier books it and the load becomes unavailable, but the user still sees it as available and verified — a mismatch.

Insight #2

Product was a mystery.

Dispatch ran 10+ minutes with little visible progress, so users often became impatient and left before seeing any value.

Annotated Dispatch v1 results screen. Opaque: users didn’t know what the agent was doing, or even what “awaiting verification” meant. Slow: 10+ minutes to return the first result while the agent contacted and spoke with the broker. Rigid: any load with an unconfirmed detail was excluded, even if everything else matched.

Solution

Users can easily select multiple loads to hand off to Dispatch to action on.
Tracking all ongoing tasks in a side menu, so important tasks don't get buried in different threads.
Pre-filled prompts from app data helps users realize value without needing to prompt correctly.
Making Dispatch's reasoning easy to follow, so our less tech-savvy user base builds confidence in it.
A live status panel that shows users what Dispatch is doing, so they never wonder if it's working.

Outcomes

Weekly users3.1×

More users validated demand for the reworked product and gave us more insights, leading to faster feedback loops.

ACTIONS PER SESSION1.8×

Users were trusting it with taking real actions, a first step towards it becoming a part of their workflow.

Self-serve0→100%

Freed up ~15 hours of our ops team’s time per week that used to be spent calling users and handling support requests.

Design decisions

The app nav branches into two separate surfaces: the free Load board and the paid Dispatch chat.

We kept Dispatch v2 as a distinct experience to protect our main customer acquisition lever.

Rather than disrupting our free load board, we chose to first prove Dispatch v2’s value as a distinct experience. Our tight deadline also made changing existing code riskier and costlier.

Handoff: Dispatch gives insights, verifies, and negotiates; the user finalizes the booking.

We guarded user agency: Dispatch v2 does the tedious work before handing off to the user to finalize.

We chose an approach that keeps users in the driver’s seat. Rather than Dispatch fully booking the load, it loops the user in when it’s time to finalize the booking. This choice also let us reuse significant calling technology we had already built.

Process

Research

Past feedback was mostly "need more loads," a marketplace liquidity issue that didn't give actual product insights. I designed a study circumventing that.

In previous sprints for Dispatch v1, user feedback revolved around wanting more loads. I found this strange, since our free load board drew thousands of active users despite sharing the same load ecosystem as Dispatch. To further examine this hypothesis, I devised a study, queried relevant users, and talked to dozens of users.

SQL query, dispatch_research_cohorts.sql: select user IDs from search sessions, grouped by user, having at least 5 searches and always receiving 5 or more loads.

Truth is time-sensitive

A verified load can become unavailable minutes later without us knowing.

  • "Man, the loads you sent me [are] already gone..."
  • "You guys are super slow lol"

Users didn’t understand Dispatch’s value

Dispatch offered little users couldn’t already get from the load board.

  • "What's verification?"
  • "What is it even doing?"

Feels harder to use than using the free load board

Dispatch offered little users couldn’t already get from the load board.

  • "I still need to call them myself, so why pay..."
  • "Need to figure out how to use it properly..."

INFLUENCING DIRECTION

Convinced incremental fixes wouldn't be enough, I prototyped a new vision and pitched it to leadership, resulting in alignment that a deep rework was needed.

Matched loads screen: each load card has a “Select for Dispatch” checkbox, and a “Start Dispatching on 5 loads” button explains that Dispatch will call brokers to confirm availability and verify details, then transfer the trucker in to book.
Bottom sheet: “TQL accepted your bid.” A “Broker holding · 0:42” badge, a note that Dana is on the line to confirm details and book, the rate ($950, listed $900), route, pickup window, and confirmed details, with a “Join call” button and a “Pass on this load” link.

Leadership set a 40-day window to ship to capitalize on the summer freight wave. This kicked off an intense period of rapid prototyping, feedback, and iterations. During weekly design feedback meetings, I presented my designs, iterated on feedback, and worked closely with engineers to ship within the timeline.

Systems decision

With 40 days to ship, I prioritized figuring out how Dispatch v2 should integrate into the wider app ecosystem.

We ultimately decided to keep Dispatch v2 as its own distinct product surface, primarily to not disrupt the load board as our acquisition engine.

Interaction deep-dive

Search was still the first step of Dispatch, so I next prioritized exploring designs and interaction models for the load cards.

Load cards need to communicate a lot of information for drivers to accurately making judgement calls, so cutting information was out of the question. Considerations while designing: reducing height of card as much as possible to fit enough results, ensuring clear visual hierarchy for quick scanning, keeping designs breathable.

Behavioral boundaries

Beyond the interface, I proposed ways for Dispatch v2 to anticipate needs, so users could spend their time on judgement calls, not on routine steps.

  1. How can Dispatch keep providing value when the driver's attention is elsewhere?
  2. How might Dispatch take initiative without misrepresenting the driver's intent?

Designing for failure

For example, when the market has no match, Dispatch offers to keep working instead of returning a dead end.

Some design decisions: not allowing users to cancel a task so that they could go back.Didn’t want important actions to get buried within multiple different chat threads.

Dispatch offering next steps when no loads match the search
Search variations with proactive suggestions.
Dispatch load alert
Load alerts keep working in the background.

SHIPPING

We ended up shipping within the 40 day deadline to get our product out in the wild to test. I monitored conversation data to identify UX issues, prioritize improvements, and also shipped PRs directly to code!

While the agent still needed refinement, we had a much stronger foundation to build from. I monitored conversation data to identify UX issues, prioritize improvements, and close the loop between user feedback and product iterations. I also contributed directly to the codebase, writing agent instructions, polishing the UI, and fixing bugs in production!

The redesign transformed Dispatch from a tool that simply verified loads into an assistant users could independently engage with throughout their workflow.