We didn't just build
the marketplace.
We run it.
ChiliAuto matches moving crews to customers across Prague. Two mobile apps, a real-time dispatch engine, Stripe Connect payments, a bilateral rating system, and an operations panel — all live, all maintained by the same team that built it.
A moving company outgrowing WhatsApp.
The operation was running, but it was running on the founders' willpower. Bookings came in by phone. Crew assignments happened over WhatsApp groups. Availability tracking lived in a shared spreadsheet that was always one edit behind. Payments were cash or bank transfer, chased after the job.
As the crew count grew from three to six, the coordination cost grew faster. Every additional crew added more edge cases: overlapping jobs, no-shows, distance mismatches. The founder was spending four hours a day on dispatch logistics that should have been automatic.
Supply first. Always.
We spent the first two weeks in discovery — interviewing the dispatch coordinator, riding along on two actual moves, and mapping every failure point in the existing workflow. The insight that shaped everything: the demand side is useless without a reliable supply side. Customers don't book if crews don't show up.
We built the supply-side crew app before a single customer feature was designed. Eight weeks of focused development — crew onboarding, availability management, job acceptance, GPS tracking, and the admin dispatch panel. We ran the first real job through the system before the customer app existed.
React Native for both apps
One codebase, two experiences. The crew app is optimised for field use — large tap targets, offline-capable, designed for sweaty hands after carrying a sofa. The customer app is optimised for a booking flow that takes under three minutes.
Rules-based dispatch, not algorithmic
We considered ML-based matching and rejected it. The market is too small for training data to matter. Instead: proximity, availability windows, crew capacity, and job category matching — deterministic, auditable, and debuggable at 2am.
Stripe Connect for escrow
Funds held at booking, released to crew on job completion, refundable on dispute. No cash, no invoice chasing. The payment layer also surfaces the data that makes expansion possible: average job value, peak hours, crew earnings.
Two apps and the engine between them.
- Crew onboarding with document upload and manual approval
- Real-time availability calendar with block-off and recurring slots
- Push notifications for new job offers with 10-minute accept window
- Live GPS tracking shared with customer during active job
- Digital job sheet — checklist, photo upload, completion confirmation
- Earnings dashboard with per-job breakdown
- Address-to-address quote in under 60 seconds
- Moving inventory estimator (rooms, floors, heavy items)
- Crew profile with ratings and completed job count before booking
- Secure card payment with Stripe — held until job confirmed complete
- Real-time crew tracking on move day
- Post-job bilateral rating with verified review
- Automatic crew matching based on proximity, availability, and capacity
- Conflict detection — zero double-booking guaranteed
- Operations dashboard with live job map and crew statuses
- Dispute resolution panel with evidence attachments
- Revenue reporting, crew performance, and demand heatmaps
- Manual override for edge cases without engineering involvement
I was skeptical about the 16-week timeline — I'd been burned by agencies that promised speed and delivered excuses. By week 10, our crews were running real jobs through the app. By week 14, I had closed my WhatsApp dispatch groups. That's all I needed to know.
The lessons that only come from running it.
The first dispute teaches you more than the first booking
Week three post-launch: a customer claimed a crew damaged furniture. The crew denied it. We had designed a dispute system but hadn't stress-tested the edge cases. We shipped four improvements to the evidence upload and escalation flow in the week that followed.
Supply density is everything
A marketplace fails when demand is unmet. We discovered that certain Prague districts had systematically low crew coverage. The admin heatmap data made this visible — we used it to run a targeted crew recruitment push in those areas.
Push notification timing is a product decision
Our first job-offer notification window was 5 minutes. Crews missed them constantly — they're carrying sofas. Extending to 10 minutes with a reminder at 7 minutes increased acceptance rates by 40%. A number no algorithm would have told us.
Building a marketplace?
We've made every mistake so you don't have to — and we have the on-call rotation to prove it. Tell us about your market.