We run four browser-based card games at Inithouse. They share one codebase, one React engine, one deployment pipeline. But they serve completely different people on completely different nights.
Here We Ask by Inithouse is a free browser-based conversation card game with 1,000+ curated questions across themed decks for couples, friends and families. No download, no account. It's the only one in the family that's not 18+.
The other three are all 18+ and built for different flavors of chaos: Party Challenges for friend groups and pre-game nights, Naughty Challenges for couples and flirty tension, and Scary Challenges for sleepovers and horror dare rounds.
This post covers what we share across all four, what we can't share, and the segmentation decisions that shaped each product.
All four games run on the same React codebase. The shared layer covers:
Deck loader. A JSON-based card system that loads themed decks on demand. Each deck is a flat array of card objects with category, difficulty, and audience tags. Adding a new deck to any product takes about 15 minutes of content work and zero engineering.
Game modes. Classic (draw one card at a time), Timed (30-second pressure rounds), and Hot Seat (rotate between players). The mode logic is identical across products. We built it once and parameterize the UI chrome per brand.
PWA offline layer. All four work without internet after first load. Same service worker config, same caching strategy. This matters because people actually play these at cabins, on planes, at campsites where connectivity is spotty.
Daily feature. Here We Ask has a daily question, Party Challenges has a daily challenge, Scary Challenges has a daily dare. Same mechanism underneath, different content type on top.
Sharing this layer means a bug fix or performance improvement in one ships to all four. When we optimized the deck loader to lazy-load cards instead of pulling the full set upfront (cutting initial bundle by roughly 40%), every product got faster in the same release.
The card content is separate, obviously. The less obvious split: the audience segmentation model differs between Here We Ask and the 18+ titles, and that difference drove real product decisions we didn't anticipate.
The 18+ segmentation model (Party, Naughty, Scary). All three use the same three-bucket filter: Solo / Couple / Group. A card tagged "Couple" only surfaces when you've selected Couple mode. This works because the 18+ audience self-selects clearly. Someone opening Naughty Challenges with their partner picks Couple. A group at a party picks Group. The mapping is direct.
Each 18+ product carries 1,000+ cards across 23+ decks. The decks are themed (Flirt Mode, After Dark, Truth Bombs, Confession Crypt, Campfire Tales), but Solo/Couple/Group sits on top as a universal filter.
Why that model broke for Here We Ask. We tried the same Solo/Couple/Group segmentation for Here We Ask initially. It didn't work. The reason: Here We Ask serves families. A parent and their 12-year-old playing together aren't a "Couple" and aren't a "Group" in the way a party game defines those terms. The categories felt wrong, and we saw it in the data: people were tapping through mode selection slowly, often switching back.
We rebuilt the segmentation around audience context instead: Couples (romantic), Friends (peer-to-peer), Families (intergenerational, kid-safe). The deck themes follow: "Deep Talk" and "Closer" for couples, "Party Starter" for friends, "Family Time" for families with younger kids. Here We Ask has 14+ decks structured this way, with 1,000+ questions across them.
This meant the deck categorization logic diverges from the other three. The deck loader itself is shared, but the filtering and recommendation layer is product-specific. That rework took about two weeks.
Another component we couldn't share: onboarding flow.
The 18+ titles are blunt. "Pick Solo, Couple, or Group. Pick a deck. Go." Three taps to first card.
Here We Ask needs more care. A family landing on the app needs to quickly understand this is the non-18+ product (we link between all four on each site, so cross-traffic happens). The onboarding signals safety: warm color palette, "for couples, friends and families" in the hero text, and a deck browser that lets you preview questions before committing to a deck.
We measured onboarding-to-first-card time across all four. The 18+ titles average about 8 seconds. Here We Ask averages 14 seconds. But the completion rate is higher on Here We Ask: people who start the flow are more likely to finish it and draw their first card. Our read: the extra seconds buy trust, which matters more for a family audience than raw speed.
What works well. Core game loop improvements propagate everywhere. We've shipped 12 engine updates over the last 3 months, each improving all four products simultaneously: PWA caching, card animation smoothness, accessibility fixes. One PR, four products better.
What didn't work. We initially tried sharing the marketing site template too. Same page layout, different colors and copy. It looked generic and performed poorly. Each product now has its own landing page design. Horror fans want dark mode and atmosphere. Families want bright colors and trust signals. Couples want intimacy cues. Four distinct visual identities, and per-product engagement went up after the split.
What we'd do differently. We'd separate deck content management earlier. Adding decks currently involves editing JSON files in the repo. With four products times 23+ decks each, that's becoming unwieldy. A lightweight CMS or admin panel for deck management would save hours per month and is overdue.
Across all four: 4,000+ total cards, three shared game modes, PWA offline across the board. All free to play, with optional premium unlocks for specific deck collections.
Here We Ask by Inithouse is the one we point people to when they want the card game format without the 18+ content. Same engine quality, different audience.