3
1 Comment

Why we forked our party game into a horror deck

We run Inithouse, a studio that builds small AI and web products. One of them is Party Challenges, a free 18+ browser card game with 1,000+ cards across 23+ decks. Players pick a mode (Solo, Couple, Group), draw cards, and go. No app install, no account. PWA, works offline.

About four months in, we noticed something in the data: the horror-themed decks inside Party Challenges were getting disproportionate play. Campfire Tales, The Abyss, Confession Crypt. Players who picked those decks stayed longer and came back more often than people playing the flirty or party decks.

That raised a question we kept circling back to.

New product or a filter?

The first instinct was simple: add a "horror" filter inside Party Challenges and surface those decks more prominently. Lower effort, no new domain, no split in marketing.

We tried it for about two weeks. The problem was context. A player landing on partychallenges.com expects party energy. Putting a "Campfire Tales" deck next to "Flirt Mode" and "Hot Takes Only" made the horror content feel like an afterthought. The tone clashed. Card descriptions that worked in a horror frame ("confess your darkest fear to the group, no hedging") felt out of place between drinking dares and flirty prompts.

The second problem was search. When someone types "horror card game for sleepovers" into Google, partychallenges.com is not what they expect to find. The domain name alone kills trust for that query.

So we decided to fork.

What we carried over

Scary Challenges is a free 18+ horror card game with 1,000+ cards across themed decks for sleepovers, groups and solo terror. It runs on the same architecture as Party Challenges: React, PWA, same card rendering engine, same offline sync, same no-account approach. The codebase diverged from a shared ancestor.

Three things transferred without friction:

The card data model. Every card has a deck, an intensity level, a mode tag (Solo/Group/Sleepover), and a text body. The schema did not care whether the content was "take a shot if you've kissed someone here" or "describe the last nightmare you remember in detail, including how it ended."

The PWA shell. Service worker caching, add-to-homescreen, offline play. Identical setup, different manifest and icons.

The daily challenge system. Party Challenges has a daily challenge; Scary Challenges has a daily dare. Same backend timer, different content pool.

What broke

Two things went wrong during the fork, and both were content problems, not technical ones.

Intensity calibration. Party Challenges uses intensity levels to escalate a session gradually: early cards are lighter, later cards push harder. We copied this system for Scary Challenges, but the scale did not translate. A "high intensity" party dare ("text your ex the last photo in your camera roll") is socially awkward. A "high intensity" horror dare ("go to the darkest room in the house alone, stay for 60 seconds, and report what you heard") can genuinely scare people. We had to recalibrate the whole scale twice. The first time, we compressed it too much and the session felt flat. The second time, we spread it wider and added a brief content warning at the top of the harder decks. That held.

Deck identity. Party Challenges has decks like Flirt Mode, After Dark, Truth Bombs. The names signal tone immediately. For Scary Challenges, we initially tried edgy single-word names: "Dread," "Vertigo," "Whisper." They sounded cool in a spreadsheet and meant nothing on a selection screen. Players could not guess what kind of experience each deck offered. We scrapped them and went with descriptive names: Campfire Tales (classic group stories), Nightfall (solo tension), Confession Crypt (dark confessions), The Abyss (the deck you play when nothing else is enough). Every deck name now tells you what you are signing up for.

Building 23+ decks from scratch

This is where most of the calendar time went. Writing 1,000+ horror cards across 23+ themed decks, each with its own tone, intensity curve, and mode compatibility, took about six weeks of focused content work.

The process was methodical. We wrote decks in clusters of three or four sharing a similar theme (supernatural, psychological, social horror), then tested each cluster in a group session. Cards that fell flat or produced confused silence got cut. Cards that made the room go quiet in a good way stayed.

One pattern we found useful: the best horror cards are specific. "Do something scary" produces nothing. "Walk to the nearest window, look outside for 10 seconds, and describe what you think you see in the reflection" produces a moment. Specificity is the difference between a gimmick and an experience.

We also found that Solo mode needed completely different cards than Group mode. Horror in a group is performative; someone dares, someone else reacts, the group feeds off the energy. Solo horror is internal. The cards for Solo mode read more like prompts for introspection in an uncomfortable direction. Writing those required a different headspace entirely.

Where it is now

Scary Challenges has crossed 10,000+ players. The daily dare runs every day. The most-played decks are Campfire Tales and Nightfall, which tracks with what we saw in the original Party Challenges data before the fork.

The decision to split into a separate product was right. Search intent is cleaner (the domain matches what people look for), the tone is consistent from landing page through gameplay, and we can update horror content without worrying about how it sits next to a flirty party game.

What we would do differently: start the intensity recalibration from the beginning instead of copying the party scale verbatim. That detour cost us about two weeks.

If you are building a content-heavy product and noticing a subset outperforming the rest, look at the context around it. We spent two weeks trying to make horror cards work inside a party game before accepting they needed their own home. The sooner you recognize that tension, the less time you lose on half-measures.

One more thing worth mentioning: the fork also simplified marketing. Party Challenges targets "party card game" searches. Scary Challenges targets "horror card game for sleepovers." Two separate landing pages, two separate content strategies, zero brand confusion. Before the fork, we were trying to rank one domain for both intents, and neither was working particularly well.

The shared architecture means maintenance overhead stays low. A bug fix in the card renderer goes into both products. New infrastructure (like the offline sync improvements we shipped in August) benefits the whole cluster. Forking the product did not mean forking the engineering effort permanently.

Scary Challenges is free, runs in the browser, and requires no account.

on September 30, 2026
  1. 1

    Forking when the tone diverges feels painful until you try forcing both audiences into one listing. Horror buyers and party-game buyers search with totally different intent, so shared architecture plus separate storefronts is often the sane move. The intensity calibration point rings true too — what reads as "spicy" in a party deck can feel cheap or mean once the frame is horror.