Private beta readiness
Safe-to-show packet for Docs Pools.
One page for Ryan, counsel, and known beta commissioners: what is live, what can be shown, what remains private-beta only, and what is explicitly blocked before broader selling.
Current launch posture
Known commissioners only
Docs Pools may be shown as private-beta sports-pool software. Do not run paid ads, public paid contests, open signup, buy-ins, stakes, wagers, prize wallets, payouts, escrow, or Docs Pools prize-money custody.
Last updated: May 20, 2026
Safe to show now
Live proof and private-beta surfaces
Click cards to open the relevant live route. Admin surfaces still require the proper signed session.
Product homepage
Ready to showDocs Pools is positioned as broad sports-pool software with PGA golf as the live proof demo.
Live PGA demo pool
Ready to showShareable pick form, review-confirm submit flow, leaderboard, and pool-specific share kit are live.
Commissioner ops surface
Private beta onlyAdmin entries, paid/unpaid filters, cleanup views, exports, scores, and pool setup are protected by signed admin sessions.
Buyer setup links
Private beta onlyVerified paid-pool success pages can expose buyer-safe setup links without Ryan's admin cookie.
Legal/trust packet
Private beta onlyTerms, privacy, refunds, contact, commissioner ops, and lawyer-review packet are live with pending-attorney-review status.
Demo script
Four-minute customer/counsel walkthrough
Step 1
Start with the product promise
Docs Pools gives a commissioner a clean pick form, leaderboard, export, external status labels, and cleanup tools without spreadsheet chaos.
Step 2
Show the live PGA proof route
Use the Charles Schwab demo to show picks, review-confirm, no-cash/no-custody rules, and the leaderboard/share links.
Step 3
Explain commissioner operations
A commissioner owns rules, invitations, eligibility, disputes, outside money, and backup records; Docs Pools provides software tooling only.
Step 4
Name the private-beta boundary
Known commissioners only; no paid ads, no public paid contests, no prize-money custody, and attorney review remains pending.
Proof gates
What has been proven
Quality gates
Ready to showLatest local proof includes tests, lint, and production build passing before deploy.
Production smoke
Ready to showCustom domain root, PGA demo, leaderboard, share kit, Terms, and admin gate have returned 200 on production smoke checks.
Backend proof
Ready to showSupabase-backed submissions, duplicate prevention, deadline/open-state locking, score-aware leaderboard, CSV export, service-role admin writes, and live `public.pool_options` custom-option storage/read proof have been proven.
Protected surface proof language
Private beta onlyUnauthenticated smoke only proves the gate; inner admin content is claimed live only when safely authenticated, otherwise covered by local tests/build.
Not ready / blocked
Do not overclaim these yet
Attorney approval for public launch
Blocked / not for launchKeep usage to invite-only private beta until counsel approves launch scope, state/geographic limits, and paid customer wording.
Prize-money handling
Blocked / not for launchDocs Pools must not collect buy-ins, stakes, wagers, prize deposits, escrow funds, payouts, or prize-money custody.
Paid ads / broad public acquisition
Blocked / not for launchNo paid ads or open public signup until attorney signoff and launch boundaries are recorded.
Pilot qualification checklist
Should this known commissioner get a private-beta setup?
A phone-readable gate before Ryan creates a setup path: accept simple trusted pilots, pause for Ralph on proof or format risk, and decline out-of-bounds asks.
Accept
Known, reachable commissioner
Ryan already trusts the person, they can answer setup questions quickly, and they agree to keep the trial inside a small invited group.
Accept
Simple format fit
The pool can use the current picker, leaderboard, share kit, export, and setup-link flow without custom engineering during the event.
Needs Ralph
Non-golf choices or unusual scoring
Bring Ralph in before setup if the pool depends on custom option rows, manual scoring changes, or a format Ryan has not already tested end to end.
Needs Ralph
Deadline or proof uncertainty
Pause for Ralph if the entry window, first-entry proof, hidden test rows, leaderboard link, or share-kit link cannot be verified on the exact pool.
Decline
Out-of-bounds operating ask
Do not onboard pilots who need Docs Pools to handle funds, settle disputes, run broad acquisition, or promise unproven custom-option behavior.
Pilot intake packet
Questions before setup
Use this on the phone with one known commissioner before Ryan creates a setup path. Docs Pools is software only; all money, eligibility, rules, disputes, taxes, and records stay outside the product.
Commissioner / contact
Who is the commissioner, what is the best phone or email, and who has authority to confirm the pool rules?
Sport / format
What sport and format is this for: PGA-style picks, football slate, bracket/playoff pool, or another simple office-pool format?
Event / deadline
What event is the pool tied to, and what exact entry deadline should players see before picks close?
Pick count / option needs
How many picks should each player make, and can the pool use current default choices or does it need custom option rows verified for this exact pool?
First tester / proof readiness
Who is the first trusted tester, and can they submit one non-test entry before the commissioner invites the full group?
Off-platform / no-cash boundary
Can the commissioner confirm all payments, eligibility, rules, disputes, taxes, and records stay off-platform, with no Docs Pools buy-ins, wagers, payouts, escrow, or prize-money custody?
Copy intake request
Send before creating a path
Pilot intake request for Docs Pools private beta: Can you answer these before we create a setup path? 1. Commissioner/contact: name, phone/email, and rule owner. 2. Sport/format: PGA-style picks, football slate, bracket/playoff, or another simple office-pool format. 3. Event/deadline: event name and exact pick-close deadline. 4. Pick count/options: how many picks and whether default choices work. Custom options are live-capable now, but exact choices still need pool-by-pool setup verification before sharing. 5. First tester/proof: who can submit one non-test entry before wider sharing? 6. Boundary: Docs Pools is software only. Payments, eligibility, rules, disputes, taxes, and records stay off-platform; Docs Pools does not handle buy-ins, wagers, payouts, escrow, or prize-money custody. Reference packet: https://playdocspools.com/beta-readiness
Pilot decision memo
Turn intake answers into a safe call
Copy one decision after the intake packet. This memo does not create setup links or change setup-token behavior; it only tells Ryan whether the pilot is safe to accept, needs Ralph, or should be declined.
Accept
Private-beta setup fit
Use only when the commissioner is known and reachable, the event is invite-only, the format works with the current picker/leaderboard/share/export flow, and one trusted tester can prove a real non-test entry before group sharing.
Pilot decision: ACCEPT for private-beta setup review. Reason: known commissioner, simple format, clear event/deadline, current Docs Pools flow is enough, and one trusted first tester can prove the exact pool before wider sharing. Boundary: Docs Pools is software only. No Docs Pools buy-ins, wagers, payouts, escrow, prize custody, paid ads, public signup, or live non-golf custom-option proof claims. Next action: Ryan can prepare the setup path only after the boundary is confirmed in writing and the pool remains closed until first-entry proof passes.
Needs Ralph
Pause before setup
Use when the intake is directionally good but depends on custom non-golf choices, unusual scoring, unclear deadline/open state, uncertain proof links, hidden test-row cleanup, or any setup detail Ryan cannot verify from the packet.
Pilot decision: NEEDS RALPH before any setup path. Reason: the intake has a format, proof, deadline, option, or verification risk that should be checked before a commissioner gets a setup path. Boundary: do not claim live non-golf custom-option proof, and do not move forward if they need Docs Pools to handle buy-ins, wagers, payouts, escrow, or prize custody. Next action: Ralph verifies the exact pool plan, first-entry proof path, leaderboard/share-kit expectations, and whether this pool needs custom option rows configured before sharing.
Decline
Not a safe pilot
Use when the commissioner needs Docs Pools to collect or hold money, run a public paid contest, advertise broadly, settle prize disputes, support minors with money/prizes, or launch around unproven custom-option behavior.
Pilot decision: DECLINE for Docs Pools private beta. Reason: the request is outside the current software-only private-beta boundary or depends on behavior that is not proven for launch. Boundary: Docs Pools does not handle buy-ins, wagers, prize deposits, payouts, escrow, prize custody, paid ads, public signup, or live non-golf custom-option claims. Next action: do not create a setup path. Ryan can offer to revisit after attorney approval, exact custom-option setup proof, and launch boundaries are verified.
Setup path prep checklist
Before creating a setup path
Use this only after the pilot decision is ACCEPT. Do not send until proof is ready: the pool stays closed, the exact player form, leaderboard, and share-kit links are verified, and no money, prize, custody, custom-option, auth, payment, schema, or admin-control boundary has been crossed.
Prep item 1
Confirm accepted decision in writing
Owner: Ryan
Before creating a setup path, save the ACCEPT decision plus the private-beta boundary in writing: known invited group, software-only tooling, no Docs Pools buy-ins, wagers, payouts, escrow, prize custody, or money handling.
Stop if: The commissioner will not confirm the no-cash/no-custody boundary or wants Docs Pools to manage eligibility, disputes, taxes, records, or prize handling.
Prep item 2
Choose the existing setup route
Owner: Ryan
Use only an existing checkout success setup-token path or Ryan-assisted protected admin setup path. A buyer setup token may configure that provisioned pool, but it must not expose Ryan admin controls.
Stop if: The request requires new links, new tokens, auth changes, payment changes, schema changes, or exposing admin-only controls to the buyer.
Prep item 3
Keep the pool closed before proof
Owner: Ryan
Create or prepare the pool as closed to the group until one active non-test first-entry proof exists and hidden smoke/test rows remain separate.
Prep item 4
Verify exact links after setup
Owner: Ryan
After setup, verify the exact player form, leaderboard, and share-kit links for that pool before sending anything beyond the first trusted tester.
Stop if: Any link points to the wrong slug, wrong leaderboard, wrong share kit, or an unproven public route.
Prep item 5
Route custom or money risks to Ralph
Owner: Ralph
Stop and route to Ralph if custom non-golf options are not configured/verified for the exact pool, or if money, prizes, wagers, payouts, escrow, or prize custody appear.
Stop if: The commissioner expects unverified custom non-golf options or asks Docs Pools to touch funds.
Ralph setup request packet
Copy to Ralph before creating a setup path
Fill this after an ACCEPT decision and before Ralph/operator creates or verifies the setup path. It is a handoff note only: no admin controls, automatic token creation, auth changes, payment changes, migrations, or database writes.
Ralph setup request packet Copy to Ralph before creating a setup path. Commissioner/contact: [commissioner name, phone/email, and rule owner] Sport/format: [PGA-style picks, football slate, bracket/playoff, or simple office-pool format] Event/deadline: [event name and exact pick-close deadline players should see] Setup route choice: [existing checkout success setup-token path or Ryan-assisted protected admin setup path] Exact public links to verify after setup: Player form: https://playdocspools.com/pools/[pool-slug] Leaderboard: https://playdocspools.com/pools/[pool-slug]/leaderboard Share kit: https://playdocspools.com/pools/[pool-slug]/share First tester proof: [first trusted tester name and plan for one active non-test entry before group sharing] Boundaries for this request: - Docs Pools is software only: no Docs Pools buy-ins, wagers, payouts, escrow, prize deposits, prize custody, or money handling. - Do not expose Ryan admin controls, admin sessions, admin exports, admin score tools, service-role actions, payment controls, secrets, or setup-token validation internals to the commissioner. - Do not auto-create setup tokens, auto-create setup links, change auth/session behavior, change payments, write migrations, or perform DB writes from this packet. - If non-golf custom options are required, treat exact per-pool option setup as needing Ralph verification before sharing. - Keep the pool closed to the group until one active non-test first-entry proof exists and hidden smoke/test rows remain separate.
After setup path is created
Verification before sending beyond one tester
Use this only after a buyer setup token or Ryan-assisted admin setup path already exists. It verifies exact links, first-entry proof, hidden test separation, option readiness, and software-only boundaries; it does not create tokens, expose admin controls, weaken gates, perform DB writes, or claim live custom-option proof unless the exact pool's custom option rows have been verified.
Verify 1
Setup URL
Open the exact buyer setup URL that was already created for this pool. Confirm it is the intended commissioner and pool, and keep the URL private to that commissioner/Ryan/Ralph.
Stop if: The setup URL is missing, expired, for the wrong pool, asks for Ryan admin access, or requires creating a new token from this packet.
Verify 2
Player form
Open the exact pool player form and confirm the pool name, event/deadline, pick count, option labels, review-confirm flow, and software-only boundary are readable on a phone.
Stop if: The form points to the wrong slug, shows stale setup copy, accepts the wrong number of picks, hides the no-cash/no-custody boundary, or depends on unproven custom-option storage.
Verify 3
Leaderboard
Open the exact pool leaderboard and confirm it matches the player form slug, shows pending/scored states clearly, and does not mix hidden smoke/test rows into launch proof.
Stop if: The leaderboard route is wrong, empty in a confusing way after proof, or presents smoke/test rows as real player proof.
Verify 4
Share kit
Open the exact pool share kit and confirm it links to the same player form and leaderboard, includes only the known invited group posture, and keeps money/custody language out of bounds.
Stop if: The share kit points to a generic demo, wrong slug, public acquisition language, buy-in/prize handling language, or unproven custom-option claims.
Verify 5
Open or closed state
Confirm the pool stays closed while setup is being checked, then only opens for the first trusted tester when Ryan/Ralph intentionally approve that proof step.
Stop if: The pool is open to the whole group before exact links, option readiness, and first-entry proof status are verified.
Verify 6
First-entry proof
After the first trusted tester submits, confirm there is at least one active non-test entry for this exact pool before sending beyond one tester.
Stop if: There is no active non-test entry proof, proof belongs to another pool, or the only proof is hidden smoke/test data.
Verify 7
Hidden smoke/test separation
Confirm smoke/test/simulation rows remain hidden from active launch counts, leaderboard confidence, share claims, and commissioner proof language.
Stop if: Smoke/test rows are mixed into active proof, player-facing standings, export confidence, or launch copy.
Verify 8
Option readiness
For PGA/default flows, confirm current options are enough. For non-golf custom choices, treat exact per-pool option setup as needing Ralph verification before sharing.
Stop if: The pool needs custom non-golf options before exact rows are configured/verified, or anyone wants to claim custom-option proof publicly without checking the pool.
Verify 9
No-cash/no-custody boundary
Confirm the commissioner understands Docs Pools is software only: payments, eligibility, rules, disputes, taxes, records, and any prizes stay off-platform.
Stop if: The commissioner asks Docs Pools to handle buy-ins, wagers, payouts, escrow, prize deposits, prize custody, eligibility, disputes, taxes, or money records.
Copy verification packet
Fill with the exact setup URL and pool slug
After setup path is created verification packet Use this after a buyer setup token/admin setup path already exists, before sending beyond one trusted tester. Exact setup URL to verify: [exact already-created /setup/[token] URL or Ryan-assisted protected setup path] Player form: https://playdocspools.com/pools/[pool-slug] Leaderboard: https://playdocspools.com/pools/[pool-slug]/leaderboard Share kit: https://playdocspools.com/pools/[pool-slug]/share Open/closed state: closed First-entry proof status: [none yet / one active non-test entry confirmed / blocked] Hidden smoke/test separation: [hidden smoke/test count separate from active proof] Option readiness: [ready with current defaults / custom rows verified / needs Ralph] Send beyond one tester only after: - Exact setup URL, player form, leaderboard, and share kit all point to the intended pool. - Pool state is intentionally closed for setup or intentionally opened only for the first trusted tester. - At least one active non-test first-entry proof exists for this exact pool. - Hidden smoke/test rows remain separate from launch proof and player-facing confidence. - Options are ready for the current flow; do not claim live custom non-golf option proof unless exact custom option rows are verified for that pool. - Commissioner accepts software-only boundaries: no Docs Pools buy-ins, wagers, payouts, escrow, prize deposits, prize custody, or money handling. This packet must not: - Create setup tokens or setup links. - Expose Ryan admin controls, admin sessions, service-role tools, payment controls, secrets, exports, or score/admin write tools. - Weaken setup-token validation, auth/session checks, payment gates, schema gates, or no-cash/no-custody gates. - Perform database writes, migrations, payment changes, or protected admin actions. - Claim a specific pool's custom-option proof before exact rows are configured and verified.
First tester smoke log
One-tester proof packet after setup exists
Use this when Ryan/Ralph already have a setup path and need one trusted tester to submit. It captures tester name, proof status, visible confirmation ID, leaderboard check, hidden smoke/test separation, exact slug links, and stop-if blockers without creating tokens, changing auth, touching protected data, or performing writes.
Stop-if blockers
The setup path does not already exist or points to the wrong pool.
The player form, leaderboard, or share kit URL does not match this slug.
The tester cannot see a visible confirmation ID after submitting.
The leaderboard check is missing, confusing, or shows the wrong pool.
The only proof is hidden smoke/test data instead of one active non-test tester entry.
The pool needs custom non-golf options before exact rows are configured and verified.
Anyone asks Docs Pools to handle funds, payouts, escrow, prize deposits, prize custody, eligibility, disputes, taxes, or records.
Copy smoke log
Fill with the pool slug and tester proof
First tester smoke log packet Use this only after a setup path already exists and one trusted tester is being asked to submit. Tester name: [first tester name] Proof status: not-started Visible confirmation ID: [confirmation ID visible to tester after submit] Leaderboard check: [not checked / pending visible / entry visible for exact pool / blocked] Hidden smoke/test separation: [hidden smoke/test rows are separate from this active non-test proof] Exact links for this tester: Player form: https://playdocspools.com/pools/[pool-slug] Leaderboard: https://playdocspools.com/pools/[pool-slug]/leaderboard Share kit: https://playdocspools.com/pools/[pool-slug]/share Ask the tester to do this: 1. Open the player form above on a phone. 2. Submit one real non-test entry for this exact pool. 3. Send Ryan/Ralph the visible confirmation ID from the success screen. 4. Open the leaderboard above and confirm the pool/entry state makes sense. 5. Do not use the share kit beyond this one-tester check until Ryan/Ralph confirm proof. Stop if blockers: - The setup path does not already exist or points to the wrong pool. - The player form, leaderboard, or share kit URL does not match this slug. - The tester cannot see a visible confirmation ID after submitting. - The leaderboard check is missing, confusing, or shows the wrong pool. - The only proof is hidden smoke/test data instead of one active non-test tester entry. - The pool needs custom non-golf options before exact rows are configured and verified. - Anyone asks Docs Pools to handle funds, payouts, escrow, prize deposits, prize custody, eligibility, disputes, taxes, or records. This smoke log must not create setup tokens, expose admin controls, weaken auth/setup/payment/schema gates, perform database writes, or claim live custom-option proof unless exact custom option rows are verified for that pool. Docs Pools is software only; any payments, eligibility, rules, disputes, taxes, records, and prizes stay off-platform.
Evidence capture after first submit
Copyable packet for Ryan/Ralph before wider sharing
Use this only after the first trusted tester submits. It records screenshots, exact links, active proof count, hidden smoke/test count, option readiness, and the software-only no-cash/no-custody boundary without creating tokens, exposing admin controls, writing data, changing gates, or claiming live custom-option proof unless the exact pool's custom option rows have been verified.
Evidence item 1
Confirmation evidence
Save the visible confirmation ID screenshot or file note from the first tester's success screen for the exact pool.
Stop if: There is no visible confirmation ID, the screenshot belongs to a different pool, or the proof is only an admin/internal note.
Evidence item 2
Leaderboard evidence
Save a leaderboard screenshot or written check showing the exact pool route and the first tester's expected pending/scored state.
Stop if: The leaderboard is the wrong slug, confusing after submission, missing the tester when expected, or mixing hidden smoke/test rows into proof.
Evidence item 3
Exact link packet
Record the already-created setup URL plus the exact player form, leaderboard, and share-kit links for this pool.
Stop if: Any link is missing, points to the demo/wrong slug, requires admin access, or implies this packet creates setup tokens or setup links.
Evidence item 4
Proof counts
Record the active non-test proof count separately from the hidden smoke/test count before sending beyond the first tester.
Stop if: Active proof is zero, only smoke/test rows exist, or hidden rows are being used as launch proof.
Evidence item 5
Option readiness
Record whether current defaults are enough or whether non-golf custom choices still need exact public.pool_options rows configured and verified for this pool.
Stop if: Anyone wants to claim live custom non-golf option proof before exact per-pool option setup is verified for sharing.
Evidence item 6
No-cash/no-custody boundary
Record the commissioner confirmation that Docs Pools is software only and will not handle payments, eligibility, disputes, records, prizes, or funds.
Stop if: The commissioner asks Docs Pools to handle buy-ins, wagers, payouts, escrow, prize deposits, prize custody, eligibility, disputes, taxes, or money records.
Copy evidence packet
Fill after first tester submits
Post-first-tester evidence capture packet Use this after the first trusted tester submits, before Ryan/Ralph send the pool beyond that tester. Screenshots / evidence to save: Visible confirmation ID screenshot or file note: [screenshot filename/link or file note with visible confirmation ID] Leaderboard screenshot or check note: [screenshot filename/link or check note after first tester submits] Exact links: Setup URL: [exact already-created /setup/[token] URL or protected Ryan/Ralph setup reference] Player form: https://playdocspools.com/pools/[pool-slug] Leaderboard: https://playdocspools.com/pools/[pool-slug]/leaderboard Share kit: https://playdocspools.com/pools/[pool-slug]/share Counts and readiness: Active non-test proof count: [active non-test count for this exact pool] Hidden smoke/test count: [hidden smoke/test count kept separate from launch proof] Option readiness state: [ready with current defaults / custom rows verified / needs Ralph] No-cash/no-custody boundary confirmation: [commissioner confirmed software-only, no Docs Pools cash/prize custody] Ryan/Ralph checklist before broader sharing: - Confirmation evidence and leaderboard evidence are saved for the exact pool. - Setup URL, player form, leaderboard, and share kit all match the intended slug. - Active non-test proof count is at least one and hidden smoke/test rows remain separate. - Option readiness is accurate; do not claim live custom non-golf option proof unless exact custom option rows are verified for that pool. - Commissioner confirms Docs Pools is software only: no Docs Pools buy-ins, wagers, payouts, escrow, prize deposits, prize custody, or money handling. This packet is read-only. It must not create setup tokens, expose admin controls, weaken auth/setup/payment/schema gates, perform database writes, change payments, run migrations, or claim live custom-option proof before exact custom option rows are verified for that pool.
Post-evidence release decision
Release, hold for Ralph, or stop
Use this only after first-tester evidence capture. It turns the saved proof into a read-only decision for the known invited group, without creating setup tokens, exposing admin controls, writing data, changing auth/payment/schema gates, or claiming live custom-option proof unless the exact pool's custom option rows have been verified.
RELEASE
Release to known invited group
- Decide when
- Use only when evidence capture is complete, the exact pool links match, active non-test proof is at least one, hidden smoke/test rows remain separate, options are ready without unproven custom claims, and the commissioner has confirmed the software-only boundary.
- Next action
- Send the pool-specific share kit to the known invited group only. Keep all payments, eligibility, rules, disputes, taxes, records, and prizes off-platform.
HOLD FOR RALPH
Hold for Ralph
- Decide when
- Use when proof exists but Ryan/Ralph still need to verify confusing leaderboard evidence, link mismatch risk, option readiness, hidden smoke/test separation, deadline/open-state risk, or any custom non-golf option dependency.
- Next action
- Do not share beyond the first tester. Ralph reviews the exact setup URL, player form, leaderboard, share kit, evidence, proof counts, and whether exact custom option rows still need per-pool verification.
STOP DECLINE
Stop or decline
- Decide when
- Use when active non-test proof is missing, evidence belongs to the wrong pool, hidden smoke/test rows are being treated as proof, the commissioner needs Docs Pools to touch funds, or the pilot depends on unproven custom-option behavior.
- Next action
- Do not release the share kit and do not create a new setup path from this packet. Decline or restart only after the blocker is resolved and the software-only boundary is confirmed.
Copy decision packet
Fill after evidence capture
Post-evidence pilot release decision packet Use this after first-tester evidence capture to decide RELEASE, HOLD_FOR_RALPH, or STOP_DECLINE before sending beyond the first tester. Decision: HOLD_FOR_RALPH Decision meaning: Hold for Ralph Decision rule: Use when proof exists but Ryan/Ralph still need to verify confusing leaderboard evidence, link mismatch risk, option readiness, hidden smoke/test separation, deadline/open-state risk, or any custom non-golf option dependency. Next action: Do not share beyond the first tester. Ralph reviews the exact setup URL, player form, leaderboard, share kit, evidence, proof counts, and whether exact custom option rows still need per-pool verification. Exact links: Setup URL: [exact already-created /setup/[token] URL or protected Ryan/Ralph setup reference] Player form: https://playdocspools.com/pools/[pool-slug] Leaderboard: https://playdocspools.com/pools/[pool-slug]/leaderboard Share kit: https://playdocspools.com/pools/[pool-slug]/share Evidence and counts: Evidence status: [confirmation screenshot/file note saved / missing / needs Ralph] Leaderboard status: [leaderboard screenshot/check saved / confusing / needs Ralph] Active non-test proof count: [active non-test count for this exact pool] Hidden smoke/test count: [hidden smoke/test count kept separate from launch proof] Option readiness state: [ready with current defaults / custom rows verified / needs Ralph] Boundary confirmation: [commissioner confirmed no Docs Pools cash, custody, paid ads, public signup, or public paid contest] Release only if all are true: - Evidence capture is saved for the exact pool and the leaderboard check matches the same slug. - Active non-test proof count is at least one, and hidden smoke/test rows remain separate from launch proof. - Option readiness is accurate; do not claim live custom non-golf option proof unless exact custom option rows are verified for that pool. - Commissioner confirms Docs Pools is software only: no Docs Pools buy-ins, wagers, payouts, escrow, prize deposits, prize custody, or money handling. - The group remains known and invited only: no paid ads, no public signup, no broad public acquisition, and no public paid contests. HOLD_FOR_RALPH if any proof, link, deadline/open-state, option, or hidden-row detail is unclear. STOP_DECLINE if the pilot needs Docs Pools funds/custody, public acquisition, unproven custom-option behavior, or release without active non-test proof. This decision packet is read-only. It must not create setup tokens, expose admin controls, perform database writes, change auth/session/setup-token/payment/schema gates, run migrations, create admin controls, or claim live custom-option proof before exact custom option rows are verified for that pool.
Invited group launch monitor
24-hour checklist after RELEASE
Use this only after Ryan/Ralph choose RELEASE for one known invited group. It keeps the first day limited to exact setup, player, leaderboard, and share links; active proof counts; option-readiness state; stop/rollback triggers; and no-cash/no-custody/no-admin/no-write/no-token/no-migration/no-paid-ads/no-public-signup/no-custom-option-overclaim boundaries.
Before share
Verify RELEASE is explicit
Ryan/Ralph have chosen RELEASE for one known invited group, exact setup/player/leaderboard/share links match the slug, active non-test proof is present, hidden smoke/test rows are separate, and option readiness does not overclaim custom non-golf proof.
Before share
Send only the pool-specific share kit
Share the pool-specific share kit with the known invited group only. Do not post public signup links, run paid ads, or broaden beyond the approved group during the first 24 hours.
First hour
Player form and confirmations
Confirm at least one invited player can open the exact player form, submit through review-confirm, see a confirmation ID, and understand the software-only/no-cash/no-custody boundary.
First hour
Leaderboard and proof counts
Refresh the exact leaderboard after real submissions, compare active non-test proof count with hidden smoke/test count, and make sure hidden rows are not presented as launch proof.
First day
Commissioner support check
Ask the known commissioner whether links, deadline/open state, picks/options, and leaderboard status are clear. Route option uncertainty or unusual scoring to Ralph before further sharing.
Stop / rollback
Stop sharing and close the pool if needed
Stop or roll back to closed/private if links are wrong, confirmations fail, leaderboard is confusing, active proof disappears, hidden smoke/test rows leak into proof, option readiness is overstated, or anyone asks Docs Pools to handle funds/custody/admin actions.
Copy launch monitor packet
Fill after RELEASE for one invited group
Invited group launch monitor packet Use this only after Ryan/Ralph choose RELEASE for one known invited group. Monitor the first 24 hours before any broader sharing. Exact links: Setup URL: [exact already-created /setup/[token] URL or protected Ryan/Ralph setup reference] Player form: https://playdocspools.com/pools/[pool-slug] Leaderboard: https://playdocspools.com/pools/[pool-slug]/leaderboard Share kit: https://playdocspools.com/pools/[pool-slug]/share Release scope and proof: Invited group scope: [known invited group name and approximate player count; no public signup] RELEASE decision by: [Ryan/Ralph name and timestamp after RELEASE decision] Active non-test proof count: [active non-test count for this exact pool before group share] Hidden smoke/test count: [hidden smoke/test count kept separate from launch proof] Option readiness state: [ready with current defaults / custom rows verified / needs Ralph] First-day check owner: [Ryan/Ralph/commissioner owner for first-hour and first-day checks] 24-hour launch monitor checklist: - Before share: Verify RELEASE is explicit - Ryan/Ralph have chosen RELEASE for one known invited group, exact setup/player/leaderboard/share links match the slug, active non-test proof is present, hidden smoke/test rows are separate, and option readiness does not overclaim custom non-golf proof. - Before share: Send only the pool-specific share kit - Share the pool-specific share kit with the known invited group only. Do not post public signup links, run paid ads, or broaden beyond the approved group during the first 24 hours. - First hour: Player form and confirmations - Confirm at least one invited player can open the exact player form, submit through review-confirm, see a confirmation ID, and understand the software-only/no-cash/no-custody boundary. - First hour: Leaderboard and proof counts - Refresh the exact leaderboard after real submissions, compare active non-test proof count with hidden smoke/test count, and make sure hidden rows are not presented as launch proof. - First day: Commissioner support check - Ask the known commissioner whether links, deadline/open state, picks/options, and leaderboard status are clear. Route option uncertainty or unusual scoring to Ralph before further sharing. - Stop / rollback: Stop sharing and close the pool if needed - Stop or roll back to closed/private if links are wrong, confirmations fail, leaderboard is confusing, active proof disappears, hidden smoke/test rows leak into proof, option readiness is overstated, or anyone asks Docs Pools to handle funds/custody/admin actions. First-day checks: - Player form loads on phone for the exact slug and shows the correct pool/event/deadline. - New invited players can submit, see confirmation IDs, and are counted as active non-test proof only when they are real launch entries. - Leaderboard matches the same slug and keeps pending/scored states understandable. - Share kit links point to the same player form and leaderboard, and the commissioner does not forward beyond the approved invited group. - Option readiness remains accurate: current defaults are OK only when sufficient; do not claim live custom non-golf option proof unless exact custom option rows are verified for that pool. Stop / rollback triggers: - Wrong setup, player, leaderboard, or share link. - Missing confirmation IDs, failed submissions, confusing leaderboard state, or proof count mismatch. - Hidden smoke/test rows appear in active launch proof or player-facing confidence. - Pool needs custom non-golf options before exact rows are configured and verified. - Commissioner or players ask Docs Pools to handle buy-ins, wagers, payouts, escrow, prize deposits, prize custody, eligibility, disputes, taxes, money records, admin access, or protected operations. - Sharing expands beyond the known invited group, paid ads, public signup, or public paid contests. Boundaries: - No cash: no Docs Pools buy-ins, stakes, wagers, or money collection. - No custody: no Docs Pools prize deposits, payouts, escrow, wallets, or prize-money custody. - No admin exposure: do not expose Ryan admin controls, admin sessions, service-role tools, exports, score tools, payment controls, secrets, or setup-token internals. - No write / no token / no migration: this packet must not perform DB writes, create setup tokens, create setup links, change auth/session/setup-token/payment/schema gates, or run migrations. - No paid ads / no public signup: keep this to the approved known invited group only. - No custom-option overclaim: do not claim live custom non-golf option proof unless exact custom option rows are verified for that pool.
Post-launch support triage
After the first 24 hours: monitor, fix, or stop
Use this after the known invited-group pilot has run for 24 hours. It turns proof counts, support issue counts, exact links, leaderboard state, option readiness, and boundary status into a read-only decision: keep monitoring, fix with Ralph, or close/stop.
KEEP MONITORING
Keep monitoring
- Decide when
- Use when the first 24 hours have clean active non-test proof, exact links still match, support issues are zero or minor/resolved, option readiness is accurate, and the no-cash/no-custody boundary is intact.
- Next action
- Keep the same known invited-group scope, assign the next support check owner, and continue watching proof counts, support issues, leaderboard clarity, and boundary drift before any broader sharing.
FIX WITH RALPH
Fix with Ralph
- Decide when
- Use when the pilot is still viable but Ryan/Ralph need to resolve confusing leaderboard state, support issue patterns, link/deadline/open-state confusion, option/format uncertainty, or hidden-row proof questions.
- Next action
- Pause further sharing, keep the group private, have Ralph review the exact setup/player/leaderboard/share links plus issue list, then rerun the 24-hour monitor after the fix is verified.
CLOSE STOP
Close or stop
- Decide when
- Use when active proof is missing or untrustworthy, the wrong pool was shared, hidden smoke/test rows are treated as proof, support issues show broken core flow, or anyone asks for Docs Pools cash/custody/admin/public-launch behavior.
- Next action
- Close the pool or stop sharing, do not create new setup tokens, do not expose admin controls, and restart only after Ryan/Ralph have resolved the blocker inside the software-only private-beta boundary.
Usage proof
After the first 24 hours, compare active non-test proof count with the expected invited-group response and keep hidden smoke/test rows separate.
Decision signal: Keep monitoring if real entries are arriving and proof is clean; close/stop if proof is missing or only smoke/test data exists.
Support issues
Count commissioner/player support issues from the first 24 hours, grouping them as link/access, confirmation, leaderboard, deadline/open-state, option/format, or boundary/money asks.
Decision signal: Keep monitoring for zero or minor resolved issues; fix with Ralph for repeat/confusing product issues; close/stop for money/custody/admin or unsafe launch asks.
Links / leaderboard
Reopen the exact setup URL, player form, leaderboard, and share kit. Confirm they still point to the intended slug and the leaderboard state is understandable.
Decision signal: Fix with Ralph if links, confirmations, or leaderboard states are unclear; close/stop if the wrong pool was shared or proof cannot be trusted.
Options / format
Confirm current defaults still match the pool. For non-golf custom choices, verify exact public.pool_options rows for this pool before sharing.
Decision signal: Fix with Ralph if options or scoring need cleanup; close/stop if the pilot depends on unproven live custom-option behavior.
Boundaries
Confirm the commissioner and players stayed inside the software-only boundary: no Docs Pools buy-ins, wagers, payouts, escrow, prize custody, admin access, public signup, or paid ads.
Decision signal: Close/stop immediately if anyone asks Docs Pools to handle cash/custody, expose admin controls, broaden publicly, or weaken auth/payment/schema gates.
Copy triage packet
Fill after the first 24 hours
Post-launch support triage packet Use this after the first 24 hours of a known invited-group pilot to decide KEEP_MONITORING, FIX_WITH_RALPH, or CLOSE_STOP. Decision: FIX_WITH_RALPH Decision meaning: Fix with Ralph Decision rule: Use when the pilot is still viable but Ryan/Ralph need to resolve confusing leaderboard state, support issue patterns, link/deadline/open-state confusion, option/format uncertainty, or hidden-row proof questions. Next action: Pause further sharing, keep the group private, have Ralph review the exact setup/player/leaderboard/share links plus issue list, then rerun the 24-hour monitor after the fix is verified. Exact links: Setup URL: [exact already-created /setup/[token] URL or protected Ryan/Ralph setup reference] Player form: https://playdocspools.com/pools/[pool-slug] Leaderboard: https://playdocspools.com/pools/[pool-slug]/leaderboard Share kit: https://playdocspools.com/pools/[pool-slug]/share First-24-hour evidence: Invited group scope: [known invited group name and approximate player count; no public signup] Active non-test proof count: [active non-test count after first 24 hours] Hidden smoke/test count: [hidden smoke/test count kept separate from launch proof] Support issue count: [0 / minor resolved count / unresolved count with categories] First 24-hour summary: [what happened in the first 24 hours of invited-group use] Leaderboard status: [clear / confusing / wrong slug / needs Ralph] Option readiness state: [ready with current defaults / custom rows verified / needs Ralph] Boundary status: [software-only boundary intact / money-admin-public-launch risk appeared] Next support check owner: [Ryan/Ralph/commissioner owner and next check time] Triage checklist: - Usage proof: After the first 24 hours, compare active non-test proof count with the expected invited-group response and keep hidden smoke/test rows separate. Signal: Keep monitoring if real entries are arriving and proof is clean; close/stop if proof is missing or only smoke/test data exists. - Support issues: Count commissioner/player support issues from the first 24 hours, grouping them as link/access, confirmation, leaderboard, deadline/open-state, option/format, or boundary/money asks. Signal: Keep monitoring for zero or minor resolved issues; fix with Ralph for repeat/confusing product issues; close/stop for money/custody/admin or unsafe launch asks. - Links / leaderboard: Reopen the exact setup URL, player form, leaderboard, and share kit. Confirm they still point to the intended slug and the leaderboard state is understandable. Signal: Fix with Ralph if links, confirmations, or leaderboard states are unclear; close/stop if the wrong pool was shared or proof cannot be trusted. - Options / format: Confirm current defaults still match the pool. For non-golf custom choices, verify exact public.pool_options rows for this pool before sharing. Signal: Fix with Ralph if options or scoring need cleanup; close/stop if the pilot depends on unproven live custom-option behavior. - Boundaries: Confirm the commissioner and players stayed inside the software-only boundary: no Docs Pools buy-ins, wagers, payouts, escrow, prize custody, admin access, public signup, or paid ads. Signal: Close/stop immediately if anyone asks Docs Pools to handle cash/custody, expose admin controls, broaden publicly, or weaken auth/payment/schema gates. Decision guide: - KEEP_MONITORING only if proof, links, support issue count, leaderboard state, option readiness, and no-cash/no-custody boundaries are clean enough for the same invited group. - FIX_WITH_RALPH if the first-day signal is promising but support issues, link confusion, leaderboard clarity, option readiness, hidden-row separation, or deadline/open-state need operator review. - CLOSE_STOP if proof is missing, support issues show a broken core flow, the wrong pool was shared, custom-option behavior is overclaimed, or anyone asks Docs Pools to handle funds/custody/admin/public-launch actions. Boundaries: - Read-only: this packet must not perform DB writes, mutate support records, create setup tokens, create setup links, run migrations, or change auth/session/setup-token/payment/schema gates. - No admin exposure: do not expose Ryan admin controls, admin sessions, service-role tools, exports, score tools, payment controls, secrets, or setup-token internals. - No cash/custody: no Docs Pools buy-ins, stakes, wagers, money collection, prize deposits, payouts, escrow, wallets, or prize-money custody. - No broad launch: no paid ads, public signup, broad public acquisition, or public paid contests from this triage packet. - No custom-option overclaim: do not claim live custom non-golf option proof unless exact custom option rows are verified for that pool.
Pilot retrospective and next cohort decision
After the first invited pilot: iterate, invite one, or pause
Use this after post-launch support triage to summarize the first invited pilot and choose the next move: iterate with the same commissioner, invite one more known commissioner, or pause for Ralph/counsel. It is read-only and does not create setup tokens, expose admin controls, write data, change gates, run migrations, broaden launch, touch cash/custody, or overclaim live custom-option proof.
ITERATE WITH SAME COMMISSIONER
Iterate with same commissioner
- Decide when
- Use when the pilot produced useful active non-test proof, stayed inside boundaries, and revealed focused setup/support/leaderboard issues that are best fixed with the same commissioner before expanding.
- Next action
- Keep the same invited scope, assign Ryan/Ralph a fix or follow-up date, rerun the relevant proof packet, and do not invite a second commissioner yet.
INVITE ONE MORE KNOWN COMMISSIONER
Invite one more known commissioner
- Decide when
- Use when proof is clean, support themes are minor or resolved, leaderboard status is understandable, option readiness is accurate, and the software-only/no-cash/no-custody boundary stayed intact.
- Next action
- Invite exactly one more trusted known commissioner through the same intake and setup path process. Keep it private-beta and do not broaden to public signup or paid ads.
PAUSE FOR RALPH OR COUNSEL
Pause for Ralph or counsel
- Decide when
- Use when proof is unclear, support themes point to format/leaderboard/custom-option risk, boundary wording is uncertain, or anyone asks for Docs Pools money handling, admin access, public acquisition, or legal/compliance exceptions.
- Next action
- Pause new invites, preserve the written retrospective, route product issues to Ralph and legal/compliance questions to counsel, and restart only after the blocker is resolved.
Outcome summary
Summarize what happened after the first invited pilot: setup friction, player submissions, commissioner confidence, and whether the pool stayed within the approved invited scope.
Decision signal: Iterate with the same commissioner if learning is specific and fixable; invite one more known commissioner only if the pilot is clean enough to repeat.
Proof quality
Record active non-test proof count separately from hidden smoke/test count, and confirm proof belongs to the exact pilot pool.
Decision signal: Pause if proof is missing, only smoke/test data exists, or proof cannot be tied to the exact setup/player/leaderboard/share links.
Support themes
Group support notes into setup, access/link, confirmation, leaderboard, deadline/open-state, option/format, and boundary/legal themes.
Decision signal: Iterate with the same commissioner for focused product fixes; pause for Ralph or counsel if support themes include legal, money, custody, admin, or unproven option risk.
Leaderboard / options
Confirm leaderboard status is understandable and option readiness is accurately described without claiming live custom non-golf option proof unless exact custom option rows are verified for that pool.
Decision signal: Invite one more known commissioner only when leaderboard and option readiness can be explained cleanly for the next pilot.
Boundaries
Confirm the pilot stayed software-only: no Docs Pools buy-ins, wagers, payouts, escrow, prize custody, admin exposure, paid ads, public signup, setup-token creation from this packet, DB writes, migrations, or gate changes.
Decision signal: Pause for Ralph or counsel if any boundary drift appears, especially cash/custody, public acquisition, admin exposure, or legal wording risk.
Next owner
Assign one owner and date for the next move: same-commissioner iteration, one more known-commissioner invite, or Ralph/counsel pause.
Decision signal: Do not continue without a named owner/date and a written decision.
Copy retrospective packet
Fill after the first invited pilot
Pilot retrospective and next cohort decision packet Use this after the first invited pilot and post-launch support triage to choose ITERATE_WITH_SAME_COMMISSIONER, INVITE_ONE_MORE_KNOWN_COMMISSIONER, or PAUSE_FOR_RALPH_OR_COUNSEL. Decision: ITERATE_WITH_SAME_COMMISSIONER Decision meaning: Iterate with same commissioner Decision rule: Use when the pilot produced useful active non-test proof, stayed inside boundaries, and revealed focused setup/support/leaderboard issues that are best fixed with the same commissioner before expanding. Next action: Keep the same invited scope, assign Ryan/Ralph a fix or follow-up date, rerun the relevant proof packet, and do not invite a second commissioner yet. Exact links: Setup URL: [exact already-created /setup/[token] URL or protected Ryan/Ralph setup reference] Player form: https://playdocspools.com/pools/[pool-slug] Leaderboard: https://playdocspools.com/pools/[pool-slug]/leaderboard Share kit: https://playdocspools.com/pools/[pool-slug]/share Retrospective evidence: Pilot outcome summary: [what happened after the first invited pilot; include setup/player/support highlights] Active non-test proof count: [active non-test count after the invited pilot] Hidden smoke/test count: [hidden smoke/test count kept separate from launch proof] Support themes: [setup/access/confirmation/leaderboard/deadline/options/boundary themes] Leaderboard status: [clear / confusing / wrong slug / needs Ralph] Option readiness state: [ready with current defaults / custom rows verified / needs Ralph] Boundary status: [software-only boundary intact / money-admin-public-launch-legal risk appeared] Next owner/date: [Ryan/Ralph/counsel owner and date for the next decision] Decision guide: - ITERATE_WITH_SAME_COMMISSIONER if the first pilot taught clear, fixable product or support lessons and should be tightened before another invite. - INVITE_ONE_MORE_KNOWN_COMMISSIONER only if proof is clean, support themes are minor/resolved, leaderboard status is clear, option readiness is accurate, and boundaries stayed intact. - PAUSE_FOR_RALPH_OR_COUNSEL if proof, leaderboard, options, legal wording, money/custody, admin exposure, public signup, paid ads, setup-token, write, schema, or migration risk appears. Boundaries: - Read-only: this packet must not perform DB writes, mutate support records, create setup tokens, create setup links, run migrations, or change auth/session/setup-token/payment/schema gates. - No admin exposure: do not expose Ryan admin controls, admin sessions, service-role tools, exports, score tools, payment controls, secrets, or setup-token internals. - No cash/custody: no Docs Pools buy-ins, stakes, wagers, money collection, prize deposits, payouts, escrow, wallets, or prize-money custody. - No broad launch: no paid ads, public signup, broad public acquisition, public paid contests, or second-cohort invites beyond one known commissioner from this packet. - No custom-option overclaim: do not claim live custom non-golf option proof unless exact custom option rows are verified for that pool.
Second known commissioner invite
Only after INVITE ONE MORE KNOWN COMMISSIONER
Use this read-only packet only after the retrospective decision is `INVITE_ONE_MORE_KNOWN_COMMISSIONER`. It carries forward the first pilot learning, exact setup/player/leaderboard/share placeholders, acceptance filters, first-tester proof, option-readiness blockers, and software-only boundaries without creating tokens, exposing admin controls, writing data, changing gates, launching publicly, touching cash/custody, or claiming live custom-option proof.
Retrospective gate
Use this only when the completed pilot retrospective decision is INVITE_ONE_MORE_KNOWN_COMMISSIONER and Ryan/Ralph have a written owner/date for the next invite.
Stop if: The retrospective decision is ITERATE_WITH_SAME_COMMISSIONER, PAUSE_FOR_RALPH_OR_COUNSEL, missing, or not written down.
Acceptance filters
The next commissioner is known, reachable, owns the rules, accepts a small invited group, and can use the current setup/player/leaderboard/share flow without new product work.
Stop if: The invite depends on public signup, paid ads, broad acquisition, public paid contests, new auth/payment/schema behavior, new tokens from this packet, or Ryan admin exposure.
Prior learning
Send the prior pilot learning summary before setup: what worked, what confused players, leaderboard state, support themes, and the boundary language that stayed intact.
Stop if: The first pilot's learning is unclear, active proof is not tied to the exact pool, support themes are unresolved, or hidden smoke/test rows are being used as success proof.
First-tester proof
Name the first tester before wider sharing and require one active non-test entry, visible confirmation proof, exact leaderboard check, and hidden smoke/test separation for this new pool.
Stop if: There is no first tester, no confirmation proof plan, no leaderboard check plan, or the commissioner wants to invite the group before first-tester proof.
Options / boundaries
Confirm current options are enough, or verify exact non-golf custom option rows before sharing. Keep Docs Pools software-only with no cash or custody role.
Stop if: The pool requires custom non-golf options before exact rows are verified, or anyone asks Docs Pools to handle buy-ins, wagers, payouts, escrow, prize custody, eligibility, disputes, taxes, money records, admin access, or protected operations.
Copy invite packet
Fill before contacting the second known commissioner
Second known commissioner invite packet Use only after the pilot retrospective decision is INVITE_ONE_MORE_KNOWN_COMMISSIONER. Purpose: invite exactly one more known commissioner without broad launch, token creation, admin exposure, writes, cash handling, or custom-option overclaim. Invite target: Commissioner/contact: [second known commissioner name, phone/email, and rule owner] Sport/format: [PGA-style picks, football slate, bracket/playoff, or simple office-pool format] Event/deadline: [event name and exact pick-close deadline players should see] Exact placeholders to verify before any group sharing: Setup URL: [exact already-created /setup/[token] URL after Ryan/Ralph create or verify it outside this packet] Player form: https://playdocspools.com/pools/[new-pool-slug] Leaderboard: https://playdocspools.com/pools/[new-pool-slug]/leaderboard Share kit: https://playdocspools.com/pools/[new-pool-slug]/share Prior pilot learning summary: [what the first pilot proved, what support themes appeared, what changed, and what not to overclaim] Acceptance filters: [known/reachable commissioner, small invited group, current flow is enough, first tester named, no money/admin/public-launch/custom-option dependency] First-tester proof requirement: [first tester name; one active non-test entry; visible confirmation ID; exact leaderboard check; hidden smoke/test rows separate before share kit goes wider] Option readiness / blocker: [ready with current defaults / custom rows verified / needs Ralph before invite] If non-golf custom choices are needed, public.pool_options migration proof is complete, but exact custom option rows must still be configured and verified for this pool before sharing. Boundary confirmation: [commissioner confirmed Docs Pools is software only: no Docs Pools cash, custody, paid ads, public signup, or public paid contest] Next owner/date: [Ryan/Ralph owner and date for intake, setup verification, and first-tester proof] Stop-if blockers: - Retrospective gate: The retrospective decision is ITERATE_WITH_SAME_COMMISSIONER, PAUSE_FOR_RALPH_OR_COUNSEL, missing, or not written down. - Acceptance filters: The invite depends on public signup, paid ads, broad acquisition, public paid contests, new auth/payment/schema behavior, new tokens from this packet, or Ryan admin exposure. - Prior learning: The first pilot's learning is unclear, active proof is not tied to the exact pool, support themes are unresolved, or hidden smoke/test rows are being used as success proof. - First-tester proof: There is no first tester, no confirmation proof plan, no leaderboard check plan, or the commissioner wants to invite the group before first-tester proof. - Options / boundaries: The pool requires custom non-golf options before exact rows are verified, or anyone asks Docs Pools to handle buy-ins, wagers, payouts, escrow, prize custody, eligibility, disputes, taxes, money records, admin access, or protected operations. Hard boundaries: - Read-only: this packet must not perform DB writes, mutate support records, create setup tokens, create setup links, run migrations, or change auth/session/setup-token/payment/schema gates. - No admin exposure: do not expose Ryan admin controls, admin sessions, service-role tools, exports, score tools, payment controls, secrets, or setup-token internals. - No cash/custody: no Docs Pools buy-ins, stakes, wagers, money collection, prize deposits, payouts, escrow, wallets, or prize-money custody. - No broad launch: invite exactly one known commissioner only; no paid ads, public signup, broad public acquisition, or public paid contests. - No custom-option overclaim: do not claim live custom non-golf option proof unless exact custom option rows are verified for that pool.
Second commissioner response triage
Classify the response before any setup path exists
Use this read-only packet after the second-known-commissioner invite response. Classify the reply as `ACCEPT_FOR_SETUP_REVIEW`, `NEEDS_RALPH`, or `DECLINE` before any setup token, Ryan-assisted admin setup path, pool shell, open-pool step, or share handoff is created. It keeps exact placeholder links, first-tester proof, per-pool custom option verification, and no-token/no-admin/no-write/no-migration/no-paid-ads/no-public-signup/no-cash/no-custody/no-custom-option-overclaim boundaries in one place.
ACCEPT FOR SETUP REVIEW
Accept for setup review
- Classify when
- Use only when the second commissioner is known and reachable, confirms a small invited group, accepts the software-only boundary, names a first tester, and can use the current setup/player/leaderboard/share flow without new product work.
- Next action
- Ryan/Ralph may move to setup-path review, but this triage does not create a setup token, expose admin controls, open the pool, or send anything beyond the first-tester proof sequence.
NEEDS RALPH
Needs Ralph before setup
- Classify when
- Use when the response is promising but has unclear deadline/open state, custom option rows, unusual scoring, proof readiness, hidden smoke/test separation, link expectations, or any boundary wording Ryan cannot verify.
- Next action
- Ralph reviews the exact response, first-tester proof plan, option readiness, and link placeholders before any setup token or admin setup path is created.
DECLINE
Decline before setup
- Classify when
- Use when the commissioner needs Docs Pools to handle money/prizes, wants public signup or paid ads, cannot provide first-tester proof, needs unverified custom-option behavior, wants admin access, or will not keep the trial invite-only.
- Next action
- Do not create a setup token, admin setup path, pool shell, public signup path, or share kit handoff. Ryan can revisit only after the request fits the private-beta software-only boundary.
Copy response triage packet
Fill before setup review
Second commissioner response triage packet Use after the second-known-commissioner invite response and before any setup token, admin setup path, pool-opening step, or share-kit handoff is created. Classification: NEEDS_RALPH Classification meaning: Needs Ralph before setup Commissioner/contact: [second commissioner name, phone/email, and rule owner] Response summary: [what they said yes/no/maybe to after the invite] Sport/format: [PGA-style picks, football slate, bracket/playoff, or simple office-pool format] Event/deadline: [event name and exact pick-close deadline players should see] Exact placeholder links for review only: Setup path: [not created yet: no /setup/[token] URL and no Ryan-assisted admin setup path until this response is accepted for setup review] Player form placeholder: https://playdocspools.com/pools/[new-pool-slug] Leaderboard placeholder: https://playdocspools.com/pools/[new-pool-slug]/leaderboard Share kit placeholder: https://playdocspools.com/pools/[new-pool-slug]/share First-tester proof requirement: [named first tester / proof plan missing / blocked] Accept only if one named trusted tester can submit one active non-test entry, capture a visible confirmation ID, verify the exact leaderboard, and keep hidden smoke/test rows separate before group sharing. Per-pool custom option verification: [ready with current defaults / exact custom rows verified for this pool / needs Ralph before setup review] The public.pool_options migration proof is complete, but do not claim this pool's custom choices are ready until exact custom option rows are configured and verified for this pool. Boundary confirmation: [confirmed software-only, no Docs Pools cash/custody/admin/public-launch role / not confirmed] Ralph review reason: [none if ACCEPT_FOR_SETUP_REVIEW / exact option, proof, deadline, link, scoring, boundary, or legal concern] Next owner/date: [Ryan/Ralph owner and date for classification follow-up] Outcome guide: - ACCEPT_FOR_SETUP_REVIEW: Use only when the second commissioner is known and reachable, confirms a small invited group, accepts the software-only boundary, names a first tester, and can use the current setup/player/leaderboard/share flow without new product work. Next: Ryan/Ralph may move to setup-path review, but this triage does not create a setup token, expose admin controls, open the pool, or send anything beyond the first-tester proof sequence. - NEEDS_RALPH: Use when the response is promising but has unclear deadline/open state, custom option rows, unusual scoring, proof readiness, hidden smoke/test separation, link expectations, or any boundary wording Ryan cannot verify. Next: Ralph reviews the exact response, first-tester proof plan, option readiness, and link placeholders before any setup token or admin setup path is created. - DECLINE: Use when the commissioner needs Docs Pools to handle money/prizes, wants public signup or paid ads, cannot provide first-tester proof, needs unverified custom-option behavior, wants admin access, or will not keep the trial invite-only. Next: Do not create a setup token, admin setup path, pool shell, public signup path, or share kit handoff. Ryan can revisit only after the request fits the private-beta software-only boundary. Hard boundaries: - Read-only: this triage packet must not perform DB writes, mutate support records, run migrations, create setup tokens, create setup links, create pool shells, open pools, or change auth/session/setup-token/payment/schema gates. - No admin exposure: do not expose Ryan admin controls, admin sessions, service-role tools, exports, score tools, payment controls, secrets, setup-token internals, or protected operations. - No cash/custody: no Docs Pools buy-ins, stakes, wagers, money collection, prize deposits, payouts, escrow, wallets, or prize-money custody. - No broad launch: no paid ads, public signup, broad public acquisition, public paid contests, or sharing beyond one known commissioner response review. - No custom-option overclaim: do not claim live custom non-golf option proof unless exact custom option rows are verified for that pool.
Second commissioner setup review
Only after ACCEPT FOR SETUP REVIEW
Use this read-only packet only when the second commissioner response triage is `ACCEPT_FOR_SETUP_REVIEW`. It gives Ryan/Ralph one place to review exact commissioner/contact, sport/format, event/deadline, intended slug/link placeholders, setup route choice, first-tester proof plan, option readiness, per-pool custom row verification, and no-cash/no-custody/no-admin/no-token/no-write/no-migration/no-paid-ads/no-public-signup/no-custom-option-overclaim boundaries before any setup token or admin setup path exists.
Copy setup review packet
Fill before creating any setup token or setup path
Second commissioner setup review packet Use only after the second commissioner response triage is ACCEPT_FOR_SETUP_REVIEW and before Ryan/Ralph create any setup token, admin setup path, pool shell, open-pool step, or share handoff. Triage outcome: ACCEPT_FOR_SETUP_REVIEW Commissioner/contact: [second commissioner name, phone/email, and rule owner] Sport/format: [PGA-style picks, football slate, bracket/playoff, or simple office-pool format] Event/deadline: [event name and exact pick-close deadline players should see] Intended slug and link placeholders: Pool slug: [new-pool-slug] Setup path placeholder: [not created here: no /setup/[token] URL and no Ryan-assisted admin setup path yet] Player form placeholder: https://playdocspools.com/pools/[new-pool-slug] Leaderboard placeholder: https://playdocspools.com/pools/[new-pool-slug]/leaderboard Share kit placeholder: https://playdocspools.com/pools/[new-pool-slug]/share Setup route choice: [existing buyer setup-token route or existing protected Ryan/Ralph admin setup route; no token created from this packet] Route choice must be an existing buyer setup-token route or existing protected Ryan/Ralph admin setup route; this packet does not create or validate a token. First-tester proof plan: [first tester name; one active non-test entry; visible confirmation ID; exact leaderboard check; hidden smoke/test rows separate before share kit goes wider] Review requires one named trusted tester, one active non-test entry for this exact pool, a visible confirmation ID, exact leaderboard check, and hidden smoke/test rows kept separate before group sharing. Option readiness / per-pool custom row verification: Option readiness: [ready with current defaults / exact custom rows verified for this pool / needs Ralph before setup path creation] Per-pool custom row verification: [PGA/default rows sufficient / public.pool_options rows configured and verified for this exact pool / blocked until Ralph verifies rows] public.pool_options migration proof is complete, but do not claim this pool's custom options are ready unless exact option rows are configured and verified for this pool. Boundary confirmation: [commissioner confirmed software-only: no Docs Pools cash, custody, admin access, paid ads, public signup, or public paid contest] Next owner/date: [Ryan/Ralph owner and date for setup review decision] Ryan/Ralph setup review checklist: - Exact commissioner/contact and rule owner are written down. - Sport/format, event name, and pick-close deadline are written exactly as players should see them. - Intended slug, player form, leaderboard, and share-kit placeholders all match the same pool. - Setup route choice is explicit and uses only existing setup-token/admin setup patterns. - First-tester proof can happen before any group sharing. - Option readiness is accurate; non-golf custom choices need exact per-pool custom row verification before sharing. - Boundary confirmation is written before any setup path is created. Hard boundaries: - No cash/custody: no Docs Pools buy-ins, stakes, wagers, money collection, prize deposits, payouts, escrow, wallets, or prize-money custody. - No admin exposure: do not expose Ryan admin controls, admin sessions, service-role tools, exports, score tools, payment controls, secrets, setup-token internals, or protected operations. - No token: this packet must not create setup tokens, create setup links, validate tokens, or promise a setup URL exists. - No write/no migration: this packet must not perform DB writes, create pool shells, open pools, mutate records, run migrations, or change auth/session/setup-token/payment/schema gates. - No broad launch: no paid ads, public signup, broad public acquisition, public paid contests, or sharing beyond setup review. - No custom-option overclaim: do not claim live custom non-golf option proof unless exact custom option rows are verified for that pool.
Second commissioner setup authorization decision
Create setup path, needs info, or decline
Use this read-only packet after the second commissioner setup review and before any setup token, admin setup path, pool shell, open-pool step, or share handoff is created. It helps Ryan/Ralph choose `CREATE_SETUP_PATH`, `NEEDS_INFO`, or `DECLINE` while preserving no-token/no-admin/no-write/no-migration/no-paid-ads/no-public-signup/no-cash/no-custody/no-custom-option-overclaim boundaries.
CREATE SETUP PATH
Authorize setup path creation
- Decide when
- Use only after Ryan/Ralph have completed the setup review, the commissioner is known and reachable, the event/deadline and intended slug are exact, the setup route choice uses an existing setup-token/admin setup pattern, first-tester proof is named, options are ready or explicitly verified for this pool, and the software-only boundary is confirmed in writing.
- Next action
- Ryan/Ralph may create or verify the setup path outside this packet, then return to the after-setup verification packet before sending anything beyond one trusted tester.
NEEDS INFO
Hold for missing setup facts
- Decide when
- Use when the review is promising but any commissioner/contact, rule owner, event/deadline, slug, route choice, first-tester proof, hidden smoke/test separation, option readiness, or boundary confirmation detail is missing or unclear.
- Next action
- Do not create a setup token or admin setup path. Get the missing facts, update the setup review packet, and choose again only after Ryan/Ralph can verify the exact pool plan.
DECLINE
Decline before setup path
- Decide when
- Use when the setup review reveals money/prize/custody asks, public signup or paid ads, admin-access expectations, missing first-tester proof, unverified custom-option dependency, legal/compliance concern, or a commissioner who will not accept the private-beta software-only boundary.
- Next action
- Do not create a setup token, admin setup path, pool shell, open-pool step, share handoff, paid acquisition path, or custom-option claim. Revisit only if the request fits the current private-beta boundary.
Copy authorization decision packet
Fill before creating any setup path
Second commissioner setup authorization decision packet Use only after the second commissioner setup review packet and before Ryan/Ralph create any setup token, admin setup path, pool shell, open-pool step, or share handoff. Decision: NEEDS_INFO Decision meaning: Hold for missing setup facts Decision rule: Use when the review is promising but any commissioner/contact, rule owner, event/deadline, slug, route choice, first-tester proof, hidden smoke/test separation, option readiness, or boundary confirmation detail is missing or unclear. Next action: Do not create a setup token or admin setup path. Get the missing facts, update the setup review packet, and choose again only after Ryan/Ralph can verify the exact pool plan. Reviewed setup facts: Commissioner/contact: [second commissioner name, phone/email, and rule owner] Setup review summary: [what Ryan/Ralph reviewed from the setup review packet] Sport/format: [PGA-style picks, football slate, bracket/playoff, or simple office-pool format] Event/deadline: [event name and exact pick-close deadline players should see] Pool slug: [new-pool-slug] Setup route choice: [existing buyer setup-token route or existing protected Ryan/Ralph admin setup route; no token created from this packet] Exact placeholder links to verify after setup path creation: Setup path placeholder: [not created here: no /setup/[token] URL and no Ryan-assisted admin setup path until CREATE_SETUP_PATH is chosen and executed outside this packet] Player form placeholder: https://playdocspools.com/pools/[new-pool-slug] Leaderboard placeholder: https://playdocspools.com/pools/[new-pool-slug]/leaderboard Share kit placeholder: https://playdocspools.com/pools/[new-pool-slug]/share Proof, options, and boundary: First-tester proof plan: [first tester name; one active non-test entry; visible confirmation ID; exact leaderboard check; hidden smoke/test rows separate before group sharing] Option readiness state: [ready with current defaults / exact custom rows verified for this pool / needs Ralph before setup path creation] Boundary confirmation: [commissioner confirmed software-only: no Docs Pools cash, custody, admin access, paid ads, public signup, or public paid contest] Missing info or decline reason: [missing fact to collect / none if CREATE_SETUP_PATH / decline reason if out of bounds] Next owner/date: [Ryan/Ralph owner and date for CREATE_SETUP_PATH / NEEDS_INFO / DECLINE follow-up] Decision guide: - CREATE_SETUP_PATH: Use only after Ryan/Ralph have completed the setup review, the commissioner is known and reachable, the event/deadline and intended slug are exact, the setup route choice uses an existing setup-token/admin setup pattern, first-tester proof is named, options are ready or explicitly verified for this pool, and the software-only boundary is confirmed in writing. Next: Ryan/Ralph may create or verify the setup path outside this packet, then return to the after-setup verification packet before sending anything beyond one trusted tester. - NEEDS_INFO: Use when the review is promising but any commissioner/contact, rule owner, event/deadline, slug, route choice, first-tester proof, hidden smoke/test separation, option readiness, or boundary confirmation detail is missing or unclear. Next: Do not create a setup token or admin setup path. Get the missing facts, update the setup review packet, and choose again only after Ryan/Ralph can verify the exact pool plan. - DECLINE: Use when the setup review reveals money/prize/custody asks, public signup or paid ads, admin-access expectations, missing first-tester proof, unverified custom-option dependency, legal/compliance concern, or a commissioner who will not accept the private-beta software-only boundary. Next: Do not create a setup token, admin setup path, pool shell, open-pool step, share handoff, paid acquisition path, or custom-option claim. Revisit only if the request fits the current private-beta boundary. CREATE_SETUP_PATH only means Ryan/Ralph may create or verify a setup path outside this packet; it does not create a token, expose admin controls, open a pool, write data, or send links by itself. NEEDS_INFO keeps the setup path uncreated until missing facts are resolved. DECLINE stops setup path creation for this request. Hard boundaries: - Read-only: this authorization packet must not perform DB writes, mutate support records, create setup tokens, create setup links, create pool shells, open pools, run migrations, or change auth/session/setup-token/payment/schema gates. - No admin exposure: do not expose Ryan admin controls, admin sessions, service-role tools, exports, score tools, payment controls, secrets, setup-token internals, or protected operations. - No cash/custody: no Docs Pools buy-ins, stakes, wagers, money collection, prize deposits, payouts, escrow, wallets, or prize-money custody. - No broad launch: no paid ads, public signup, broad public acquisition, public paid contests, or sharing beyond the approved private-beta setup path decision. - No custom-option overclaim: do not claim live custom non-golf option proof unless exact custom option rows are verified for that pool.
Phase 3 custom option verification
After setup authorization, before non-golf sharing
Use this read-only packet only after Ryan/Ralph authorize setup and a setup path already exists. It verifies exact public.pool_options rows, required groups, phone-visible player-form options, first-entry proof, hidden smoke/test separation, exact setup/player/leaderboard/share links, and software-only boundaries before any non-golf share kit goes beyond one trusted tester.
VERIFY_OPTIONS
Verify options before share
NEEDS_RALPH
Needs Ralph
DO_NOT_SHARE
Do not share
Verify 1
Exact setup and slug
Open the already-created setup URL and verify it belongs to the exact non-golf pool slug Ryan/Ralph authorized after setup review.
Stop if: The setup URL is missing, wrong, expired, asks for Ryan admin access, or requires creating a new setup token from this packet.
Verify 2
Required option groups
Write down the exact groups players must see, such as Week 1 Games, Tiebreaker, Bracket Round 1, or Commissioner Custom Group 1.
Stop if: Required groups are vague, incomplete, different from the commissioner's rules, or not tied to this exact pool.
Verify 3
public.pool_options row proof
Ryan/Ralph verify exact public.pool_options rows for this pool: group labels, option labels, order, active state, and no leaked test choices.
Stop if: Rows are missing, stale, for another slug, in the wrong order, include test options, or cannot be verified without protected admin work.
Verify 4
Public form option check
Open the player form on a phone and confirm the visible options match the verified rows and required groups before sharing the share kit.
Stop if: The public form shows placeholders, PGA defaults, wrong groups, wrong option count, stale labels, or any option mismatch.
Verify 5
Hidden smoke/test rows
Keep first-entry proof and hidden smoke/test rows separate; hidden rows cannot be used as public option proof or launch proof.
Stop if: Active non-test proof is missing, hidden smoke/test rows are mixed into confidence, or test rows appear in the public form/leaderboard story.
Verify 6
Software-only boundary
Confirm the commissioner accepts that Docs Pools is software only and will not handle payments, buy-ins, wagers, payouts, escrow, prize custody, eligibility, disputes, taxes, or records.
Stop if: The commissioner asks Docs Pools to touch funds/custody or wants admin exposure, broad launch, paid ads, public signup, auth/payment/schema changes, writes, or migrations.
Copy option verification packet
Fill before sharing a non-golf pool
Phase 3 custom option verification packet Use after setup authorization and setup path creation, but before sharing a non-golf pool beyond one trusted tester. Decision: VERIFY_OPTIONS Decision meaning: Verify options before share Exact links: Setup URL: [exact already-created /setup/[token] URL or protected Ryan/Ralph setup reference] Player form: https://playdocspools.com/pools/[non-golf-pool-slug] Leaderboard: https://playdocspools.com/pools/[non-golf-pool-slug]/leaderboard Share kit: https://playdocspools.com/pools/[non-golf-pool-slug]/share Pool and option facts: Pool slug: [non-golf-pool-slug] Sport/format: [football slate / bracket pool / playoff picks / other non-golf format] Required groups: [exact group names and counts players must see] Custom row proof status: [public.pool_options rows verified / rows missing / order mismatch / needs Ralph] Public form option check: [not checked / phone form matches rows / mismatch found] Proof and separation: First-entry proof status: [none yet / one active non-test entry confirmed / blocked] Hidden smoke/test separation: [hidden smoke/test count separate from active proof and public form confidence] Boundary confirmation: [commissioner confirmed software-only, no Docs Pools cash/custody/admin/public-launch role] Next owner/date: [Ryan/Ralph owner and date for VERIFY_OPTIONS / NEEDS_RALPH / DO_NOT_SHARE follow-up] Decision guide: - VERIFY_OPTIONS means Ryan/Ralph are still checking exact public.pool_options rows and public form output; do not share the non-golf pool yet. - NEEDS_RALPH means row proof, public form options, first-entry proof, hidden-row separation, or boundary language is unclear; Ralph reviews before any share. - DO_NOT_SHARE means the pool must not be shared because exact options are wrong/missing, proof is missing, hidden rows are mixed in, or a hard boundary is crossed. Verification checklist: - Exact setup and slug: Open the already-created setup URL and verify it belongs to the exact non-golf pool slug Ryan/Ralph authorized after setup review. Stop if: The setup URL is missing, wrong, expired, asks for Ryan admin access, or requires creating a new setup token from this packet. - Required option groups: Write down the exact groups players must see, such as Week 1 Games, Tiebreaker, Bracket Round 1, or Commissioner Custom Group 1. Stop if: Required groups are vague, incomplete, different from the commissioner's rules, or not tied to this exact pool. - public.pool_options row proof: Ryan/Ralph verify exact public.pool_options rows for this pool: group labels, option labels, order, active state, and no leaked test choices. Stop if: Rows are missing, stale, for another slug, in the wrong order, include test options, or cannot be verified without protected admin work. - Public form option check: Open the player form on a phone and confirm the visible options match the verified rows and required groups before sharing the share kit. Stop if: The public form shows placeholders, PGA defaults, wrong groups, wrong option count, stale labels, or any option mismatch. - Hidden smoke/test rows: Keep first-entry proof and hidden smoke/test rows separate; hidden rows cannot be used as public option proof or launch proof. Stop if: Active non-test proof is missing, hidden smoke/test rows are mixed into confidence, or test rows appear in the public form/leaderboard story. - Software-only boundary: Confirm the commissioner accepts that Docs Pools is software only and will not handle payments, buy-ins, wagers, payouts, escrow, prize custody, eligibility, disputes, taxes, or records. Stop if: The commissioner asks Docs Pools to touch funds/custody or wants admin exposure, broad launch, paid ads, public signup, auth/payment/schema changes, writes, or migrations. Hard boundaries: - Read-only: this packet must not create setup tokens, create setup links, create pool shells, open pools, perform DB writes, run migrations, mutate public.pool_options rows, or change auth/session/setup-token/payment/schema gates. - No admin exposure: do not expose Ryan admin controls, admin sessions, service-role tools, exports, score tools, payment controls, secrets, setup-token internals, or protected operations. - No public launch: no paid ads, public signup, broad public acquisition, public paid contests, or sharing beyond the known invited group after verification. - No cash/custody: no Docs Pools buy-ins, stakes, wagers, money collection, prize deposits, payouts, escrow, wallets, or prize-money custody. - No custom-option overclaim: public.pool_options storage exists, but this exact pool is not share-ready until exact rows and the public form options match.
Custom option evidence capture
After row/form match, before one trusted tester
Use this read-only packet after Ryan/Ralph compare exact public.pool_options rows with the public player form on a phone. It records links, sport/format, required groups, expected counts, screenshot/file notes, first-entry proof still pending, hidden smoke/test separation, next owner/date, and software-only boundaries before anyone asks one trusted tester.
OPTIONS_MATCHED
Rows and public form match; one-tester request may be prepared next
NEEDS_FIX
Needs fix before any tester request
DO_NOT_TEST_YET
Do not test yet
Capture 1
Exact links
Record the already-created setup URL plus the exact player form, leaderboard, and share-kit URLs for the verified pool slug.
Stop if: Any link is missing, points to the wrong slug, requires admin access, opens a public signup flow, or implies this packet creates a token/setup path.
Capture 2
Rows and counts
Record required option groups, expected option counts, and the public.pool_options row proof status for this exact pool.
Stop if: Rows are missing, stale, for the wrong pool, in the wrong order, thin for a required group, or different from the expected counts.
Capture 3
Phone-visible public form
Open the public player form on a phone and record whether visible groups/options match the verified public.pool_options rows.
Stop if: The form shows placeholders, PGA defaults, wrong groups, wrong counts, stale labels, or any mismatch with verified rows.
Capture 4
Evidence files
Save a screenshot/file note for the option rows and a screenshot/file note for the public player-form output.
Stop if: Evidence is missing, belongs to a different slug, hides option counts, or cannot prove both the row source and public form output.
Capture 5
Before first tester
Confirm first-entry proof is still pending/not yet requested until OPTIONS_MATCHED is true for both rows and the public form.
Stop if: A tester has been asked before row proof and phone-visible public-form options match, or hidden smoke/test rows are used as proof.
Capture 6
Boundary confirmation
Record next owner/date plus software-only confirmation: no Docs Pools cash, custody, admin exposure, writes, migrations, paid ads, or public signup.
Stop if: Anyone asks for buy-ins, stakes, wagers, prize wallets, payouts, escrow, prize-money custody, DB writes, admin controls, setup-token creation, auth changes, payment changes, schema changes, paid ads, or public signup.
Copy evidence capture packet
Fill only after rows and public form are checked
Phase 3 custom option evidence capture packet Use after Ryan/Ralph verify exact per-pool options against the public player form, before asking one trusted tester. Status: DO_NOT_TEST_YET Status meaning: Do not test yet Exact links: Setup URL: [exact already-created /setup/[token] URL or protected Ryan/Ralph setup reference] Pool slug: [non-golf-pool-slug] Player form URL: https://playdocspools.com/pools/[non-golf-pool-slug] Leaderboard URL: https://playdocspools.com/pools/[non-golf-pool-slug]/leaderboard Share-kit URL: https://playdocspools.com/pools/[non-golf-pool-slug]/share Option facts: Sport/format: [football slate / bracket pool / playoff picks / other non-golf format] Required option groups: [exact group names players must see] Expected option counts: [expected option count per group, e.g. Group 1=2, Group 2=2, Tiebreaker=4] public.pool_options row proof status: [verified for this slug / missing rows / order mismatch / needs fix] Phone-visible player-form option match status: [not checked / OPTIONS_MATCHED / mismatch found / needs fix] Screenshot / file notes: Option rows screenshot/file note: [screenshot filename/link or file note proving rows, order, active state, and counts] Public form output screenshot/file note: [phone screenshot filename/link or file note proving public form output] Before one trusted tester: First-entry proof status: pending/not yet requested Hidden smoke/test separation: [hidden smoke/test rows separate from option proof and first-entry proof] Next owner/date: [Ryan/Ralph owner and date for OPTIONS_MATCHED / NEEDS_FIX / DO_NOT_TEST_YET follow-up] Boundary confirmation: [software-only confirmed: no Docs Pools cash/custody/admin/write/token/migration/paid-ads/public-signup role] Decision labels: - OPTIONS_MATCHED only when public.pool_options rows are verified for this exact pool and the phone-visible public player form shows the same groups, labels, order, and expected counts. - NEEDS_FIX when row proof exists but any public form group, label, order, count, screenshot, or file note needs correction before a tester is asked. - DO_NOT_TEST_YET when rows are missing/unverified, the public form has not been checked on a phone, first-entry proof was requested too early, hidden smoke/test rows are mixed in, or any hard boundary is unclear. Tester gate: - Do not ask the first trusted tester until Status is OPTIONS_MATCHED. - If Status is NEEDS_FIX or DO_NOT_TEST_YET, keep the share kit private and fix/reverify rows and public form output first. - First-entry proof should remain pending/not yet requested at this stage. - Hidden smoke/test rows remain separate from option proof, first-entry proof, leaderboard confidence, and share language. Evidence checklist: - Exact links: Record the already-created setup URL plus the exact player form, leaderboard, and share-kit URLs for the verified pool slug. Stop if: Any link is missing, points to the wrong slug, requires admin access, opens a public signup flow, or implies this packet creates a token/setup path. - Rows and counts: Record required option groups, expected option counts, and the public.pool_options row proof status for this exact pool. Stop if: Rows are missing, stale, for the wrong pool, in the wrong order, thin for a required group, or different from the expected counts. - Phone-visible public form: Open the public player form on a phone and record whether visible groups/options match the verified public.pool_options rows. Stop if: The form shows placeholders, PGA defaults, wrong groups, wrong counts, stale labels, or any mismatch with verified rows. - Evidence files: Save a screenshot/file note for the option rows and a screenshot/file note for the public player-form output. Stop if: Evidence is missing, belongs to a different slug, hides option counts, or cannot prove both the row source and public form output. - Before first tester: Confirm first-entry proof is still pending/not yet requested until OPTIONS_MATCHED is true for both rows and the public form. Stop if: A tester has been asked before row proof and phone-visible public-form options match, or hidden smoke/test rows are used as proof. - Boundary confirmation: Record next owner/date plus software-only confirmation: no Docs Pools cash, custody, admin exposure, writes, migrations, paid ads, or public signup. Stop if: Anyone asks for buy-ins, stakes, wagers, prize wallets, payouts, escrow, prize-money custody, DB writes, admin controls, setup-token creation, auth changes, payment changes, schema changes, paid ads, or public signup. Hard boundaries: - Read-only: this packet must not create setup tokens, create setup links, create pool shells, open pools, perform DB writes, run migrations, mutate public.pool_options rows, or change auth/session/setup-token/payment/schema gates. - No admin exposure: do not expose Ryan admin controls, admin sessions, service-role tools, exports, score tools, payment controls, secrets, setup-token internals, or protected operations. - No public launch: no paid ads, public signup, broad public acquisition, public paid contests, or sharing beyond the one trusted tester after OPTIONS_MATCHED. - No cash/custody: no Docs Pools buy-ins, stakes, wagers, money collection, prize deposits, payouts, escrow, wallets, or prize-money custody. - No custom-option overclaim: public.pool_options storage exists, but this exact pool is not ready for one trusted tester unless exact rows and the public form options match.
First private-beta pilot
How to use this without overlaunching
A phone-readable checklist for the next known-commissioner conversation: prove usefulness, keep the pool closed until setup is ready, and stop before anything that needs migration or attorney approval.
Pilot step 1
Choose one known commissioner
Owner: Ryan
Use a trusted person who already understands the private-beta/no-cash boundary and can give candid setup feedback.
Pilot step 2
Start from the readiness packet
Owner: Ryan
Send the beta-readiness link first, then walk the PGA demo and commissioner-ops boundaries before discussing a real pool.
Pilot step 3
Configure a closed shell before sharing
Owner: Known commissioner
Use a buyer setup link or Ryan-assisted admin flow to set name, event, deadline, pick count, and option guidance while the pool remains closed.
Pilot step 4
Prove one non-test entry
Owner: Ralph
Before broader group sharing, confirm the setup wizard shows first-entry proof and hidden smoke/test rows stay separate.
Pilot step 5
Stop at software tooling
Owner: Ryan
Do not collect buy-ins, hold prize money, advertise paid contests, or promise a pool's custom options until its exact choices are configured/verified and attorney boundaries are cleared.
Private-beta pilot runbook
After one known commissioner says yes
A small operating sequence for moving from verbal interest to a real private-beta pool without crossing the no-cash, no-custody, no-paid-ads, or unproven custom-option boundaries.
Runbook step 1
Confirm the yes
Owner: Ryan
- Trigger
- One known commissioner agrees to try Docs Pools in private beta.
- Action
- Reply with the beta-readiness packet, restate that this is software-only tooling, and confirm the pool will stay invite-only with no Docs Pools buy-ins, prize custody, payouts, escrow, paid ads, or public signup.
- Stop if
- They need Docs Pools to hold money, collect entries as wagers, advertise the pool publicly, or settle prize disputes.
Runbook step 2
Set up the closed pool shell
Owner: Known commissioner
- Trigger
- The commissioner accepts the private-beta boundaries.
- Action
- Use the buyer setup link or Ryan-assisted setup to confirm name, event, deadline, open/closed state, pick count, and choice guidance while the pool remains closed to the group.
- Stop if
- The event needs non-golf custom option rows before exact public.pool_options choices are configured and verified for that pool.
Runbook step 3
Run one-entry proof
Owner: Ralph
- Trigger
- The shell is configured and ready for a single trusted tester.
- Action
- Send only the exact player-form link to one tester, confirm one active non-test entry appears, then verify the leaderboard and share kit before any broader invite.
- Stop if
- The setup wizard lacks active non-test proof, hidden smoke/test rows are mixed into launch proof, or the leaderboard/share links do not match the intended pool.
Runbook step 4
Release to the known group
Owner: Known commissioner
- Trigger
- The player form, leaderboard, share kit, option readiness, and first-entry proof all check out.
- Action
- Share the pool-specific share kit with the known invited group only, keeping payments, eligibility, rules, disputes, taxes, and backup records outside Docs Pools.
- Stop if
- Anyone asks for paid ads, open public acquisition, Docs Pools prize handling, or custom non-golf option rows before exact rows are verified.
Founder handoff copy
Pasteable private-beta scripts
Use these for known commissioners, counsel, and internal handoff without drifting into paid-contest, prize-custody, or broad-launch claims.
known commissioner
Text a known commissioner
I built a private-beta sports-pool tool called Docs Pools. It gives commissioners a clean pick form, leaderboard, exports, setup links, and off-platform status/cleanup tools. It does not handle buy-ins, prizes, wagers, payouts, escrow, or prize money. Want to look at the live PGA demo and tell me if this would save you spreadsheet work? https://playdocspools.com/beta-readiness
counsel
Send counsel the review packet
Docs Pools is private-beta sports-pool management software. The current review packet separates software/platform fees from pool funds, blocks prize-money custody, and lists launch questions around geography, eligibility, paid acquisition, and customer wording. Counsel review link: https://playdocspools.com/legal-review
internal
Internal next-sprint handoff
Safe to show: homepage, PGA demo, leaderboard/share, beta-readiness packet, legal packet, protected admin/setup surfaces. Do not overclaim: attorney approval, broad paid launch, paid ads, or live non-golf custom option rows. The public.pool_options blocker is cleared; next blocker is attorney approval plus verifying exact custom choices for each non-golf pool before sharing.
Plain-English answer
Can Ryan show or sell this?
Show it to known commissioners as a private-beta sports-pool software demo: yes. Sell broader public access, run paid ads, promise non-golf custom options are live, or touch prize money: no. The live `public.pool_options` migration is applied and smoke-proven for real non-golf option lists; the next product gate is verifying exact commissioner choices per pool, and the next business blocker is attorney approval for launch posture.