Home/ Case Studies/ Online Fish Delivery Marketplace
Marketplace · Cold-Chain · Hyperlocal

Online Fish Delivery Marketplace — Same-Day Cold-Chain App for Coastal India

A coastal-India seafood brand wanted to take fresh fish from the boat to the customer's door in under 90 minutes — without owning the entire supply chain. We built a marketplace app with cold-chain SLAs, vendor onboarding, and rider-network integration that hit 9,000 monthly orders by month seven.

9,000+Monthly Orders
240+Vendors Onboarded
18 minAvg Delivery Time
4.6 Customer Rating

Project at a glance

Industry
Marketplace · seafood · cold-chain hyperlocal
Scope
Customer app, vendor app, rider app, admin web
Team size
7 engineers + 1 PM + 1 designer
Timeline
4 months to v1 · 7 months to scale
Regions
Coastal Karnataka + Goa; architecture portable to any coastal region
Status
Live · ITD on monthly retainer

The client & the problem

Selling fresh fish online is two engineering problems: a marketplace (matching customer to vendor), and a cold-chain (getting it there before it spoils). Most aggregators don't bother — fresh-fish is a tiny fraction of grocery orders. The client wanted to own this category in coastal India where fish is a daily-purchase staple.

  • Cold-chain SLA: Fish loses 30% perceived quality after 4 hours unrefrigerated; 90-minute door-to-door is the brand promise.
  • Vendor concentration: Two harbour-front vendors had 60% of supply; concentration risk was existential.
  • Quality variance: No standard for "A-grade fresh"; customer complaints were judgment-call disputes.
  • Rider economics: Single-pickup per order made unit economics impossible; multi-pickup hub model needed.
  • Inventory unpredictability: Daily catch varies; vendor stock turns over completely each day.

The solution

Hub-and-spoke model: vendors deliver fresh catch to a refrigerated hub, hub-staff grade + pack + dispatch via rider network. The app coordinates the whole flow with sub-minute updates.

1. Customer app (Flutter)

Catch-of-the-day feed (refreshed twice daily), vendor + rating filter, cart, scheduled delivery slots, 90-min express, order tracking, freshness-guarantee return flow, ratings.

2. Vendor app (Flutter)

Daily catch upload (photo + weight + price), hub-arrival check-in, payout dashboard, return-handling, rating breakdown.

3. Rider app (Flutter)

Hub-pickup-list, multi-drop route (up to 5 orders), cooler-bag scan-in / scan-out, OTP delivery, daily earnings.

4. Admin / hub-ops web (React)

Hub-arrival queue, grading workflow, packing assignment, dispatch board, dispute desk, inventory + pricing override, daily reports, vendor onboarding.

5. Backend (Node + Firebase + Postgres)

NestJS API on Postgres, Firebase RTDB for live order state and rider-location streams, Redis for hub-staff handoffs, Twilio + FCM for notifications, Razorpay for payments.

Tech stack & why

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

Flutter 3.x NestJS TypeScript PostgreSQL Firebase RTDB Redis Razorpay Twilio FCM Google Maps Platform AWS EC2 + RDS GitHub Actions Sentry

Postgres for transactional + Firebase for live state: the split keeps cost manageable (Firebase only for the hot stuff) and makes reporting easy (everything settles to Postgres). The hot data is small; the cold data is huge.

Flutter across all three apps: one design system, one team, three apps in two stores. Build cost was ~40% of doing this in native.

Hub-ops web on React, not Flutter: staff at the hub use desktops with multiple browser tabs. A web app suits that workflow far better than a phone app.

The hardest technical problem we solved

Daily inventory orchestration.

A fish marketplace is not like a grocery marketplace where SKUs are stable. Every day, vendors arrive with different catches in different quantities at different prices. The customer-facing menu has to refresh twice a day with what is actually available — without breaking carts that are mid-checkout.

We modeled inventory as time-bucketed (morning catch / evening catch). Vendor uploads create a bucket; customer cart-locks-in a bucket-version; if the bucket changes mid-checkout, the customer sees a substitution-or-refund prompt within 8 seconds.

Cancellation rate from inventory mismatch dropped to 1.1% — well below the 5% industry default. Daily merchandising (which catch to highlight, which vendor to feature) became data-driven.

Go-to-market & ramp

Single town launch — Mangaluru — with 12 hand-picked vendors and 200 hand-recruited customers. Six weeks of intensive ops involvement. Then expanded along the coast: Udupi, Karwar, Goa.

Vendor onboarding was the constraint, not engineering. We built a self-serve KYC + photo-verify flow that cut onboarding from 4 days to 90 minutes.

Results

9,000+Monthly Orders
240+Vendors Onboarded
18 minAvg Delivery Time (express tier)
4.6 ★Customer App Rating
1.1%Inventory-Cancellation Rate
5Coastal Cities Live
ZeroCold-Chain SLA Failures (90-day)
36%Repeat-Order Rate (90-day)

“Fish-online is a category most aggregators write off. The platform plus the hub model makes the unit economics work where everyone said they couldn't.”

Founder

Coastal Seafood Marketplace · Karnataka

What we would do differently

Start with cooler-bag tracking from day one. We treated cold-chain as a process problem first, a tech problem second; turns out the bag-scan flow eliminated 80% of disputes. Should have been week-one, not month-three.

Building a hyperlocal or cold-chain marketplace?

Hyperlocal categories that aggregators ignore are the best opportunities — if you have the operational discipline. Talk to a team that has shipped marketplace + cold-chain platforms before.

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.