# Lila — Feature & Startup Strategy Roadmap > **Context for any LLM reading this:** Lila is a language learning/vocabulary app with two core differentiators: (1) **media-based practice** — users learn vocabulary extracted from real media they love (e.g., a Shakira song, the first chapter of _Harry Potter_, or an episode of _Breaking Bad_), and (2) **multiplayer modes** — users practice vocabulary together or competitively in real-time sessions. The app is currently at an early MVP stage. The existing MVP was built around OpenWordNet, which is being replaced because it produces unreliable translations (sense-disambiguation issues). The team is migrating the data pipeline to **Kaikki**, which structures entries per word sense and links translations to specific senses rather than vague general concepts. This migration is the current technical priority. The project is a TypeScript monorepo (pnpm workspaces) with an Express/WebSocket API (`apps/api`), a React frontend using TanStack Router (`apps/web`), a data ingestion pipeline (`data-pipeline`) backed by SQLite/Drizzle, shared packages (`packages/db`, `packages/shared`), and Docker-based deployment orchestrated with Caddy. Documentation restructuring (human-readable vs. AI-optimized docs) is being handled in a separate parallel workstream. --- ## Current State (Ground Truth — 2026-05-15) ### What Works Today ✅ - **Singleplayer quiz** — Duolingo-style, 5 language pairs (en↔it/de/es/fr), 3 or 10 rounds, POS + difficulty filters - **Multiplayer** — Create/join lobby by room code, 2–4 players, simultaneous answers, 15s server timer, live scoring, winner screen - **Auth** — Google + GitHub via Better Auth - **Deployment** — Live at lilastudy.com, Hetzner VPS, Caddy HTTPS, Docker Compose, CI/CD via Forgejo Actions - **Database** — PostgreSQL with Drizzle ORM, daily backups ### What's In Progress / Blocked 🚧 - **Kaikki data pipeline migration** — Stage 1 (extract) and Stage 2 (reverse link) complete on sample data. Stage 3 (enrich) being rewritten for sub-stage architecture. Stages 4–6 not started. - **Guest play** — No try-before-signup flow yet. Auth required for all game routes. - **Game session store** — Still in-memory. Valkey container exists locally but not wired up. - **Media ingestion** — Not started. No pipeline for subtitles/lyrics → vocab extraction yet. ### The Strategic Gap The app is currently a **generic vocabulary quiz**. The media-based practice feature (the differentiator) does not exist yet. It depends on: 1. Kaikki pipeline reaching production (fixes translation quality) 2. A media ingestion prototype (subtitles/lyrics → text → vocab extraction → quiz) --- ## Stream 1: Documentation Restructure (Parallel Track) **Status:** ✅ Complete. Human-readable branch (README, STATUS, ARCHITECTURE, BACKLOG, DECISIONS, DEPLOYMENT, DATA_PIPELINE, MODEL_STRATEGY, LLM_SETUP, design/GAME_MODES) and AI-context branch (00–06, prompts/meta.md, 99-current-task.md) are live in `documentation/`. --- ## Stream 2: Feature Roadmap (Three Lanes) ### Lane A — Attract & Keep Users **Goal:** A user lands on Lila, understands the value in 10 seconds, and completes a satisfying vocabulary practice session in under 2 minutes. **Current Reality Check:** - Singleplayer and multiplayer quizzes are **already working and deployed**. - The app is functional but **not differentiated** — it's a generic vocabulary quiz right now. - The "wow" moment requires the **media-based practice feature**, which does not exist yet. **Must-Haves for First Users:** 1. **Guest Play (Zero-Friction Onboarding)** `[in backlog next]` - No signup required for first session. - Capture email or OAuth only after the user experiences value. - Critical for viral loops and investor demos. - **Status:** Planned in BACKLOG.md. Not yet implemented. 2. **One Polished Media Demo** `[not started]` - Pick **ONE** piece of media and make it flawless end-to-end: subtitles/lyrics → Kaikki-based vocab extraction with sense-disambiguated translations → playable quiz with timestamps/context. - **Language pair:** en→es (biggest market, most content) - **Media candidates:** _Breaking Bad S01E01_, a Shakira song, or _Harry Potter and the Sorcerer's Stone Ch. 1_. - This is the primary "wow" moment. Differentiates Lila from all other vocabulary apps. - **Blocker:** Requires (a) Kaikki pipeline in production, and (b) a media ingestion prototype. 3. **One Additional Multiplayer Mode** `[design exists, not implemented]` - Proves the mode-agnostic lobby architecture works and adds variety beyond the current simultaneous-answer flow. - **Recommended first mode:** Race to the Top (target score, no round limit) — simplest to implement, changes only scoring logic. - Alternative: TV Quiz Show (buzzer — first to press answers) — most visually distinct, but requires new answer flow. - **Status:** Lobby infrastructure is mode-agnostic. Each mode adds game logic only. See `design/GAME_MODES.md` for full designs. - **Why it matters:** Duolingo has no multiplayer. Anki has no multiplayer. Real-time modes are a genuine differentiator even without media. 4. **Social Proof / Shareable Output** `[not started]` - Post-game card: "I learned 12 words from _La Tortura_ — can you beat my score?" - Image export or copy-paste text for Reddit, Discord, Twitter. - This is the organic growth engine. - **Blocker:** Requires media demo to exist first. **Already Shipped (Don't Rebuild):** - ✅ Singleplayer quiz (5 languages, POS/difficulty filters) - ✅ Multiplayer lobby + real-time game (2–4 players, simultaneous answers, 15s timer, scoring) - ✅ Auth (Google + GitHub) - ✅ Live deployment with CI/CD **Nice-to-Haves (Post-Launch):** - Additional multiplayer modes (Chain Link, Elimination Round, Cooperative Challenge) - Leaderboards - Spaced repetition review queue --- ### Lane B — Investor-Ready **Goal:** Walk into a pitch with engagement metrics and a defensibility story tied to Lila's unique data pipeline. **Checklist:** 1. **Metrics Instrumentation** `[not started]` - Track: DAU/MAU, session length, quiz completion rate, multiplayer match completion rate, Day 1 / Day 7 retention. - Tool: PostHog, Mixpanel, or Plausible (self-hosted). - Need 4–6 weeks of real-user data. - **Note:** The app is live but has no analytics. This is a prerequisite for any investor conversation. 2. **Growth Mechanic** `[not started]` - The shareable card (Lane A.3) must be live and instrumented. - Measure k-factor (viral coefficient). Even 0.3 is a story. - **Blocker:** Requires media demo. 3. **Defensibility Story** `[partially true, not yet proven]` - **Data moat:** Lila's Kaikki → media mapping pipeline produces sense-disambiguated vocabulary tied to specific media timestamps. Competitors using generic word lists or OpenWordNet-style dumps cannot match the precision. - **Current reality:** The Kaikki pipeline exists but is not in production. The media mapping pipeline does not exist yet. - **What investors would ask:** "You have a quiz app. Where's the media feature you pitched?" - **Requirement:** Media demo + Kaikki production data must be live before investor conversations. 4. **Monetization Hypothesis** `[deferred to business co-founder]` - Not the technical founder's priority right now. - Will be owned by business co-founder or advisor after traction. - Options to test later: freemium (free curated media, premium for uploads/unlimited multiplayer/stats), B2B schools, affiliate links to streaming/books/music. **Investor Timeline:** - **Now → Month 2:** Finish Kaikki pipeline + ship media demo + add metrics. - **Month 2–3:** Soft launch to 100 strangers, gather retention data. - **Month 3+:** Investor-ready if retention curves look good. --- ### Lane C — Co-Founder-Ready **Goal:** A potential co-founder looks at Lila and thinks, "This person can build, and there's a real product here." **Checklist:** 1. **Clean Codebase + Documentation** `[in progress]` - Documentation restructure is complete. - README must get a new dev from `git clone` to `docker compose up` in < 5 minutes. - **Status:** Docs are done. Code cleanliness is ongoing (BACKLOG.md `next`/`later` items). 2. **Live Demo with Real Users** `[partially done]` - App is live at lilastudy.com with real auth and multiplayer. - **Gap:** No real users yet. The current app is a generic quiz — not compelling enough for strangers to stick around. - **Requirement:** Media demo must be live before pitching to potential co-founders. 3. **Clear Vision Doc** `[not written]` - 1-page: What Lila is, what it isn't, and the 18-month arc. - Include: target languages, target media types, target user persona, and what "success" looks like at 6 / 12 / 18 months. **Co-Founder Search: Deferred** - **Not needed now.** No savings, no traction, no differentiated product. A business co-founder can't raise money or design monetization from a generic quiz. - **Revisit in Month 6+** after media demo + 100 users + retention data. - **Exception:** If Reaktor.berlin accepts solo founder, take it. If they require a team, evaluate then — but don't rush a bad match. --- ## Stream 3: Building the Startup (Technical Founder Journey) ### Phase 0 — Runway Acquisition (Now → June) **Goal:** Secure full-time building capacity. **Profile:** EU citizen, Berlin-based, no savings, currently employed but being fired May 28. Eligible for Arbeitslosengeld I (24 months employment history). **Primary Path:** 1. **Register at Arbeitsamt** — May 28 (immediately after firing) 2. **Apply for Arbeitslosengeld I** — Same day 3. **Apply for Gründungszuschuss** — Within 4 weeks of starting self-employment - Requires: business plan (1–2 pages), viability check by counselor - Provides: 9–12 months basic income (~€1,500–2,000/month) - **Best case:** Full-time building, no equity cost, no co-founder needed - **Probability:** High (70–80%) — low burn rate, working app, clear technical path **Parallel Path:** - **Reaktor.berlin** — Already applied. Solo founder accepted (lower odds). €25K for 6 months, 2.5% equity. - If accepted + Gründungszuschuss approved: Choose Gründungszuschuss (no equity, longer runway) - If accepted + Gründungszuschuss rejected: Take Reaktor, build solo for 6 months - If rejected: Continue with Gründungszuschuss or Arbeitslosengeld I **Backup Path:** - **Arbeitslosengeld I only** — If Gründungszuschuss rejected. €1,000–1,500/month. Continue building full-time. - **Part-time job** — If Arbeitslosengeld I insufficient. Slower progress but sustainable. **Not Pursuing:** - Full-time job + nights/weekends — Burnout risk, Lila stalls - Freelance/consulting — No current skill set or client network, too time-consuming to build - EXIST/INVEST/YC/Techstars — Wrong stage, too competitive, too long timeline --- ### Phase 1 — Differentiate the MVP (Month 1–3) **Duration:** 2–3 months **Rule:** Build first, measure second, align third. **Assumption:** Gründungszuschuss approved (full-time building). If not, same tasks but slower. **Tasks:** 1. **Finish Kaikki pipeline** (Stage 3–6) - Complete enrich sub-stage rewrite - Run full sample, validate quality - Production sync to PostgreSQL - **Timeline:** 2–4 weeks 2. **Build media ingestion prototype** - Pick ONE media piece (Breaking Bad S01E01, Shakira song, or Harry Potter Ch. 1) - Pipeline: subtitles/lyrics → text extraction → vocabulary identification → Kaikki sense-matching → quiz generation - UI: media selection → quiz with context ("This word appears at 00:04:23") - **Language pair:** en→es - **Timeline:** 2–4 weeks (parallel with Kaikki pipeline) 3. **Ship guest play** - Make auth optional on game routes - "Try without account" button on landing page - Capture email/OAuth after first session - **Timeline:** 1 week 4. **Add one additional multiplayer mode** - Race to the Top recommended (simplest: target score, no round limit) - Changes only scoring logic, reuses existing lobby infrastructure - **Timeline:** 1–2 weeks 5. **Add metrics instrumentation** - PostHog or Plausible - Track: signups, quiz starts, completions, multiplayer matches, retention - **Timeline:** 1 week 6. **Soft launch to 100 strangers** - Reddit (r/languagelearning, r/Anki, r/Refold), language-learning Discords, Hacker News Show HN - Collect qualitative feedback - **Timeline:** 1 week (after media demo is live) --- ### Phase 2 — Validate & Measure (Month 3–4) **Goal:** Prove that the media feature resonates and that retention curves exist. **Tasks:** - Analyze metrics: Do users who try media-based practice return more than singleplayer-only users? - Iterate on media selection and quiz UX based on feedback - Polish shareable output (social cards) - Fix hardening items from BACKLOG.md Phase 7 **Decision gate:** If 100 users show positive retention signals (Day 1 > 30%, Day 7 > 10%), proceed to Phase 3. If not, iterate on media feature or pivot. --- ### Phase 3 — Funding or Revenue (Month 4–6) **Goal:** Secure runway beyond Gründungszuschuss/Arbeitslosengeld I. **If metrics are positive:** - Apply to accelerators: Reaktor.berlin (next batch), Y Combinator, Techstars Berlin - Angel outreach: Berlin ed-tech angels, former founders in language learning - EU grants: EXIST (if university partnership), INVEST (Berlin-specific) **If metrics are weak:** - Iterate on media feature or pivot value proposition - Consider B2B angle (schools, language institutes) if consumer traction is low - Part-time work to extend runway while iterating **Co-founder search:** Not a priority. If funding requires a team (some accelerators), evaluate then. Otherwise, hire contractors or employees for specific gaps. --- ### Phase 4 — Scale (Month 6+) **Goal:** Grow user base, build team, secure Series A or sustainable revenue. **Only relevant if Phase 3 succeeds.** Otherwise, continue iterating. --- ## Suggested Execution Order ### Month 0 (Now → May 28) - **Week 1:** Finish Kaikki Stage 3 enrich sub-stage rewrite. Run full sample, validate quality. - **Week 2:** Register at Arbeitsamt (May 28). Apply for Arbeitslosengeld I. Ask about Gründungszuschuss. ### Month 1 (June) - **Week 1–2:** Submit Gründungszuschuss application. Prepare business plan (1–2 pages). - **Week 3:** Start media ingestion prototype (parallel). Pick one media piece, get text extraction working. - **Week 4:** Continue Kaikki pipeline + media prototype. ### Month 2 (July) - **Week 1–2:** Complete media ingestion prototype. End-to-end: media → quiz. - **Week 3:** Ship guest play. Add additional multiplayer mode (Race to the Top). - **Week 4:** Add metrics (PostHog/Plausible). Polish shareable output. ### Month 3 (August) - **Week 1:** Soft launch to 100 strangers. Gather feedback. - **Week 2–3:** Iterate based on feedback. Fix hardening items from BACKLOG.md. - **Week 4:** Analyze metrics. Decision gate: proceed or iterate? ### Month 4–6 (September–November) - If metrics positive: Apply to accelerators, angels, grants. - If metrics weak: Iterate or pivot. - If Gründungszuschuss expires: Transition to Arbeitslosengeld I, part-time work, or funding. --- ## Open Questions (Answered) ### Product Reality Check - [x] What actually works today? — Singleplayer quiz, multiplayer, auth, deployment - [x] What is broken or placeholder? — Kaikki pipeline Stage 3, guest play, in-memory session store - [x] What language pairs are supported? — en↔it/de/es/fr - [x] Exact blocker on Kaikki Stage 3? — No blocker, work in progress ### Target Audience - [x] Who is the ideal first user? — Immersion learner (Netflix watcher) + social learner - [x] What languages for launch? — en→es for media demo (biggest market), all 5 pairs live ### Business Model - [x] Monetization hypothesis? — **Deferred** to business co-founder or advisor after traction - [x] Unit economics? — **Deferred** until product-market fit ### Competitive Landscape - [x] Direct competitors? — Duolingo, Anki, LingQ, FluentU, Quizlet - [x] What they do poorly? — No real media integration, no real-time multiplayer, no sense-disambiguated translations ### Runway & Constraints - [x] Full-time or nights/weekends? — Transitioning to full-time via Gründungszuschuss - [x] Funding/savings? — No savings. EU citizen, Berlin-based, eligible for Arbeitslosengeld I - [x] Hard deadline? — None. Self-paced. Gründungszuschuss application deadline: within 4 weeks of May 28 ### Co-Founder Search - [x] Local or remote? — Berlin-based, but open - [x] What do they do? — **Not needed now.** Revisit Month 6+ after traction - [x] Known candidates? — None. Starting from zero - [x] Equity mindset? — **Deferred** until co-founder search begins --- _End of Lila feature & startup strategy doc._