I identified a real unmet need in the Indian diaspora dining market, defined the product strategy, designed the full system, and shipped a live product end-to-end — using Claude as my engineering partner and applying 10 years of product design craft to direct every decision.
Indeats is my answer to a product gap I experienced firsthand: the Indian diaspora in California — 1.4 million people with specific dietary identities, strong dining culture, and almost no tailored discovery tool. Generic platforms like Yelp and Google Maps treat Halal, Pure Veg, and Jain as secondary filters on a platform built for someone else entirely.
I didn’t just build a product. I made a series of deliberate product strategy decisions: what problem was worth solving, who the right users were, what the MVP scope should be, how to sequence features, and where to hold the line on scope. Then I used Claude as a full-stack engineering partner to ship it — applying the same design precision I bring to enterprise client work at Cisco, Microsoft, and Walmart.
Indeats is live at indeats.app. This case study is about the thinking that preceded the building — and what the build itself revealed about AI-native product development.
The Indian diaspora in California is not a niche. It is one of the most economically active, food-culturally distinct, and digitally fluent communities in the US. Fremont, San Jose, Sunnyvale, and Artesia are among the highest-density Indian-American populations in the country — and dining is central to how this community socialises, celebrates, and maintains identity.
The unmet need isn’t restaurants — there are thousands. The unmet need is trust + context + deals in one place. A family deciding where to eat on a Friday night needs to know: is it Halal? Is there a Jain-safe option? Is there a live deal tonight? Is there a cultural event this weekend? None of the existing platforms answer all four questions reliably.
Generic platforms bury dietary filters as secondary options. For this community, Halal / Pure Veg / Jain OK is the first decision — not a refinement of an already-made one.
→ Market gap: dietary identity as primary filterWeekly thali specials, festival deals, and happy hour offers change constantly. No platform surfaces these in real time with auto-applied booking logic.
→ Market gap: deals with zero friction to bookIndian food trucks and cloud kitchens are a significant part of how the community eats — particularly for younger demographics. Existing platforms treat them as afterthoughts.
→ Market gap: food format diversityGhazal nights, Holi feasts, chef’s tables — cultural dining events are how the community creates shared experiences. Zero aggregation exists for this.
→ Market gap: cultural event discoveryMost side projects start with a design. I started with strategy. Three decisions shaped everything that followed — and each one was made before I opened any design tool.
Vibe coding — generating production code through natural language with an AI model — is a genuine shift in how products get built. But the discourse around it misses the most important point: the quality of what AI builds is directly proportional to the quality of design thinking directing it. Imprecise designers produce imprecise AI output. Precise designers produce production-quality products.
For 10 years, the gap between what a designer could envision and what a team could ship was constrained by engineering bandwidth, sprint planning, and hand-off loss. AI collapses that gap. But it replaces it with a different constraint: the designer’s ability to describe interactions with enough precision to be implemented correctly.
Every time Claude produced output that didn’t match my intent, the root cause was my description — not the model. Vague design thinking produces vague implementation. The same principle that governs design critique governs AI direction: specificity is everything.
What previously required a sprint (filter system, scroll behaviour, mobile UX) now happens in a session. The constraint is no longer build capacity — it’s decision clarity.
Problem framing, information architecture, interaction design, edge case reasoning, and aesthetic judgment — none of this is automated. It’s more critical than ever because there’s no engineering team to push back on unclear specs.
The designer who can direct AI with the same precision they’d use to brief an engineer ships products that previously required a team. That’s not replacement — it’s amplification of craft.
The Indeats design system was established in the first session before a single page was designed. Every token, every component rule, every interaction pattern was defined and documented as a persistent reference that traveled across every session with Claude. This is the equivalent of a design handoff doc — but written for an AI partner, not an engineer.
The system rejects clinical white UIs and generic food-tech palettes. Dark navy creates contrast and anchors the navigation. Warm beige communicates food, comfort, and cultural familiarity. Terracotta accent carries the visual heat of Indian cuisine without being clichéd. The serif headlines bring warmth and editorial character. The sans-serif body stays readable and precise.
Every token decision traced back to the audience: a community that values cultural identity, warm hospitality, and authentic experience over polished tech minimalism.
| Token | Value | Rationale |
|---|---|---|
| --nav | #071827 | Dark navy — nav bar, hero sections, footer. Grounds the product in authority and contrast. |
| --bg | #f6f1ea | Warm beige — primary page background. Not white. Evokes food, warmth, parchment. |
| --surface | #ffffff | White — cards, inputs, filter chips. Contrast against the beige body. |
| --accent | #f2551c | Terracotta orange — CTAs, active chips, arrow links. Primary action colour. |
| --text | #1a1410 | Near-black with warmth — avoids the coldness of pure #000. |
| --muted | #6b6259 | Warm grey — secondary text, metadata, labels, muted copy. |
| --line | #e6d8c8 | Warm sand — dividers, borders, chip outlines. Never a cold grey. |
| deal badge | #c9320a | Darker terracotta — deal badges only. Distinct from the primary accent. |
| diet chip active | #171717 | Near-black active state for Halal / Pure Veg / Jain OK chips. Signals dietary identity, not just a filter. |
| Typeface | Weights | Use | Rationale |
|---|---|---|---|
| Playfair Display | 700, 800 (italic) | Hero headlines, section titles, stats, brand name | Warmth, editorial character, cultural reference to South Asian print tradition |
| DM Sans | 400, 500, 600, 700 | All body copy, nav, chips, labels, metadata | Clean, humanist, readable at small sizes. Works at 10px label through 17px body. |
Image-first, 148px image height, 14px border-radius, white bg, no border, shadow 0 2px 14px rgba(17,24,39,.08). Deal badge top-left (#c9320a, rect pill). Heart top-right. No buttons — whole card is the tap target. On hover: translateY(-2px) + shadow deepens.
Same radius/shadow/bg as Discover cards. 148px image height (up from 110px in v1). Keeps deal text, expiry badge, diet tags, and Unlock Deal button — appropriate for the evaluation context of a deals page.
Sticky at top:64px (below nav). Diet chips left — active state dark (#171717). Separator (1px vertical, --line). Quick chips right — active state accent orange. Scrolls horizontally on mobile without scrollbar. Applies globally across all sections simultaneously.
Dark navy sticky bar, z-index 100. Desktop: single row. Mobile: flex-wrap with nav-tabs at order:99 — creates clean two-row layout (logo+actions / tabs). Active tab: white text + 2px accent underline. Applied consistently across all 4 pages.
| Step | Behaviour | Implementation |
|---|---|---|
| Step 1 (default) | Horizontal scroll rows. Cards at 72vw so the next card peeks — inviting swipe. All 3 sections visible simultaneously. | flex-direction: row, overflow-x: auto, scroll-snap-type: x mandatory |
| Step 2 (expanded) | Tap → arrow or “See all” → other sections hide, active section expands to full single-column stacked list. ← Back appears. | .page-body.expanded + .discover-section.expanding via expandSection() |
| Desktop guard | expandSection() returns early on desktop. Resize to desktop auto-collapses. | isMobile() = window.innerWidth ≤ 760 |
Every deferred feature was a deliberate call. Indeats is a pilot. The goal of v1 is to validate the core loop — dietary-first discovery + deals + booking intent — not to build every feature the product could eventually have.