Roadmap
What's done, what's in progress, and what's coming next.
103
All Tasks88
Completed0
In Progress4
Planned11
FuturePhase 1: Foundation
Completed
Data pipeline, adapters, and database
✓ Unified Game schema
Single type that all data sources map to — board games, video games, word games all in one format.
✓ BGG Adapter (XML API)
Full integration with BoardGameGeek XML API2 — Bearer token auth, XML parsing, 202 retry logic, suggested player count polls.
✓ RAWG Adapter (Video Games)
80k+ video games from RAWG API with metacritic, ESRB, platforms, genres, screenshots.
✓ Word & Party Games Dataset
47 curated word and party games including 27 "no equipment needed" games like Charades, Mafia, 20 Questions.
✓ Supabase Database + Schema
PostgreSQL with pgvector extension, RLS policies, indexes, full-text search, and vector similarity.
✓ BGG Kaggle Import (22k games)
Bulk import from Kaggle dataset with mechanics, themes, categories, designers, publishers.
✓ BGG Live API Crawler
Scanning 400k BGG IDs to replace Kaggle data with real descriptions, ratings, and full metadata from the live API.
✓ RAWG Crawler (80k+ games)
Automated pagination with exponential backoff, detail backfills for descriptions and extended metadata.
✓ IGDB Adapter (Video Games)
20k+ video games from IGDB with rich genres, themes, keywords. Twitch OAuth2, Apicalypse queries. Much richer metadata than RAWG.
✓ RAWG→IGDB Deduplication
Removed 13k duplicate games that existed in both RAWG and IGDB, keeping the richer IGDB version.
Phase 2: Auth & User System
Completed
Accounts, profiles, and preferences
✓ Supabase Auth (Email/Password)
Signup, login, session refresh proxy, cookie-based auth.
✓ Profile Hub
Stats dashboard, favorites, reviews, saved presets — all in one tabbed view.
✓ Saved Preference Presets
Name and save questionnaire preferences for quick re-use without answering all questions again.
✓ User Reviews & Ratings
1-10 rating + text review per game. Reviews are publicly readable, own-write.
✓ Favorites / Game Library
Bookmark games to a personal library with one-click add/remove.
✓ Recommendation Settings
Popularity mode (popular/any/hidden gems), minimum rating, source toggles.
✓ Google OAuth
One-click Google login via Supabase + Google Cloud OAuth 2.0. PKCE flow with cookie-based code verifier for SSR compatibility.
✓ Guest Mode
LocalStorage preferences auto-saved on questionnaire submit, restored on next visit. Signup prompt after 3 recommendations. Guest favorites (limited to 5).
Phase 3: Questionnaire & UI
Completed
Interactive preference collection and results
✓ 7-Step Questionnaire Flow
Game type → player count → time → complexity → genres → mood → free text, with slide transitions between steps.
✓ Multi-Select Game Types & Time
Select multiple game types (board + video) and time ranges simultaneously.
✓ Free Text Keyword Matching
Type "I like roguelike games" and the engine extracts keywords to boost matching games. Handles multi-word terms like "deck building" and "social deduction."
✓ Results Page with "Why" Reasons
Each recommended game shows reason chips explaining why it was picked.
✓ Quick Collections on Landing Page
Date Night, Quick Play, Party Night, Strategy Deep Dive — one-click preset recommendations.
✓ Browse Page with Filters
Full game catalog with source, type, and tag filters + server-side pagination.
✓ Game Detail Pages
Full game info, similar games section, review form, favorite button.
✓ LLM-Powered Free Text Parsing
GPT-4o extracts structured preferences from natural language. Negative preferences ("no war games"), exact time extraction ("under 30 min"), auto-detects board game from mechanics. Two-tier cache with fuzzy matching.
Phase 4: Recommendation Engine
Completed
Multi-layer scoring, embeddings, and learning
✓ Layer 1: Rule-Based Scoring (10 dimensions)
10 weighted dimensions: type, players, time, complexity, genre, mood, free text, quality, popularity, recency. Soft preferences with fallback — never returns zero results.
✓ Layer 2: Content-Based Filtering (pgvector)
768-dim hash embeddings + 1536-dim OpenAI semantic embeddings. Cosine similarity via HNSW index.
✓ Layer 3: Collaborative Filtering
Item-based and user-based collaborative filtering. "Users who liked Catan also liked Ticket to Ride." Activates when enough reviews exist.
✓ Layer 4: Feedback Loop
Reviews and favorites update the user's preference vector in real-time. The system learns what you like with each interaction.
✓ Hybrid Candidate Fetching
5 parallel sources: 250 by vector similarity + 250 by rating + tag-based GIN lookup + full-text search + popularity cache. Deduplicated and scored.
✓ Diversity Re-ranking
MMR algorithm prevents 20 strategy games in a row. Ensures category/mechanic spread in results.
✓ Rejection Learning
"Not This" feedback penalizes games with similar tags in future recommendations.
✓ "Not This" + "More Like This" Buttons
Interactive feedback on every result card. Thumbs-down removes and records negative signal. More Like This re-searches with that game's attributes.
Review-Weighted Similarity
Weight recommendations from users with similar preference profiles higher. A strategy gamer's review matters more to another strategy gamer.
Phase 5: Polish & Delight
Completed
Animations, design, and user experience
✓ Game Night Glow Color Theme
Indigo + Coral + Teal + Amber palette applied across all components with MUI theme tokens.
✓ Animated Landing Page
Motion-powered hero with parallax scroll, stagger reveals, floating dice decorations, and animated stat counters.
✓ 3D D20 Dice Roller
Physics-correct rigid body rotation with quaternion integration, precession for multi-axis tumble, parabolic bounce arcs. Natural 20 = confetti. Natural 1 = blood drips + screen shake.
✓ Loading Skeletons
Skeleton cards during game loading for perceived performance.
✓ Dark Mode
Full light/dark mode via createAppTheme. System default detection, localStorage persistence, toggle in header + mobile nav + settings page.
✓ 6 Color Theme Presets
Game Night Glow, Ocean Breeze, Neon Arcade, Forest Grove, Sunset Mesa, Midnight Royal. Picker in Settings UI with color swatches.
✓ Themed Loading Animations
GameLoader component with 3 variants: bouncing dice, shuffling cards, swaying magnifying glass. Context-aware.
✓ Staggered Card Reveal Animation
Game cards slide up with staggered 40ms delay per index. Motion spring physics for natural feel.
✓ Rating Counter Animation
AnimatedRating component counts up from 0.0 to value over 800ms, delayed until after card reveal.
✓ Favorite Heart Micro-Animation
12 colored particles burst (mixed circles + squares), heart bounces with spring animation, optimistic update.
✓ Scroll Progress Indicator
Thin gradient line (indigo→coral), direct DOM manipulation via requestAnimationFrame for zero latency.
✓ Page Transition Animations
Fade-in on route change. (No exit animation — Next.js App Router limitation.)
✓ Parallax Game Art Headers
Mobile-only cover art scrolls at 40% speed with gradient overlay on game detail pages.
✓ Custom Tooltip Styles
500ms enter delay globally, styled with rounded corners + shadow, descriptive not duplicative.
✓ Nav Microanimations
Emoji wiggle on button hover (CSS keyframe), hover lift (motion), tap scale.
✓ Match Percentage Badges
Green/yellow/gray % match badges on every result card based on score.
✓ Responsive Polish
Mobile-first refinements across all pages.
✓ Lucide Icon System
Replaced 100+ emojis with Lucide React icons across 25 files. Consistent, professional iconography.
✓ PWA Support
Manifest, service worker, PWA icons (dice design). Add to homescreen ready.
✓ Accessibility
Skip-nav link, aria-labels on all IconButtons, form accessibility verified.
Phase 6: Growth & Monetization
Mostly Complete
Hosting, marketing, and revenue
✓ Vercel Deployment + CI/CD
Production deployment with auto-deploy from main branch.
✓ Custom Domain (boredgame.lol)
Cloudflare DNS, SSL, email routing (info@ + contact@). Full rebrand from "Recommend a Game".
✓ Shareability & Social Cards
Dynamic OG + Twitter images via Next.js ImageResponse. Share menu with Copy Link, Twitter/X, Facebook, Reddit.
✓ AI-Generated Blog
GPT-4o daily blog generation with 365 rotating topics. Vercel cron at 6am UTC. SEO-optimized with affiliate links and internal game links.
✓ Amazon Affiliate Links
Buy buttons on every game card and detail page. Tag: boredgame-20. Board games link to Amazon, video games to Steam.
Google Ads Integration
Apply for AdSense once traffic builds.
✓ Email Verification
Supabase confirm email enabled with branded templates (signup, reset, change).
✓ SEO Foundation
robots.txt, sitemap.xml, JSON-LD (WebSite, BoardGame, VideoGame, FAQPage, BlogPosting), canonical URLs, Google Search Console, Google Analytics.
✓ Help Desk / Feedback
Contact page, FAQ page, feedback button (sends via Resend to email), "why did you dislike this?" popover on thumbs-down.
✓ Share a Game Night Invite
/invite page with share button. Web Share API on mobile, clipboard on desktop.
✓ Newsletter Signup
Email capture on landing page. Supabase storage. Ready for Mailchimp/Resend integration.
Weekly Digest Email
"3 games you might love this week" personalized email. Requires list integration.
Phase 7: Fun Gimmicks & Engagement
Planned
Delighters, gamification, and social features
✓ Achievement System (43 achievements)
43 achievements across 8 categories — all with active triggers. Dice, Discovery, Social, Reviews, Settings, Easter Eggs, Time, and Meta. Animated toast notifications with rarity-colored borders.
✓ D20 Dice Skin System
Full dice creator with colors, materials, textures. Public sharing via Dice Gallery. Voting/leaderboard. Custom uploads.
Spin the Wheel Randomizer
Alternative to the d20: a colorful prize-wheel where segments are game names from filtered results. Tap to spin, satisfying deceleration, lands on a game.
✓ Daily Game Pick
Deterministic high-rated game of the day on homepage. Redis cached. Only well-known games (7.0+ rating, 500+ votes, with image).
Game Night Playlist Generator
Input hours available + player count. Engine builds a 3-4 game playlist: warm-up (light) → main event (medium) → wind-down (chill). Ordered by complexity arc.
Game Night Timer
Full-screen timer/stopwatch with the game's art as background after picking a game. Useful for timed games and tracking play sessions.
"What Should WE Play?"
Multi-player preference merging. Each person answers the questionnaire on their phone via room code. Results merged to find games everyone enjoys.
Phase 8: Recommendation Quality
Completed
Making recommendations actually great
✓ "Not This" Button
Thumbs-down removes game from results and records negative feedback. Rejection learning penalizes similar games in future.
✓ "More Like This" Button
Re-runs engine seeded with that game's categories and mechanics. Instant discovery from any result.
✓ Match Percentage Display
Green/yellow % match badges on each result card showing recommendation confidence.
✓ Feedback API
POST /api/feedback with upsert to user_game_feedback table. Supports thumbs-up and thumbs-down.
Preference Learning Banner
After showing results, ask "Were these recommendations helpful?" Feedback adjusts scoring weights over time.
Phase 9: Advanced Intelligence
Partial
LLM integration and smart features
✓ LLM Free Text Parser
GPT-4o-mini parsing with DB enrichment, two-tier fuzzy cache, and smart questionnaire pre-fill.
✓ Advanced LLM Prompt
Expanded genres (50+), mechanics (30+), tone/intensity detection, natural language player count, better examples.
✓ Better Video Game Data (IGDB)
20k+ games from IGDB with rich genres, themes, keywords. "A metroidvania about bugs" now finds Hollow Knight.
✓ Caching Layer (Redis)
Upstash Redis caching on recommend (2min), browse (5min), game detail (10min), similar games (10min).
✓ OpenAI Semantic Embeddings
1536-dim embeddings via text-embedding-3-small. Captures meaning — "build your deck" matches "Deck Building" even without exact tags.
Conversational Recommendations
Chat-style interface where users describe what they want and get iterative, conversational recommendations.
Game Group Matching
Multiple users input preferences, engine finds games everyone will enjoy. "Find a game for our group."
Trending / Seasonal Recommendations
Surface games trending this week, seasonal picks (Halloween horror games, holiday party games).
✓ BGG Account Integration
Connect BGG username to import collection and ratings. Auto-converts to internal feedback signals. Onboarding prompt for logged-in users.
✓ LLM Reranking (GPT-4o)
Second-stage reranker reviews top 25 candidates and picks the best matches using board game knowledge. Catches everything rule-based scoring misses.
✓ LLM Query Expansion
Creative intent understanding for any input. Expands "spaghetti and meatballs" into food/cooking themes. Runs in parallel with candidate fetch.
✓ BGG Mechanic Alias Map
Maps common terms to BGG taxonomy. "Deck Building" -> "Deck, Bag, and Pool Building". 25+ aliases for reliable mechanic matching.
✓ FAQ / Tutorial / Onboarding
FAQ page, onboarding dialog for first-time users, BGG sync prompt for logged-in users.
Conversational Recommendations
Chat-style interface where users describe what they want and get iterative, conversational recommendations.
Game Group Matching
Multiple users input preferences, engine finds games everyone will enjoy.
Trending / Seasonal Recommendations
Surface games trending this week, seasonal picks (Halloween horror, holiday party games).
Phase 10: Performance
Partial
Making everything fast at scale
✓ Kill all ILIKE queries
Replaced ILIKE full table scans with GIN-indexed tsvector RPCs. Biggest single speedup.
✓ 7 Partial/Composite Indexes
Indexes matching exact browse and recommend query patterns. Partial indexes for popularity modes.
✓ Stored tsvector Columns
Pre-computed name_tsv and description_tsv columns with GIN indexes. Instant full-text search.
✓ Reduced Column Selection
Shared GAME_SELECT_COLUMNS (23 cols) replaces SELECT * (40+ cols). ~50% less data transfer.
✓ Timeout Guards
Each candidate fetcher wrapped in 8s timeout. Recommend always responds even if one source is slow.
✓ Pre-computed Popularity Cache
38 Redis lists with 1,390 games. Instant fallback for cold starts and common queries.
✓ match_games RPC Fix
Removed WHERE clause that was defeating HNSW index performance. Vector search went from timeout to ~1s.
Meilisearch Integration
Dedicated search engine for sub-100ms browse/search. Self-hosted $5-15/mo. Guide ready at docs/MEILISEARCH-SETUP-GUIDE.md.
Last updated: March 30, 2026