Pay Phone · The 10 gating decisions · current vs proposed
What's there today, and what I'm proposing.
Each decision, shown both ways: left = the current state (broken, ambiguous, or contradictory in the mockups today), right = the proposed ruling. Approve or amend by D-number. Full text lives on the merged logic page.
D1Scheduling APPROVED ✓
A single fixed grid can't hold 5-, 10- and 20-min calls — the mockups proved it (12/18/24 slots the same night). the founder's fix: keep the grid, make it per-service.
Current · one fixed :00/:10/:20 grid for everything
7:007:107:207:307:407:508:008:10
✕ A 20-min call has no home · ✕ same grid regardless of call length · ⚠ same night = 12 / 18 / 24 slots
One rigid grid assumes every call is 10 minutes. The menu sells 5/10/20, so it breaks the moment a fan picks anything else.
Approved · pick service → that service's grid
Picked 10-min → grid steps by 10
7:007:107:207:30
Picked 5-min → grid steps by 5
7:007:057:107:15
Fan picks the call first; the grid then steps by that call's length. One shared calendar underneath, so a booked time crosses out on every grid. Full mock:
scheduling-v2.
D2The join window & fair timer APPROVED ✓
The word "join window" appears in the cancel policy and two emails, but no artifact ever says how many minutes it is — so no-show and late-join have no trigger.
Current · undefined
Fan joins 4 min lateDo they still get the full call? Eats the next fan's time? Unknown.
Celeb hasn't shownWhen does "no-show" fire? 2 min? 10 min? Undefined.
Cancel policyCites "the join window" — a number that exists nowhere.
Approved · symmetric & printed
RuleYou're protected from the OTHER party's lateness, never rewarded for your own.
Celeb lateTimer waits until they join → fan gets full time; schedule drifts (D1 buffers absorb it).
Fan lateClock runs; they eat their own minutes after a 60-sec grace.
No-showCeleb: +5:00 past start → fan refunded. Fan: window end → celeb paid. Both printed in the policy.
D3Off-hours requests APPROVED ✓
A booking outside a celeb's standing hours needs their approval — but nothing says whether the fan's card is charged now or later, or how long their money is held.
Current · charge, then hold forever
Fan requests off-hours slot💳 Card charged $100 immediately
↓
Celeb sits on itMoney held with no expiry. Fan has no "pending" screen at all.
Approved · authorize, not capture
Fan requests off-hours slot🔒 Card authorized (not charged) · fan sees "Pending — waiting on Dre"
↓
Celeb has a deadlineAccept within 24h → charge + confirm. Expire/decline → hold released, $0.
D4Number privacy vs. the audience list APPROVED ✓
Checkout promises "Dre never sees your number." The celeb dashboard hands Dre an exportable CSV of every fan's phone and email. Both can't be absolute.
Current · a flat contradiction
"Dre never sees your number."
— fan checkout
⚡ conflict ⚡
"Export 12,483 fans · name, phone, email."
— celeb Audience tab
Approved · both facts stated, the approved copy
✓ All calls in the appDre can't call you, you can't call him. Your number is never shared for dialing.
✓ On Dre's text listSo he can text you when new times open. Unsubscribe anytime.
Keep the export — it's the manager pitch. Just stop overclaiming: "never shared for dialing" and "on his drop list" are both true.
D5Partial call / tech failure APPROVED ✓
The single biggest blank: if the call drops at minute 6 of 10, or the recording is lost, there is no policy anywhere. This is the most common real-world dispute.
Current · nothing
?
No pro-rate, no refund rule, no make-good, no fault attribution. A dropped call at launch = a manual, inconsistent, trust-destroying scramble.
Approved · fault-based tree
Platform's fault (server/infra dies)Fan 100% refund · celeb still paid
Bad connection, <50% deliveredFree rebook (keeps GMV)
Call fine, recording lostCall stands + free 5-min credit
Detected server-side where possible. Funded by the D9 reserve, so no celeb ever gets clawed back.
D6Recording retention APPROVED ✓
Retention is claimed three incompatible ways across the artifacts.
Current · three claims that fight
Platform: 90 daysCeleb archive: foreverFan: forever
⚡ If the celeb's "forever" archive streams from platform storage, platform retention isn't 90 days. If it doesn't, the archive silently rots.
Approved · one clear triangle
Fan's downloaded fileTheirs forever, on their device
Stream / re-download link90 days
Celeb archiveWhile the account is active (cold storage); 90-day export grace on close
Platform moderation copy90 days, then purged unless a T&S case is open
D7Paid vs. free follow APPROVED ✓
The ledger says you revised "follow" to PAID. The journey draws free watching. The product's second revenue line contradicts itself.
Current · two answers
Journey (drawn)"Watching is free — it's the ring." Free drop-list.
⚡ vs ⚡
Ledger (your note)"Follow is PAID" — every follower pays.
Approved · free at launch (paid tier is a later option)
LAUNCH
free watch
LATER
optional paid follow, per celeb
The drop-list is top-of-funnel — don't tax acquisition at launch. "No interaction is free" still holds: the RING is free, every CALL is paid. Paid membership = the OnlyFans free-page/paid-page dial, added as a fast-follow.
D8Extension pricing APPROVED ✓
"Add time at the celeb's rate" resolves to three different prices across the mockups — and the celeb is never asked whether they even want to stay longer.
Current · +5 min = pick a number
$50 (S19)$60 (menu 5-min)$125 (admin)
✕ Three implicit formulas, none written down · ✕ celeb never consents to the extra 5 minutes
Approved · one formula + consent
extension = (service price ÷ minutes) × extra minutes
10-min $100 → $10/min → +5 = $50 ✓
Celeb consentHours toggle "Allow extensions when my next opening is free" (default ON) + in-call decline. Splits 80/5/15.
D9Instant payout vs. chargebacks APPROVED ✓
Instant payout is the supply-side magic — but paying the celeb 80% the second a call ends leaves zero money to cover a later chargeback or fan report, without clawing it back (which breaks the "no clawbacks" promise).
Current · no safety net
Call endsCeleb instantly paid $80
↓
Fan charges back / reports❌ No funds to refund from → claw back the celeb? (breaks the promise) or platform eats 100%?
Approved · instant + new-payphone reserve
Established celebFull instant payout, no reserve
New payphone (first 30 days / first $2k)10% held in a rolling reserve, then released
Chargeback / reportPaid from the reserve → celeb never clawed back. Standard Stripe Connect practice.
D10Sample-data sweep APPROVED ✓
Numbers drift across screens — and every one of these goes in front of a manager who will do the math.
Current · drifting numbers
Payday shows $250 (relic)Tue = 12 / 18 / 24 slotsAdmin net $3,090 (impossible)1 booking ID, 2 outcomes💰 emoji in "no emoji" system
Approved · one canonical night
Dre · Tuesday 7–9 PM10 openings · 8 booked · 3 done by 7:41 = $240 tonight
Estimator hook"$2,400/week in bookings · $1,920 to you" (gross + net)
PaydayJordan: 10-min $100 + 5-min ext $50 = $150 · your 80% = $120
+ sweepAdmin math = 15% GMV − Stripe fees · 1 booking ID per outcome · emoji purge · line→payphone