Home/ Case Studies/ Multi-Vendor Marketplace App
Marketplace · Mobile App · Multi-Vendor

Multi-Vendor Marketplace App for Food & Grocery — From Zero to 12,000 MAU in Eight Months

A Tier-2-city food and grocery brand wanted to skip the Swiggy/Instamart commission and run their own multi-vendor app. Eight months later, the platform was live across two cities with 320 vendors, 850 daily orders, and 12,000 monthly active users.

12,000+Monthly Active Users
320+Onboarded Vendors
850+Daily Orders
4.7 Customer Rating

Project at a glance

Industry
Food & grocery · multi-vendor marketplace
Scope
Customer app, vendor app, delivery-rider app, admin web dashboard
Team size
9 engineers + 1 PM + 2 designers
Timeline
5 months to v1 · 8 months to 12,000 MAU
Regions
Two Tier-2 Indian cities; architecture sized for 6
Status
Live · ITD on monthly retainer for ops + new features

The client & the problem

The client runs a regional grocery brand with eight physical stores plus 90+ partner vendors (butchers, fish-mongers, fruit-and-veg shops, dairies). Customers were ordering on WhatsApp; reconciliation was a nightmare; and the founder did not want to hand 25% commission to a national aggregator. They needed their own app — but with the operational discipline of a Swiggy and the trust of a neighborhood store.

  • WhatsApp ordering at scale failed: 1,200+ daily WhatsApp messages were unreadable; orders slipped, customers complained, the brand reputation took the hit.
  • No vendor inventory sync: Stock-outs were discovered when the rider reached the store. Cancellation rate was 8%.
  • No rider visibility: Riders were freelancers with phones and a paper trail. No assignment logic, no proof-of-delivery, no ETA.
  • Commission economics: National aggregators wanted 22-28% per order. At their margins, that was a money-loser.
  • Trust + retention: WhatsApp customers churned silently; no notifications, no offers, no profile, no re-order.

The solution

We scoped a four-app marketplace: customer, vendor, rider, and admin — sharing one Laravel API and a real-time event layer. The non-obvious decision was building the vendor app first; without vendors keeping inventory honest, no consumer app can survive its first viral week.

1. Customer app (Flutter)

Address-first home screen (so customers see only stores that actually deliver to them), category browse, cart with multiple-vendor support, scheduled delivery slots, multiple payment methods (UPI, COD, wallet), real-time order tracking, ratings, re-order, refer-a-friend, and offer engine.

2. Vendor app (Flutter)

Vendor receives the order on their phone, taps Accept, picks the items, marks ready. Inline catalog management (add/edit products, mark out of stock, set timing), order history, payouts dashboard, and a self-service KYC + bank-detail flow at onboarding.

3. Rider app (Flutter)

FCM push for new pickups, navigation, single-pickup multi-drop support (a rider can carry 3 small orders), proof-of-delivery photo + OTP, daily earnings, weekly payouts, support chat.

4. Admin dashboard (React)

Live ops control: orders board, vendor onboarding queue, rider onboarding queue, dispute desk, pricing & commission rules, reports, push-notification builder, and an offer engine that can target by city, category, or customer cohort.

5. Backend (Laravel + Firebase)

Laravel REST + queue workers, MySQL with read replicas, Redis for cart sessions, Firebase Realtime DB for order-state streaming and rider location pings. Razorpay for payments. Twilio for SMS, FCM for push. CI/CD via GitHub Actions to AWS.

Tech stack & why

We picked the stack for fit, performance under realistic load, and operational simplicity. Here is the breakdown:

Flutter 3.x Laravel 10 PHP 8.2 MySQL 8 Redis Firebase RTDB Firebase Cloud Messaging Google Maps Platform Razorpay Twilio AWS EC2 + RDS GitHub Actions Sentry

Flutter for all three apps: we ship one design system, three apps, two stores. The customer + vendor + rider stack would have been 6 native projects otherwise. Build cost dropped ~40% vs three native iOS + three native Android codebases.

Laravel for the API: the team is fluent in it, the ecosystem (Eloquent, Horizon, Telescope, Sanctum) covers 90% of what you need. Performance under load was fine to ~200 RPS; we did the usual cache-and-queue work to handle peak-hour spikes.

Firebase only where it earned its place: realtime order state and live rider tracking. Everything else stayed on Postgres-shaped data in MySQL. This kept the Firebase bill predictable.

The hardest technical problem we solved

Inventory honesty.

A multi-vendor marketplace lives or dies on inventory accuracy. If a customer orders three items and the rider reaches the store and one is out of stock, that customer is gone — and probably tells two more.

We attacked this in three layers:

  • Vendor-side stock toggles: the vendor app's home tab is a one-tap mark-out-of-stock list, sorted by today's most-ordered SKUs. Takes 30 seconds at the start of each shift.
  • Stock-out detection on the customer side: if an SKU is ordered three times in 30 minutes from a vendor, we auto-flag it for review and show the vendor a nudge.
  • Auto-substitute & refund flow: if a stock-out happens after order acceptance, the customer gets a substitute suggestion (with photo) on the app — accept, reject, or replace with credit. Resolution time dropped from 8 minutes (WhatsApp) to under 90 seconds.

Cancellations from stock-outs went from 8% to 1.4% in three months.

Go-to-market & ramp

We launched in a single neighborhood — five vendors, 200 hand-recruited customers, four weeks of bug-bashing under heavy ops involvement. The mistake we did not make: we resisted the pressure to expand earlier. The data from those four weeks reshaped the rider app twice and the vendor app three times.

City rollout was driven by a configuration-first architecture. Adding a city = creating a city record, defining delivery zones, setting per-category commissions, and onboarding vendors. A new city went live in six working days the third time round.

Results

12,000+Monthly Active Users
320+Vendors Onboarded
850+Daily Orders (steady-state)
4.7 ★Customer App Rating
1.4%Cancellation Rate (from 8%)
ZeroAggregator Commissions Paid
18 minsAvg Delivery Time
32%Repeat-Order Rate (90-day)

“We owned our customer relationship for the first time. The aggregator commissions we used to bleed are now in our P&L. The team got the vendor app right — that is the unsexy thing nobody else gets right.”

Co-Founder & CEO

Multi-Vendor Marketplace · Tier-2 India

What we would do differently

Build the offer engine into v1, not v2. We launched without sophisticated targeting and the first three city marketing campaigns relied on flat 10% promos, which trained the wrong cohort. By v2 we shipped cohort + behaviour targeting; by then we had spent on customers we did not need to.

Building a multi-vendor marketplace?

Whether you are replacing aggregator dependence or scaling a regional brand, we ship marketplace v1 in 4-5 months with the operational discipline you actually need. Quotes are scoped against builds like this.

Get a Free Consultation

Get Digital Growth Tips in Your Inbox

Weekly insights on app development, web design, SEO, and marketing. No spam — just actionable advice.

Join 2,500+ business owners. Unsubscribe anytime.