Meowmbai: Mumbai's Cat Map, Built from Scratch
A community-driven platform to discover, map, and celebrate Mumbai's street cats.
View live product →Founded and grew Meowmbai, a live map of Mumbai's street cats, from a passion project to 20,000+ users and 1,700+ cats mapped, earning national and international press (The Independent, India Today, The Print, Mumbai Mirror, Free Press Journal) with zero PR spend. Identified feeding logs as the strongest retention driver and prioritized the roadmap around it, formalized partnerships with FurFly and The Feline Foundation, and scoped a Phase 01 mobile app off proven core-platform parity.
Mumbai has thousands of street cats. Nobody knew where.
Cat lovers, feeders, and rescuers in Mumbai had no shared way to document sightings. Photos stayed in WhatsApp groups, locations were described in words, and there was no map, no archive, no community layer to any of it.
The product vision from day one: something as simple as Instagram but with a map at its core, so anyone could spot a cat, pin it, and the whole city could see it.
- ·Before: sightings scattered across WhatsApp, no location data, no way to discover cats nearby, no community record.
- ·After: a live map of every spotted cat in Mumbai, browsable by neighbourhood, uploadable in under 60 seconds.
Three rules that shaped every screen
Early on I set constraints that every product decision had to pass through: the map is the product, friction kills uploads, and there are no usernames.
- ·Map first — every screen (feed, explore, upload) orbits the map view, not the other way around.
- ·2-tap upload — photo, confirm location, done. No accounts, no names required.
- ·No usernames visible — cat names yes, human names no, which removed social anxiety from uploading.
- ·Mobile native — 90%+ of sightings happen on a phone, so the whole interaction model is one-handed.
- ·Started with a hard Mumbai geofence to keep the dataset dense and trustworthy, before expanding city-by-city later.
- ·Warm, not clinical — cream backgrounds, orange accents, rounded corners; it should feel like a Sunday walk, not a utility app.
A tight surface area, deliberately
Four tabs. Each does exactly one thing: Map (all cats, clustered by proximity), Feed (an infinite scroll grid), Spot (upload a sighting), and Explore (a neighbourhood leaderboard with cat carousels). No settings page, no profile, nothing to configure.
Every third-party service was evaluated on one question: is there a free path that doesn't compromise quality? Most of the time, yes — which is what kept the whole platform running at zero marginal cost per upload.
- ·Map: single API call loads every cat; Mapbox clustering handles display at every zoom level.
- ·Feed: lazy-loaded infinite scroll, no pagination.
- ·Spot: photo → location (EXIF auto-fill or search) → post, with AI blocking non-cat images before they hit the database.
- ·Explore: neighbourhood leaderboard with live proximity detection when location is shared.
Ship cheap, ship real
Cat detection runs on HuggingFace's free ResNet-50 inference instead of a paid Claude vision call — equally effective at telling a cat from a non-cat, zero ongoing cost. Similar Cats needed no ML model at all: each image is reduced to a dominant colour tag via Sharp and matched against other cats with that tag.
Location comes from EXIF GPS when available, or Mapbox Geocoding scoped to a city's bounding box otherwise. Images are compressed client-side, uploaded to Cloudflare R2 via presigned URLs, and processed into a thumbnail through a Sharp pipeline.
- ·Claude API → HuggingFace ResNet-50: replaced a paid vision call with an equally effective free one.
- ·Viewport-based map queries → load all cats in one call, let Mapbox clustering do the rest.
- ·4-step upload progress bar → removed once the flow collapsed to one meaningful step.
- ·Liquid-blob cat pins → a plain 52×52px square pin, because the blobs looked cheap at map scale.
What I locked down, what I learned
A community platform needs to trust its data, so every API endpoint got audited for ownership enforcement before launch: a three-layer Mumbai geofence (client EXIF check, Mapbox bbox, server-side Zod validation), HTTP Basic Auth on every admin route, and a device fingerprint tying uploads to their owner without requiring accounts.
The clearest lesson: the counter has to match what you see. A corner counter reading 99 cats while only 6 were visible on the map was the single most trust-destroying bug in early testing — loading all data at once and letting Mapbox cluster it was the fix, and it should have been the architecture from day one.
- ·Ship the map first — a working map with real pins was worth more than a polished upload flow with no data.
- ·Remove before you add — progress bars, username displays, neighbourhood emojis all came out; every session started by asking what to cut.
- ·Free tiers are good enough until they're not — solve the problem cheaply first, upgrade only when the free path actually breaks.
- ·Design for the user who uploads once — most spotters upload once or twice, so the flow has to feel instant and low-stakes on the first try, not optimised for a power user.
Growth, not just a launch
Cats mapped grew 61% within hours of the first public share (117 → 188 on day one) — the signal that said keep shipping, not polish. The same core platform later expanded from Mumbai-only to 8 cities (Bangalore, Delhi NCR, Pune, Hyderabad, Chennai, Kolkata, Ahmedabad) with zero rebuild.
Idea to public launch took 14 days, solo, AI-assisted, with no funding and no team. What followed was 7 press features across national and regional outlets with zero PR spend — journalists found the product and wrote about it.