Sell the Halloween wall to everyone else's party by Saturday.
Partywall works now: sign-up, wallet, Stripe top-ups, 11 themes, custom prompts, the reveal on the wall. It runs in beta (invite code, Stripe test mode). Four things you do turn it into a real product. Everything else is distribution.
Where it stands
- Accounts by email, no passwordSign up with an email and get a personal sign-in link, so a host can come back from any device. Emailed magic links are built and switch on when a mail key is added.
- Wallet, top-ups, ledger$1 / $2 / $5 / $10 / $20 / $100 through Stripe Checkout. Credited only after Stripe confirms the payment. Verified end to end with a real test-mode payment: $5 paid, wallet went from $1.90 to $6.90.
- Charging per photoAI cost plus 150% markup (10¢ a photo). Atomic debits, automatic refunds when a restyle fails, an optional spend cap per party, a low-balance warning, and photos still go up as-is when the wallet is empty.
- 11 preset themes plus your own promptHalloween (spooky or opt-in full gore), Día de los Muertos, Diwali, Christmas, New Year's Eve, Birthday, Easter, Lunar New Year, Mardi Gras, Time Machine (decades) and Wedding. Each has its own fonts, colours, reveal effect and 2–8 looks. Every theme was tested on a real photo (see the demo).
- The wallThe v1 lightning reveal is generalized: snowfall, marigold petals, confetti, fireworks and sparkle reveals; the original flickers back mid-slide; optional side-by-side before/after. The draggable, scalable QR is unchanged.
- Your dashboard/admin/ shows accounts, top-ups, AI spend (our own ledger, per job), margin and a 14-day chart. It also lets you grant credit to someone. The key is
PARTYWALL_V2_ADMIN_KEYin~/.secrets/api_keys.sh. - Still betaHost sign-up needs the invite code (
PARTYWALL_V2_INVITE_CODEin the same file). Payments are Stripe test mode. AI runs on your personal fal key. The next section turns all three over.
Go live: four steps, about 30 minutes
Decide whose Stripe account takes the money. The test key in use belongs to the Stripe account whose checkout says “Ritual Industries Mixtape.” Either rename that account's public business name to “Ritual Industries” (Settings → Business → Public details) or create a separate account for Partywall (Stripe lets one login hold several). That account runs Stripe Tax, so the worker already sends a tax code and keeps tax inside the price.
Make a dedicated fal account so Partywall's AI spend is separate from yours (next section).
Run the go-live script from the project folder. It asks for the live Stripe key and the new fal key with echo off, sets them as Worker secrets, and removes the invite code so anyone can sign up:
cd ~/Desktop/Claude\ Projects/ritual-deployments/partywall-v2 ./go-live.sh
Prove it with a real dollar. Sign up with your own email, top up $1, start a wall, and send one photo. The admin dashboard should show one top-up and one fal job. Then refund the $1 in Stripe if you like.
https://getpartywall.com/api/stripe-webhook for checkout.session.completed and put its signing secret in STRIPE_WEBHOOK_SECRET. Without it, payments are still credited the moment the host's app reloads, because the app asks Stripe directly. (b) Emailed sign-in links: add a Resend key (RESEND_API_KEY) and a sender (MAIL_FROM). Until then, hosts keep the sign-in link they get at sign-up.Setting up the Partywall fal account
The memo is right: it has to be your account, because guests never touch fal and hosts only buy Partywall credits. A separate fal account keeps the bill and the usage graph apart from your personal work.
- Sign out of fal.ai and sign up again with a new address. A Gmail alias works:
brianthomasharms+partywall@gmail.comlands in your inbox. Alternatively, create a team named Partywall inside your current fal account; teams get their own billing and keys. - Billing: add a card and buy $50 of credit. Turn on auto top-up with a low threshold so a party never stalls, and set a monthly spending limit as a second fence.
- Keys: Dashboard → Keys → create a key named
ri-partywall-v2with API scope. Paste it into./go-live.sh, or set it on its own:printf '%s' "<the new key>" | wrangler secret put FAL_KEY
- Monitor: fal's dashboard shows spend by model and day. Partywall's admin page shows the same jobs from our side, with revenue next to them. If the two drift apart, hedged retries are costing more than expected.
- The fence that doesn't depend on fal: the worker refuses to start new restyles once AI spend in the last 24 hours passes
DAILY_CAP_CENTS($30 now; raise it inwrangler.tomlas volume grows). Photos keep going up as-is and hosts aren't charged.
Unit economics
price per photo
AI cost × 2.5 (MARKUP_PCT = 150), rounded up
AI cost per photo
Nano Banana edit $0.0398, Qwen edit $0.03/MP (fal.ai, 2026-10-25), plus ~5% for retries
left per photo
after Stripe's 2.9% + 30¢ on a $5–$10 top-up
The $1 top-up problem. Stripe's fixed 30¢ takes 33% of $1 and 18% of $2. A $1 top-up still clears about 2.4¢ a photo, so it isn't a loss, but $5 is where it becomes healthy (8.9% fee). The app keeps all six amounts you asked for and highlights $5. If small top-ups dominate, either add a 25¢ convenience fee under $5 or drop $1.
Per party: a 40-person party sends about 100–150 photos, so $10–15 of credit, of which roughly $5–7.50 is margin. Unused credit stays in the wallet; some of it never gets spent, which is pure margin.
Play with every assumption on the interactive model.
Projections
These are assumptions, not forecasts: one party per host, 120 restyled photos per party at 10¢, 4.2¢ AI cost per photo, and 1.5 Stripe top-ups per host (2.9% + 30¢ each). Revenue here is credit spent; unspent credit would be extra.
| Halloween test (this week) | Hosts | Photos | Revenue | AI cost | Stripe | Margin |
|---|---|---|---|---|---|---|
| Friends and last night's guests | 10 | 1,200 | $120 | $50 | $8 | $62 |
| One good reel lands | 60 | 7,200 | $720 | $302 | $48 | $370 |
| A post goes properly viral | 400 | 48,000 | $4,800 | $2,016 | $319 | $2,465 |
The 12-month view follows the party calendar: Halloween and December (office parties, ugly sweaters, Christmas, New Year's Eve) are the peaks, with a February bump (Lunar New Year, Mardi Gras, Super Bowl) and weddings and birthdays underneath all year. With 40 hosts in a normal month, 8% monthly growth and the holiday multipliers, the default model lands at about $15k revenue and $8k margin in year one (134k photos). It is small as a business and big as a test, and the B2B options below are where the money multiplies.
What this test should answer by November 1: how many strangers create a wall, how many top up, how much they buy, and how many photos a party actually sends. All four are on the admin page.
The Halloween push (six days)
- Film the reveal. Last night's wall is the ad: 15 seconds of a projected face turning into a vampire on the side of a house. Post it as a Reel and a TikTok with “link in bio, works for your party Saturday.” One clip per theme after that.
- Last night's guests. Every one of them watched it work. Text them the link with a “use it Saturday” nudge. Every guest page now says “made with partywall — start your own wall.”
- Where Halloween hosts gather: r/halloween, r/HalloweenParty, r/projectionmapping, r/DIY, Nextdoor, and AtmosFX projection-decoration groups (people who already own projectors and point them at their houses).
- Comp the first ten. Use the admin “grant” to put $5 in the wallets of the first ten strangers who sign up, in exchange for a clip of their wall.
- Turn the invite code off as soon as Stripe is live (the go-live script does it). Until then the code works as an exclusive “beta invite,” which also makes a good post.
- Next week: Día de los Muertos (Nov 1–2) and Diwali (Nov 8) are already built. Then switch every post to December.
Security, briefly
- Money only moves in the worker: atomic debits, a unique reference on every ledger row (a payment can't be credited twice), and top-ups re-checked with Stripe's own API before crediting.
- Host actions require the owner's session. The session cookie is HttpOnly, Secure and SameSite, and cross-site POSTs are refused. Sign-in keys are stored hashed, and making a new link signs out every other device.
- Guests are rate-limited (25 uploads per 10 minutes per guest per party, 2,000 per party). Images are capped at 8 MB. Hidden photos stop being served to anyone but the host.
- The safety filter is on for everything except Halloween's opt-in gore. There is a daily AI spend ceiling, an origin guard on the worker's own address, and secrets live only in Cloudflare.
- Known beta limit: until email sign-in is switched on, an email address isn't verified at sign-up. The first time someone signs in through an emailed link, every older link and session for that address is cut off, so the real owner always wins.
Other opportunities
Office holiday parties
64% of companies throw one. Snapbar charges about $2,495 for an AI booth for 150 guests. A $299 “company wall” with the logo in the theme, an invoice and a spend cap is an easy yes for an HR lead, and December is six weeks out.
Bars, breweries, venues
A monthly subscription for a permanent wall: trivia nights, Halloween crawls, Pride, Super Bowl. The venue pays and the theme changes with the calendar.
Guests chip in
When the host's wallet runs low, the guest page offers “add $2 to keep the magic going.” The party funds itself, and you never have to ask the host for more.
Premium looks and video
A 50¢ tier using a 5-second image-to-video clip of the transformation (Kling, about $0.35). The wall plays the clip as the reveal.
Prints and photo books
The keepsake page sells a printed before/after book through a print API. It is the highest-margin product on any event app.
Theme marketplace and sponsored themes
Creators publish themes (prompts, fonts, reveal) for a revenue share. Studios pay for a branded horror theme the week a film opens.
Photo-booth operators
A white-label wall for the people who already rent booths. FotoMaster's operators pay 4–16¢ per AI credit today, so the price point is proven.
Weddings and bachelorettes
About 2M US weddings a year, 117 guests each. The custom-prompt inside joke is made for bachelorettes.
Name: “Partywall” is clear of live trademarks but crowded (it's a common building term), and partywall.com/.app/.co are taken. partywall.io, getpartywall.com and partywall.party look free. Details are on the research page.