New project. Different category from everything else in the portfolio.
KnowYou is a trivia game where the questions are about the people you actually know. Create a private group with friends or family, answer questions about yourself, then play daily rounds where you guess each other's answers. The questions aren't general knowledge. They're personal. "What's Sarah's comfort food?" "Which decade would Marcus time-travel to?" "What's Jamie's most unpopular opinion?"
The pitch is simple: brain-training apps proved people will play daily games for self-improvement. KnowYou applies the same daily ritual to something emotionally rewarding. Actually knowing things about your people.
The Gap Nobody's Filling
The competitive landscape is weirdly barren. Quiz-link apps like "How Well Do You Know Me" have personal content but zero retention. You play once, share the link, and never open the app again. Social trivia games like Trivia Crack have great mechanics but impersonal content. Conversation card games like We're Not Really Strangers validated that people want to learn about each other, but they're not actual games.
Nobody combines personal trivia with real game mechanics, persistent groups, and a daily play loop. The audience exists (family group chats, friend circles, couples). The mechanics are proven (daily trivia, streaks, leaderboards). The emotional hook is obvious (people care about their people). But no one has put it together.
Four Game Types, One Daily Round
A daily round is 5-7 questions, takes 2-3 minutes. The questions pull from answers group members have already provided, mixed across four game types:
Multiple Choice is the starter. "What's Marcus's go-to comfort food?" with four options drawn from the group's answers. It works with minimal data and teaches players the core loop.
Swipe Sort (Who Said It?) shows a fact and you assign it to the person who said it. Swipe through group members until you find the match. It tests whether you know who in your group holds which opinions.
How Close? gives you a slider to guess someone's numeric answer. "How many hours does Sarah sleep on weekdays?" Scoring is proximity-based. Closer to the real answer, more points. Hot/cold feedback as you drag.
Oracle (Predict Their Answer) is the async twist. The game shows you tomorrow's question and asks you to predict what someone will answer. When they answer the next day, you get the reveal. It creates a 24-hour anticipation loop.
Each game type unlocks as the group's data grows. Multiple Choice works immediately. Swipe Sort needs at least 15 answered questions across the group. Oracle needs 30. The progressive unlock prevents dead-end games where there isn't enough data to build a good round.
The Answer-to-Play Gate
You have to give before you get. Each day, the app presents a question about yourself. Answer it, and your daily round unlocks. Skip it, and you don't play.
This solves the cold start problem. The game can't work if nobody has answered questions. The gate ensures every player contributes data before consuming it. It also keeps the question bank growing organically. No content team needed. The players ARE the content.
200 Questions, 8 Categories, 3 Tiers
The question bank has 200 curated questions organized across eight categories (favorites, memories, opinions, habits, relationships, dreams, hypotheticals, personality) and three depth tiers.
Tier 1 is surface level. "What's your favorite color?" Safe, low-stakes, gets people answering. Tier 2 goes deeper. "What's a skill you wish you'd started learning earlier?" Tier 3 gets personal. "What's a belief you hold that most people in your life disagree with?"
The game starts with Tier 1 questions exclusively. As the group accumulates answers, Tier 2 unlocks. Then Tier 3. The escalation mirrors how real relationships deepen. You start with favorites, then opinions, then the stuff that actually matters.
Question personalization was a subtle but important detail. The raw question "What is your favorite childhood memory?" becomes "What is Sarah's favorite childhood memory?" when it appears in a game round. Regex word-boundary replacement on "your"/"you" to the target player's name. Small touch that makes every question feel directed, not generic.
Lightning Round (Sprint 5)
The latest addition: 40% of non-Oracle questions get a 7-second timer. A circular countdown ring pulses red at 3 seconds. If time runs out, you score zero. If you answer quickly, you get a speed bonus (+10 points per second remaining).
The Timer Ring is the kind of UI element that makes or breaks time pressure. It's a circular countdown that fills counterclockwise, turns red and pulses at 3 seconds, and triggers a haptic bump at each second. The visual urgency escalates naturally. You don't need a number to know time is running out.
Lightning Rounds turn a casual daily ritual into something with stakes. Not punishing stakes. Just enough tension that you lean forward slightly and feel the clock.
Supabase as the Backend
This is a SwiftUI + Supabase project. PostgreSQL with Row Level Security, Auth (Sign in with Apple + Email OTP), Storage for photos, and Edge Functions planned for server-side round assembly later.
The RLS setup was the trickiest part. Group membership determines what you can see. "Show me all answers from people in my groups" requires checking group membership, which itself requires querying a table that has RLS. Recursive RLS policies are a real pitfall in PostgreSQL.
The fix: a get_my_group_ids() function with SECURITY DEFINER that bypasses RLS to return the authenticated user's group IDs. Other policies reference this function instead of querying the membership table directly. One function, no recursion, clean policies.
A PostgreSQL date column gotcha burned some time during Sprint 5. Supabase returns date columns as plain strings ("2026-03-30"), not ISO 8601 datetime ("2026-03-30T00:00:00Z"). The Swift Date decoder choked. Fix was simple (use String instead of Date for those properties), but it was the kind of thing that only surfaces when you have real data in the leaderboard.
The Reveal Screen
The most important screen in the app isn't the game. It's the reveal.
After you answer each question in a round, the app shows who said what, with personal context. "Sarah said 'Pad Thai' because it reminds her of the trip to Bangkok with her college roommates." The reveal is where the game delivers on its promise. The trivia is the mechanic. The reveal is the emotional payoff.
Getting reveals right required structured answers. No free-text input. Every answer is typed as JSON with a format field so the reveal can render it meaningfully. "What's your comfort food?" produces {"type":"text","value":"Pad Thai"} that the reveal screen can display, compare, and contextualize.
Free-text answers would have been easier to build and harder to make into good games. If someone types "pad thai" and someone else types "Pad Thai!!" they're the same answer but string comparison says otherwise. Structured answers keep the game engine clean.
What's Next
Photo games are next. Sprint 5 is halfway done. The remaining work adds five photo-based game types: Photo Drop (share a photo, group guesses context), Whose Is This? (identify the photographer), Pixel Unlock (photo revealed pixel by pixel as you answer correctly), When Was This Taken? (guess the year), and Which Would They Pick? (predict preferences between photo pairs).
Photo games bring content moderation into scope. On-device analysis via Vision framework or server-side moderation. That's the decision still pending.
The question bank needs to grow beyond 200 curated questions, but the framework is solid. Eight categories, three tiers, progressive depth escalation. The game's content pipeline is its players, and the answer-to-play gate ensures the pipeline stays fed.
Five sprints in. Four game types working. A Lightning Round that adds real tension. A reveal screen that delivers actual emotional payoff. And a question bank that grows every time someone opens the app.
The goal isn't viral adoption. It's a game that a family group chat plays for 2 minutes every morning with their coffee. Small audience, high engagement, real connection.