← All projects
Helpy · via Anybots Studio

Two apps that share a transaction
but not a mindset.

Role
Lead product designer
Format
Consultant project via Anybots
Team
1 designer · 2 developers
Scope
Research UX / UI Prototype testing Information architecture Conversion optimization Dev handoff
Timeline
2019 — 2020

Context

A startup approached our product studio to design their local services marketplace — plumbing, cleaning, repairs. Two mobile apps: one for customers posting tasks, one for specialists bidding on work. I led the product design from research through shipped product.

Approach

Competitive analysis across 7 platforms, then guerrilla interviews with both sides. The client had assumptions about differentiation — they encouraged me to validate or disprove them before committing to pixels.

Outcome

10K+ users. Shipped two apps with differentiated experiences — same transaction, different interfaces for each side.

10K+
Users
2
App Sides
0 → 1
From Scratch
3+3
Usability Tests

Customer + specialist apps designed and tested end-to-end. Prototypes tested with 3 specialists and 3 customers before development.

The tension

Customers think in problems: "my sink is broken." They want speed, trust signals, and minimal friction. They have one task and zero patience for registration.

Specialists think in availability and reputation: "where's my next gig?" They're on 3–5 platforms simultaneously, scanning for volume, and very familiar with onboarding flows.

The client's initial brief was to build one app for both. The research made clear that treating them the same would serve neither well. I recommended two separate apps from the start — same backend, completely different interfaces.

Decision 00 · the foundational call

Split the product before designing a single screen.

The client's brief asked for one app with a role switch. I pushed back in the first week. Serving two users from the same interface would mean every screen carried the compromises of both.

So the first design decision was architectural, not visual. Two apps, one backend. Same orders, same chat, same payment flow underneath — entirely different surfaces on top.

Topology · two apps sharing one transaction
CUSTOMER APP “my sink is broken” one task, one session wants speed & trust signals zero patience for signup never comes back the same week SHARED CORE orders chat payments SPECIALIST APP “where's the next gig?” open for hours, many sessions used to registration forms running 3–5 apps at once reputation & volume matter most one transaction · two products

Everything downstream — the three decisions below — fell out of this split. Different onboarding, different chat surface, different map treatment. Same order ID moving through the middle.

Welcome — what are you looking for today? Where should work be done — address entry with map How many rooms — service-specific details Choose date and time Set your price — with average price indicator Check order details before submitting Your order is almost created — signup wall with social proof Verification code entry Phone number entry Orders list — post-creation view

The full customer flow: service → address → details → date → price → confirm → signup wall → verify. Registration comes last, when they're already invested.

Decision 01

Ask different questions at different times.

During interviews with specialists I found that they usually just sign up for every app they encounter.

Most of them are present on 3–5 platforms at the same time to maximize leads. They're used to sharing credentials — a registration form is expected, not a barrier.

And even if a specialist doesn't complete the full flow, having their email or phone number early lets the company follow up with outreach, calls, or retargeting ads.

Specialist onboarding step 1 — name and portrait photo Specialist onboarding step 2 — license number and business photos

Specialist — identity, then credentials. Both asked before the first job is ever visible.

Customer building their first order — picking day and time for upholstery cleaning Customer registration — 'Your order is almost created' with progress bar, specialist carousel, and contractor count

Customer — build the order first, then hit the signup wall with social proof once they're invested.

Customers are the opposite. They have a specific, urgent problem.

The last thing they want is to create an account before they even know if the platform can help.

The customer registration screen became a conversion tool: a progress bar (almost complete), a carousel of specialist avatars, and the count of available contractors in their area.

"We have 78 plumbers operating in your area" turns a registration wall into a sign that help is close.

Decision 02

Chat inside the order, not in a separate screen.

Most messages between a customer and a specialist are short: "OK", "On my way", "I'm here", "Can you open the door?"

A full-screen chat app is overkill for this kind of exchange — and it loses the context of the order.

I embedded the chat directly inside the order detail screen. Order information stays visible at the top — service type, address, time, and current status.

Below that, a status bar with hot actions (call, expand chat). Below that, the chat thread scrolls.

A half-transparent dark overlay under the status bar creates a sense of depth, so users notice that the chat area is scrollable without it being explicitly labeled.

Order detail screen with inline chat — order details pinned at top, status bar with call and expand actions, chat thread below

Customer — chat embedded in the order screen

Specialist order list with message previews on cards — unread badges and inline last messages Specialist order detail — order summary pinned, 'Expand chat' action, full chat thread below

Specialist — preview on the list, full chat one tap deeper. Most messages never need that tap.

For the specialist's order list in the "Responses" tab, I added a preview of the last message directly on the order card.

If the message doesn't require a reply — and most don't — the specialist can read it without opening the order at all.

When all messages are read, the "unread" badge disappears and the message preview takes the full width.

When they do tap in, the order header stays pinned — address, price, status — so the chat never loses the context it's about.

Decision 03

Same screen, different information.

Once a specialist is hired for a job, their primary concern shifts: they need to know when to show up and where to go.

The service details, the price negotiation, the bidding — all of that is settled. Navigation is what matters now.

So the specialist's order screen shows a large, tappable map preview right at the top. One tap opens their preferred maps app with the destination pre-filled.

The customer sees the same order screen — but without the map. They don't need directions. They're already at the location, waiting.

Same order · two presentations
Customer Customer's order detail screen — address as text, no map; focus is on chat with the incoming specialist

Address as text only. The customer is already there — the map is just noise.

Specialist Specialist's order detail screen — large tappable map preview at the top opens maps app pre-filled with the destination

Large, tappable map at the top. One tap opens their maps app with the destination pre-filled.

"Same data, different presentation per user type" became the governing principle for the whole product. Not just the map — notifications, order lists, status labels, even the tab structure differed between the two apps.

Asymmetry matrix · where the two apps diverge
SURFACE CUSTOMER APP SPECIALIST APP DIVERGENCE Onboarding when we ask for credentials last — after the order is built first — licensing, photos, docs Chat where messages live embedded in the order screen preview on each order card Map who needs to navigate hidden — address as text only large tap-to-open map preview Notifications volume & urgency a few, high-priority only every new job — speed matters Order list density & what surfaces first status, ETA, specialist photo price, distance, last message

Five surfaces out of the product. Every one resolves to a different answer per app, because the two users are doing fundamentally different jobs through the same order object.

Outcomes

What differentiation got us.

The product launched into a crowded market — TaskRabbit, Thumbtack, HomeAdvisor, Angie's List, Porch, Handy. The differentiation wasn't in the service categories. It was in treating each side of the marketplace as its own product.

10K+
Users

Low-friction customer onboarding — task first, registration last — removed the biggest drop-off point. Social proof at the signup wall converted hesitant visitors into active users.

72%
Onboarded customers → first order

Because the signup wall sits after the order is built, the account is created on a user who's already invested. The progress bar and specialist-count social proof carry them through the last step instead of abandoning a half-typed form.

78sec
Median time to first order

From app open to order placed. The problem-first flow (service → address → details → time → price) strips every optional field out of the critical path — the customer never stops to think about an account until the order is already on the way.

Reflection

What I'd do differently.

I'd push harder on specialist retention from day one. We optimized for customer acquisition — the onboarding funnel, the social proof, the low-friction flow — because that's the easier side to measure. But a marketplace lives or dies on supply quality.

The specialists who stayed were loyal, but too many churned in the first week because there weren't enough incoming orders to keep them engaged. The right recommendation would have been to build the supply side denser in a smaller area before expanding geographically. We did it the other way around.

Arthur Kamsky signature
Marketplace Mobile App B2C User Research Competitive Analysis Prototype Testing 0 → 1
Next project
Aiir — AI inspection platform