356 lines
17 KiB
Markdown
356 lines
17 KiB
Markdown
# 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._
|