Problem Statement
Every lunch and dinner is a 10–45 minute lean-back window. People want something good on screen — but every platform they open is optimised for binge sessions, not meal-sized viewing. The result: endless scrolling, defaulting to the same rewatch, or giving up entirely.
The gap isn't content quality — it's discovery under time pressure. Nobody can recall what they'd actually enjoy when the food is getting cold and decision fatigue kicks in. Availability beats preference every time.
User Research (n=17)
Ran a structured survey on LinkedIn targeting urban professionals who eat alone regularly.
76%
Watch during meals 4–5x/week
65%
Rewatch due to memory gap, not preference
3.5/5
Avg. satisfaction with current options
71%
Spend 1–10 min deciding what to watch
Personas
👨💻
The Solo Eater
Urban professional / WFH, 22–35
Eats alone 4–5x/week, wants something good in 20 min, zero effort
"I open YouTube, scroll for 10 minutes, then just rewatch Panchayat again."
👫
The Couple Screen
Two people, shared device, evening meals
A recommendation neither person vetoes — light, safe, enjoyable
"We spend more time deciding than eating. Someone just tell us what to watch."
Solution & How It Works
MealTime is a recommendation layer — not a streaming platform. It sits on top of YouTube and existing OTT apps, surfacing exactly 5 picks per meal session.
1
Taste Profiling
6 forced-choice cards across genres + 2 preference questions. Takes ~90 seconds. Builds a weighted tag vector.
2
Mood Selection
4 modes: "For you" (taste-dominant), "Make me laugh", "Make me think", "Just chill". Dynamic weight allocation per mode.
3
Scoring & Ranking
Each of 200 content pieces scored across 6 dimensions: quality, duration fit, tag match, genre match, novelty, and mood fit.
4
5 Picks + Reason
Weighted reservoir sampling from top 12 candidates. Each pick comes with a personalised reason line. Optional AI mode (Claude) for even sharper picks.
Scoring Engine
Two-mode dynamic weight system. In "For you" mode, taste vector drives 33% of the score — the biggest single factor. When a specific mood is active, mood fit jumps to 48% and taste drops to 12%.
Mood filtering is tag-based, not genre-based. Each content piece is scored 0–100 for mood fit using boost/penalty tag lists. A funny Drama surfaces in laugh mode. A boring Comedy sinks. Genre is a tiebreaker, not a gate.
Duration uses an asymmetric Gaussian curve — short content is penalised gently (you can watch another one), long content penalised harder (you can't finish it).
Content Database
😄 Comedy / Sitcom46 pieces — Panchayat, Gullak, The Office, Ted Lasso
🎭 Drama30 pieces — Scam 1992, Fleabag, The Bear, Family Man
🔍 Documentary27 pieces — Kurzgesagt, Veritasium, Dhruv Rathee, Explained
✈️ Travel / Lifestyle27 pieces — Visa2Explore, Yes Theory, Mark Wiens
🎤 Stand-up25 pieces — Zakir Khan, Bassi, Mulaney, Hannah Gadsby
📺 Reality / Talk20 pieces — Shark Tank India, Hot Ones, Kapil Show
Hindi (69) · English (89) · Bilingual (16). All hand-curated with quality scores, tags, and search-intent URLs.
Success Metrics (MVP Targets)
>40%
Recommendation acceptance rate
>4/5
Post-session satisfaction
Key Design Decisions
Tag-based mood filtering over genre exclusion: The original approach excluded entire genres per mood (all Drama blocked in laugh mode). This created false negatives — funny Dramas hidden, unfunny Travel content showing. Switching to per-item tag scoring fixed accuracy without losing the mood constraint.
Dynamic weight allocation: A user's taste profile and their current mood can conflict. When mood is active, it takes 48% of the score so it can't be overridden by taste. In "For you" mode, taste gets 33%. Clean separation, no contradictions.
BYOK AI model: Claude API adds personalised reason lines and smarter taste profiling. But the app works fully without it — hardcoded scoring is the default. AI is an enhancement layer, not a dependency. Cost: less than ₹1 per session.
Search-intent URLs over deep links: Instead of direct platform links (which break when content moves), every recommendation links to a YouTube or Google search for that specific title. Slightly more friction, zero broken links.
Tech Stack
React (CRA)Frontend, deployed on Vercel
Custom Scoring EngineTag matching, mood filtering, weighted sampling
Claude API (Sonnet)BYOK model for AI-powered recommendations
localStorage + sessionStorageAll data client-side, no server
Roadmap
- Phase 1 (Shipped): Onboarding, scoring engine, mood filtering, feedback loop, AI mode, 200 content pieces
- Phase 2: YouTube Data API integration, content thumbnails, couple/shared screen mode
- Phase 3: 500+ content pieces, proactive meal-time notifications, native app