Implementation-ready handoff for the printed CTA, the QR scan experience, the free June report, contact capture, competitive-set definition, the STR-upload question, and the $9/month founding-member offer. Produced 2026-08-18 by running the handoff prompt (prompts/RPP Direct Mail CTA and QR Funnel Handoff.md) through a 12-agent research pass and an independent five-seat panel (Hormozi, Ive, Wynn, a Woz technical lens, ChaseAI on Gemini as the cross-vendor contrarian). Panel transcripts and the 12 research reports are archived at ~/agents-runtime/docs/rpp-mailer-funnel-brief-archive/ (research/ and panel/). Published page: https://rpp-mailer-funnel-brief.pages.dev
0. Verified vs assumed, up front
Verified (source in the same line)
- STR's own contract bars the upload Ace proposed unless CoStar consents in writing: STR Benchmark Terms Sec. 4.2 (CoStar Product Terms and Conditions effective 2022-06-01, the latest public copy): "Authorized Users do NOT include consultants, business intelligence solution providers, revenue management software providers... Unless Licensee has obtained CoStar's express written consent... Licensee shall NOT share STR Benchmarking Deliverables with any party which is not an Authorized User." The hotel's own raw numbers stay the hotel's property (Sec. 4.4). Post-2023 wording is not public. (research/05-str-privacy-legal.md, quotes from the saved PDF)
- The compset audit, Ace's headline paid deliverable, needs only the peer roster; every number in it is computed from tax receipts and room counts, never from STAR metrics (
supabase/functions/_shared/compset-engine.tsbuildMonthlyAudit lines 592 to 899, verified in research/09-gap-1.md). A GM naming the hotels by hand yields the same roster. - The July 2026 teaser funnel is live and reusable: public no-login page
app.revparpro.com/t/:code, edge functionteaser-page, tablesteaser_tokensandteaser_leads(migrations 252, 253, 270), 8-character opaque codes fromscripts/generate-teaser-tokens.mjs; 6 tokens, 57 scans, 22 leads on prod (research/01-repo-infra.md). - Not built:
revparpro.com/r/{token}(revparpro.com is a static Cloudflare Pages project, folderlanding/, no functions), any billing (no Stripe SDK, keys, checkout, webhook, or account known), a public set picker, an events table, lead scoring, a drip engine (research/01, 09-gap-4). - STR file intake today is unsafe for strangers: workbooks kept forever in bucket
str-reportswith an any-authenticated-user read policy (migration 012 lines 54 to 56), no purge job, xlsx/xls only (PDF fails), and thestar@revparpro.comrouting rule does not exist (11 rules on the zone, none for star@) (research/01, 09-gap-1). - Data depth for the sample hotel: all 14 printed hotels carry a complete 24-month monthly series 2024-07 to 2026-06; the subject has 114 months back to 2017-01; the tract has 50 active hotels, 47 filed June 2026; the subject ranks 9 of 14 printed and 25 of 47 filed tract hotels by June RPP RevPAR; only 10 of the 14 printed hotels sit inside the tract (research/07-data-depth.md, read-only SQL 2026-08-18).
- Comptroller timing: weekly Monday publish; the June 2026 file first populated 2026-07-27 (about four weeks after month end); July 2026 first appeared 2026-08-10 and was about a third of June's row count by 2026-08-17 (research/07,
sift_ingest_periods). - Mail universe at the working profile (75+ rooms, June 2026 receipts >= $200,000): Austin 177, San Antonio 138, total 315; adding the $100,000 to $199,999 band gives 438; all active hotels with a June filing in the two markets: 675 (research/09-gap-3.md, SQL). Metered First-Class 1 oz letter $0.78 (USPS Notice 123 effective 2026-07-12).
- QR geometry: 0.87 in symbol, version 4, level M; the label "GET JUNE FREE" sits 0.0625 in below the symbol, inside the 0.105 in four-module quiet zone; the sample QR decodes to
revparpro.com/?mail=bw-austin-central-2026-06, a readable slug that resolves nowhere (research/03-mailer-artifact.md). - No credible public benchmark exists for cold B2B letters with a QR to hotel GMs; the only controlled QR-on-mail study (Marlar/Gallup 2018 via a 2024 Census working paper) found 4% used the QR and no response difference between URL, QR, and both (research/04-external-benchmarks.md). Print a typeable URL beside every QR.
Assuming (not checked)
- A GM can name 4 to 8 competitor hotels from memory on a phone (Hormozi and Wynn both flag this as untested).
- Founding-member terms (cap, duration, price lock, cancel) are Ace's to set; every term below is a proposal.
- Ace's real list floor; the $200,000 / 75-room profile was Codex's proposal that Ace accepted by not objecting.
- The folded piece is machinable and under 1 oz.
- All conversion thresholds in section 10 are proposals, since no benchmark exists.
1. The decision: progressive gate (option D). No STR upload before the free report.
Recommendation. Contact information unlocks the full June report. Naming the exact competitive set is the commitment act, offered right after the report opens (arm B tests making it required). The STR file upload is removed from the free path entirely in drop 1; when it ships, it is an optional shortcut for the set step, subject-only plus roster retention, offered first to paying founding members. Ace's both-gates hypothesis is adopted for contact information and rejected for the upload.
Why (decisive evidence).
- The upload adds time and effort at the worst moment. Paper is opened at the desk or the mailroom; the scan happens on a phone; the STAR workbook lives in an inbox and must be the Excel version because the parser rejects PDF (research/09-gap-1). Hormozi's July line stands: "Effort at step one must be zero" (
specs/str-upload-public-tool-design.mdsection 6). - The file adds nothing the deliverable needs. The audit and the exact-set report both run on the roster (verified above). Hand-naming produces the same roster and is a stronger intent signal than a file drop (Hormozi, Wynn).
- The upload asks strangers to breach their STR agreement (Sec. 4.2 above). Management-company revenue teams, the core customer, know the clause and are the leads most likely to refuse (Wynn). The Texas incumbent Source Strategies invites STR-report sharing, which shows market comfort, not CoStar consent (research/06).
- No analog gates a free report on a confidential upload; first look is ungated, email gates history and saved sets, payment gates comp control (research/06: BoozeReports, AirDNA, Source Strategies).
- The intake path is not safe to point strangers at today (bucket policy, no purge, no routing). Fixing it properly costs 3 to 5 days on the print critical path (Woz lens).
- Every panel seat, including the Gemini contrarian, landed on D independently after receiving the same raw evidence.
What Ace keeps. The commitment he wants exists: it is naming the set. Arm B of the experiment makes it required before the report opens, so the hypothesis "commitment raises lead quality" is tested without the contract exposure.
2. Printed CTA block (the only mailer change)
Text column 6.19 in wide, block 2.26 in tall (research/03). Widen the QR column to about 1.4 in so the typeable URL fits on one line (Ive). Move the QR label 0.11 in below the symbol, out of the quiet zone. Encode https://revparpro.com/r/{CODE}?s=q (36 bytes, fits QR version 3 at level M, so larger modules in the same 0.87 in; Woz lens). Print the URL without ?s=q so QR and typed visits split cleanly.
| Line | Copy | Chars | Type |
|---|---|---|---|
| Headline | Get the full June report for your hotel, free. | 46 | 18pt / 600 ink |
| Supporting | All 47 area hotels that filed, two years of history, and your own set of the hotels that matter. | 96 | 9.6pt slate |
| Price | June is free. Founding members keep it coming for $9 a month. | 60 | 11.5pt / 600 ink |
| QR label | Open your report | 3 words | 7.5pt / 700 action blue, uppercase |
| Under label | RevParPro.com/r/ABCD2345 | per piece | 7.5pt slate |
| Method line | Source: June 2026 Texas public hotel filings. | unchanged | 7.5pt slate |
The "47" is per-hotel variable data (count of tract hotels with a June filing). "Two years" is supported by the 24-month series verified for the printed set. Nothing else on the page changes. Do not fill the 0.73 in of empty space above the method line (Ive: the one calm moment on a dense page).
3. The journey, step by step
- Scan or type.
revparpro.com/r/{code}logs the hit (token, timestamp, user agent, referrer, QR vs typed) and 302s to the destination stored on the token,app.revparpro.com/t/{code}by default. Destinations change by updating the row; nothing is reprinted. Unknown or voided code: a static recovery page with a code field and a hotel-name lookup. - Known hotel, zero input. The page names the hotel and month, shows the whole area (all 47 filed tract hotels), the printed suggested set (13), and an empty "Your set", plus three headline figures. Nothing is asked. No account, no score, no fake locked rows, no upload, no price.
- Unlock. One button opens a sheet over the data: work email (required), name (optional), role chips. Hotel, month, campaign, and piece are static, not fields. Submit opens the full June report on screen and emails a link to a copy.
- Full June report. Rank in the set, gap to the named leader, named June movers with dollar swings, 24-month history per hotel, share vs fair share with 12-month trend, prior-June and 12-month levels, the whole-area table, methodology behind an info icon.
- Choose the hotels that matter. Picker: the printed 13, the other tract hotels, and a name search limited to the subject's radius. Tick 4 to 12. Save rebuilds June on the exact set and re-sends the copy. Arm B moves this step before the report opens.
- Founding-member card. After the report and after the set is saved: $9 a month, the promise, one button. If Stripe is not live on mail day, the button reserves the spot; the checkout ships before the July issue.
- Checkout. Hosted Stripe Checkout, $9/month, cadence and terms disclosed there, webhook writes the entitlement, confirmation email.
- Monthly issue. Generated when the set's members have filed the period, the week the state publishes, about four to five weeks after month end; emailed link plus on-screen; completeness line (n of N peers filed); re-issue on late filings.
- Follow-up. Email only, data-driven, capped, one-click unsubscribe. No calls or texts in the pilot.
- STR upload (phase 2, members first). Optional shortcut inside "Your set": Excel only, subject line plus roster kept, file deleted within 7 days, right-to-share on the GM, hand-pick beside it at equal weight.
4. Screen copy
Rule (Ace, 2026-08-17): data screens carry names, numbers, labels, and status; every explanation lives behind a small info icon.
4.1 Scan landing (zero input)
- Title:
Best Western Plus Austin Central - Label line:
June 2026 · Austin US-290/I-35 area · 47 hotels filed - Three tiles, no sentences:
Rank 25 of 47(by June RevPAR) ·Area change -$873,230 (-7.7%)·Suggested set change -2.1%(swap the third tile forLargest gainer: {hotel} +$Xonce the tract-movers review gate exists; the DoubleTree -$817,740 swing shows why the gate is needed, research/07) - Segmented control:
Suggested (13)·Whole area (47)·Your set - Info icon text:
Suggested: 13 hotels RevParPro's model matched to yours. Whole area: every hotel in your public filing area. Your set: the hotels you choose. Figures are June room receipts from Texas public filings; RevPAR here is receipts divided by rooms and days, not the figure on a benchmarking report. - List columns:
Hotel·June receipts·$ vs last June·RevPAR; subject row tinted; printed 13 marked with a dot in the whole-area view - "Your set" empty state:
Not set yet· linkChoose your hotels - Primary button:
Open the full June report· captionFree · takes a work email - Footer:
Source: June 2026 Texas public hotel filings. RevParPro is not affiliated with STR or the Texas Comptroller.
4.2 Unlock sheet
- Title:
Your full June report - Static line:
Best Western Plus Austin Central · June 2026 - Fields:
Work email(placeholdername@yourhotel.com) ·Name (optional)· role chipsGeneral managerOwnerRevenueOther - Consent line:
We email you this report and, if you choose, the monthly follow-up. No calls, no texts. Unsubscribe in one tap. We do not sell contact details.· linkPrivacy notice - Button:
Open it and email me a copy - Success:
Report open. A copy is on its way to {email}. - Failure:
That did not send. Nothing was lost; try again. - Invalid email:
Please use a work email address.
4.3 Full June report
- Header:
June 2026 report · Best Western Plus Austin Central - Set strip:
Set: Suggested (13)· buttonChoose the hotels that matter - Rank block:
Rank 9 of 14 · Leader: Fairfield Inn & Suites Austin Downtown, $98.73 RevPAR · You: $52.36 - Movers block:
June moverslist:Fairfield Inn & Suites Austin Downtown +$119,570...La Quinta Inn Austin North -$34,739 - History block:
24 monthsper hotel sparkline table, subject first - Share block:
Your share of set receipts 5.8% · Fair share by rooms 7.1% · 12-month trend(figures come from the engine's subjectSharePct and fairSharePct fields; the numbers shown here are placeholders to be computed live, not verified values) - Levels block:
June 2025 $265,037 · June 2026 $215,219 · 12 months $2,731,988 vs $3,155,263 - Whole-area table (47 rows, sortable)
- Emailed-copy line:
A link to this report was sent to {email}.· linkSend again
4.4 Set picker
- Title:
Choose the hotels that matter - Helper (one line):
Tick 4 to 12 hotels. Start from the 13 suggested, add from the 47 in your area, or search nearby. - Sections:
Suggested (13)checkboxes ·Also in your area (34)checkboxes ·Search nearbytypeahead (results limited to the subject's radius; never state-wide) - Secondary link:
Use all 13 suggested - Button:
Save my set(disabled under 4 ticked; helperPick at least 4) - Success:
Your set is saved: 6 hotels. June rebuilt: you rank 3 of 7. Updated copy sent to {email}. - Unmatched typed hotel:
We could not find that hotel in the June filings. Try another name. - Arm B (set required before report): sheet appears right after the unlock success with title
Choose the hotels that matter, then open your reportand buttonSave and open my report
4.5 Founding-member card (after report and set)
- Eyebrow:
Keep it coming - Price:
$9 a month - Promise:
The same report on the hotels you picked, every month, the week Texas publishes your area's filings, about four to five weeks after month end. Change your set any time. - Button:
Become a founding member - Fine line:
Cancel any time. Terms at checkout. - Fallback when checkout is not live: button
Reserve my founding spot· successReserved. We will email you when the July report is ready. You pay $9 then, or not at all.
4.6 Checkout and confirmation
- Stripe hosted page, product name TBD by Ace (working label
RevParPro Monthly Market Report; do not use "STR" in the name) - Confirmation screen:
You are a founding member. Your July report arrives the week Texas publishes your area's filings. - Confirmation email subject:
Your RevParPro founding membership
4.7 Unknown, expired, or voided code
- Title:
We could not find that code - Body:
Check the letters printed under the square on your report and try again.· code field · buttonOpen - Fallback:
Or tell us your hoteltypeahead (Texas hotel name lookup for identity only) → unlock sheet - Expired offer window (report always resolves): founding card shows
Founding pricing has closed. Standard pricing at checkout.
4.8 STR upload states (phase 2, members first; copy locked now so product does not redesign later)
- Placement: inside "Your set", two equal choices:
Upload your benchmarking report (Excel)·Pick the hotels by hand - Under upload:
We read the list of hotels in your set and your own hotel's line, then delete the file within 7 days. Nothing else is kept. Ask and we remove it all. - Consent checkbox (required):
I have the right to share this file. RevParPro keeps only my hotel's own line and the list of hotels in my set, deletes the file, and never shows it to another hotel. - Small note:
Reports from STR are covered by your STR agreement, which limits who may receive them. If you are not sure, pick your hotels instead. Both paths unlock the same report. - Processing:
Reading your set - Success:
Your set: 6 hotels. 5 matched to Texas filings, 1 not found. Review and save. - Unsupported:
That is a PDF. We can only read the Excel version (.xlsx). Or pick the hotels by hand. - Failure:
We could not read that file. Nothing was kept. Try the Excel version or pick by hand. - No file:
No file? You still get the full report built from public filings. Pick your hotels by hand. - Delete:
Delete my uploaded file and its data→Deleted. A one-line log entry is kept so we can prove it.
5. Field table
| Field | Prefilled from token or requested | Why needed | Required |
|---|---|---|---|
| Hotel (str_number, name, address) | Prefilled | Personalization, report subject | yes |
| Report month | Prefilled (report_period) |
Fixes the free issue to June 2026 | yes |
| Campaign, batch, variant, drop date, market | Prefilled | Attribution and the A/B arm | yes |
| Mail piece ID | Prefilled (one token per piece) | Per-piece attribution, void on misprint | yes |
| Printed set (13 str_numbers) and printed snapshot (14 rows plus headline numbers) | Prefilled | Page echoes the paper exactly even after Comptroller revisions | yes |
| Channel (QR vs typed) | Captured on hit (?s=q) |
Tests whether the QR earns its place | auto |
| Work email | Requested | Deliver report, monthly issue, opt-out channel | yes |
| Name | Requested | Personal salutation in email | no |
| Role | Requested (chips) | Check-writer signal for scoring | no |
| Phone | Not collected in pilot | TCPA and Texas SB 140 exposure; email-only follow-up | no |
| Consent (email) timestamp and text version | Captured | CAN-SPAM proof | auto |
| Defined set (str_numbers, source printed/manual/roster) | Requested (picker) | Exact-set rebuild, roster for the audit, intent signal | arm B yes, arm A no |
| Self-reported June occupancy and average rate | Requested, optional, phase 2 | Lets the GM line up their own numbers without any file | no |
| Founding reserve flag | Requested (button) | Waitlist before checkout exists | no |
| Stripe customer and subscription IDs, status, period end | Captured by webhook | Entitlement | on subscribe |
| Session key | Issued once after unlock | Lets the lead edit its set later with no account | auto |
| Upload consent, data policy, purge_after (phase 2) | Captured | Retention and deletion proof | on upload |
6. State and flow diagram
flowchart TD
A[Scan QR or type URL] --> B{r/code valid?}
B -- no or void --> U[Unknown code page: retype code or find hotel] --> G
B -- yes --> C[Log mail.scan, 302 to destination]
C --> D[Known hotel, zero input: whole area, suggested 13, your set empty, 3 tiles]
D --> E{Open the full June report}
E --> G[Unlock sheet: work email, name, role]
G -- fail --> G
G -- success --> H{Arm}
H -- A --> R[Full June report on screen + emailed link]
H -- B --> P[Set picker required: tick 4 to 12] --> R
R --> P2[Choose the hotels that matter, optional] --> R2[June rebuilt on exact set, copy re-sent]
R --> O[Founding-member card: $9 a month]
R2 --> O
O -- checkout live --> K[Stripe Checkout] --> W[Webhook: entitlement, confirmation email]
O -- not live --> V[Reserve founding spot: wants_founding]
W --> M[Monthly issue when set members have filed, week of state publish]
V --> M2[Email when July is ready, pay $9 then]
R --> F[Follow-up: email only, capped]
R2 --> X[Phase 2 members: STR upload shortcut] --> X1{xlsx?}
X1 -- no --> X2[Unsupported: pick by hand]
X1 -- yes --> X3[Parse in memory: subject line + roster] --> X4[Purge file within 7 days] --> R2
7. Tracking events and attribution
Events land in a new funnel_events(event, code, token_id, lead_id, props, ts) table, service-role writes only; Resend webhooks write email.delivered, email.opened, email.clicked into the same table (Woz lens). No PostHog for 1,000 pieces.
| Event | Properties |
|---|---|
| mail.scan | code, s (q or typed), user_agent, referrer, cf_country, outcome (ok, unknown, void), first_or_repeat derived in SQL |
| page.view | code, step |
| gate.start / gate.submit / gate.success | code, role, error |
| report.view | code, period, arm |
| set.edit / set.save | code, added, removed, size, source (printed, manual, roster) |
| self_report.submit | code |
| founding.view / founding.reserve | code |
| checkout.start / checkout.complete | code, lead_id, stripe_subscription_id |
| issue.sent / issue.opened | subscription_id, period, completeness (n of N) |
| upload.start / upload.success / upload.reject / upload.delete (phase 2) | code, reason |
| unsubscribe | lead_id |
Attribution fields on teaser_tokens: channel, campaign, batch, variant, mail_piece_id (unique), report_period, printed_set jsonb, printed_snapshot jsonb, mailed_at, expires_at, status, destination. Dashboard: one SQL view per variant (mailed, unique scans, QR vs typed, gate submits, sets saved, reserves, paid), emailed daily through the existing daily-ops email pattern.
8. STR-upload privacy and retention, and the no-upload alternative
Position (confirmed with Ace 2026-08-18 evening): do not accept the file in the free path, ever. Ship "pick your hotels" instead (60 seconds of clicking on a page that already lists the printed 13). The upload ships as a paid-member convenience with the July issue (phase 2), never on the printed piece or in the free report. In parallel, Woz emails integration@str.com asking for the written data-sharing path that Cloudbeds and HotelIQ hold (the "express written consent" Sec. 4.2 names); a yes widens the upload, a no leaves the roster-only member convenience or removes it, with nothing else in the funnel changing. One attorney hour before the July issue: Sec. 4.2/4.4 plus the consent copy below, and the origin of the "STR tract" and "STR ID" labels printed on the mailer. When the upload ships, the requirements are:
- Transport TLS; new edge function
str-upload-public; xlsx/xls only with a magic-byte check and a 10 MB cap enforced in code (the live bucket has no size or mime limit today, research/09-gap-1). - Parse in memory; persist only the subject hotel's own line and the peer roster (
data_policy = subject_only); compset averages, indexes, and rank are dropped at parse. Size (assumption, counted from the 8 parser touch points in research/09-gap-1, not a measured diff): 50 to 80 lines instr-parserplus about 25 for the flag and delete. - Raw bytes to a new bucket
str-reports-publicunderpublic/{lead_id}/, service-role-only policies,purge_after = now() + 7 days, pg_cron purge, sha256 kept for dedupe. Never the existingstr-reportsbucket. - Encryption at rest: state only what Supabase documents once read; do not print an unverified claim.
- Access: service role plus one admin edge function that writes
str_upload_access_log; nobody browses the bucket. - Retention: 90 days after last activity for non-subscribers, active life plus 30 days for subscribers (assumptions, common practice), deletion requests honored within 45 days at most (TDPSA Sec. 541.052(b) timing even though the B2B exemption likely applies, research/05).
- Deletion: self-service button removes object and rows; one log line kept; confirmation email. A
privacy@revparpro.comrouting rule must exist before the copy promises it (none exists today). - Consent: the checkbox in 4.8; never say STR-approved, STR-compliant, or that the GM's contract allows it.
- No-upload alternative, always equal weight: the picker (printed 13, tract hotels, radius search) plus optional typed June occupancy and average rate shown only to that lead. Both paths unlock the same report.
- Follow-up stays email-only: CAN-SPAM applies to B2B (accurate headers, truthful subjects, physical address, opt-out honored within 10 business days); no marketing texts or calls without TCPA-grade written consent (research/05).
9. Lead scoring and follow-up rules
Scores are proposals; the pilot calibrates them.
| Behavior | Score | Meaning |
|---|---|---|
| Scan, no form | 10 | Weak; no contact exists, no follow-up possible; the second mail touch is the follow-up |
| Contact captured | 30 | Warm |
| Report opened twice or copy forwarded | +20 | Interested |
| Set defined | 50 | Real prospect (the commitment act) |
| Upload (phase 2) | 60 | Strong intent |
| Founding reserve | 70 | Hot |
| Subscribed | 100 | Customer |
Multipliers for the platform (management companies are the core customer): email domain matches a census management_company (11 of the 14 sample hotels carry one, research/07); role Revenue or corporate; one domain across two or more tokens (a company reading its portfolio). Any multiplier fires a human touch within one business day; everything else stays on email-only nurture.
Follow-up sequence (email only, max one message per week, unsubscribe on every one, physical address in the footer):
- T0: report delivery (transactional; the link leads, subject says so).
- T+3 days, report never opened: one reminder,
Your June report is waiting. - T+7 days, unlocked but no set: one nudge,
Pick the hotels that matter, deep link into the picker. - July publish (about four to five weeks after month end):
July filings for your area just posted, one data sentence, the founding door. This is the drip: every month is a new factual reason to write, ending at the same door. - Subscribers: the issue itself, nothing else.
- Scan without form: no email exists; the next mail touch (same list, the July number) is the follow-up. Channel verdict comes after touch 2, not touch 1 (July spec section 8).
10. The smallest credible experiment (first 500 to 1,000 pieces)
- List: Austin and San Antonio, June 2026 filers with 75+ rooms. Core (>= $200,000 June receipts) is 315 hotels; adding the $100,000 to $199,999 band makes 438 (research/09-gap-3). Recommendation: mail all 438 in drop 1 and keep Houston (core 290) for drop 2 rather than dilute the two-market decision; Ace's call on the floor.
- Print: identical for every piece; only the token differs. Scan-test the relabeled block on a printed proof before the run.
- Arms, split at token mint, half and half within each market, both with no upload:
-
A: contact → report → set optional.
-
B: contact → set required (4 to 12 hotels) → report.
-
QR vs typed split rides on every arm via
?s=q. -
Metrics in order: scans per piece (primary; the traffic question), unlocks per scan, sets saved per unlock, founding reserves or paid per unlock, QR share of visits.
- Stop and decide rules (proposals; no external benchmark exists):
-
Fewer than 5 scans across the whole drop within 14 days: the constraint is traffic, not the gate. Stop touching the web flow; fix list, envelope, and the piece; run touch 2 (Hormozi, ChaseAI).
-
At 30 or more scans per arm: if B unlocks under half of A, drop the requirement; if B holds 70% or more of A and produces more sets and more paid, make the set step required (Hormozi's thresholds).
-
Under 30 scans per arm: call it directional, do not scale on it (Wynn).
-
Scale rule: move to 1,000+ pieces (add Houston or Dallas) only after touch 2 on the same list, and only if the drop produced at least 15 unlocks and 5 saved sets (proposal thresholds; adjust after the first read).
- Cost: 438 metered letters at $0.78 = $341.64 postage plus envelopes at about $0.0415 each (research/09-gap-3), before paper, toner, and labor (unknown).
11. Hormozi's position, panel record, unknowns, next action
Hormozi (independent, Claude persona, sourced to his corpus): D, tightened. "The file is not the value. The roster is." Contact information: agree. STR upload: dissent, "not on strangers, not in drop one, never as the price of a free report." Value Equation: the upload loads time delay and effort at step one; the audit needs only the roster; the upload filters out the best leads (management-company people who know the clause). Strongest objection to himself: Ace is right that email alone buys tire kickers; the answer is that naming the set is the act, and whether it must come before the report is the test. Evidence that would change him: arm B holding 70%+ of A's unlock rate with better $9 conversion (make the set required, still no upload); CoStar offering a written consent path (upload becomes a member option sooner); hand-named sets diverging badly from uploaded rosters. Founding terms proposed, none printed: qualifies = any hotel from this mailing that subscribes before the July report ships; cap set by Ace and shown at checkout only; $9 held for the first 12 months, not forever, delivery cost unmeasured; cancel any time; first paid report refunded on request. Directive: "ship the token route and the set-naming step. Hold the upload. Mail 500."
Panel record. Ive: D; the paper made a promise, the first screen must keep it before it asks; objection: naming all 47 at zero input may make the email step feel thin. Wynn: D with set definition as the real gate; would run an arm with the upload required to test Ace's hypothesis directly (not adopted: the intake path is unsafe and star@ is unrouted); STR retention subject-only plus roster. Woz lens: D on feasibility and honesty, A as fallback; upload deferred out of the pilot; picker is the long pole; nothing on paper may promise what is not deployed on print day. ChaseAI (Gemini, cross-vendor): D; the funnel dies in the first 30 seconds if the phone is asked for a file; skip the upload for the first batch; stop and fix the paper if scans stay under 2% (his threshold); do not put "STR" in the product name. Consensus formed independently on the same raw evidence, with a contrarian seat present.
Agreement. Contact info before the full report; zero-input value first; naming the set is the commitment; upload never gates the free report; STR retention subject-only plus roster when it ships; email-only follow-up; typeable URL beside the QR; no "STR" in the product name.
Dissent preserved. How much to name at zero input (Ive's arm for drop 2: whole area named vs rank and count only). Whether to test the upload as a required arm at all (Wynn yes, others no). Whether the set step should be required or optional (the drop-1 experiment).
Unknowns.
- Current STR Benchmark Terms (post-2023) still exclude BI providers: cheapest check is a THM GM exporting the current supplement from the CoStar portal.
- Founding-member terms, product name, list floor and markets, return address, and whether a Stripe or other merchant account exists: all Ace's.
- Scan behavior of hotel GMs: no data exists; drop 1 is the benchmark.
- Machinability and weight of the folded piece; the 2026-08-19 test print is where to weigh one.
- Whether the QR label fix scans on a printed proof.
Next action. Woz builds the pre-print list in section 12 starting with the migration and the /r/ route. Ace answers the five decisions in section 12 and opens the Stripe account now (the account, not the code, is the blocker).
12. Engineering handoff and Ace decisions
Before any piece prints (6 to 7 dev days sequential per the Woz lens sizing in panel/woz-lens.md section 8, an estimate not a measurement; the picker is the long pole):
- Migration:
teaser_tokensnew columns,teaser_leadsnew columns,funnel_events,lead_defined_sets,member_subscriptions(S). - Per-piece token mint with a real collision retry, printed set and snapshot stored, CSV for the print run, QR at version 3 with a clean quiet zone (S).
landing/functions/r/[code].tsPages Function on therevpar-proproject with logging and 302, plus a CI job to deploylanding/(S). Unknown-code page.- Engine
printedmode:buildMarketSetloads the 13 printed ids (S). - June report page at
/t/{code}: zero-input landing, unlock sheet, full report, picker with radius-limited search, arm switch (M). - Founding reserve button (XS). Remove the fake locked rows and the score from the public page.
- QR quiet-zone fix on the mailer, typeable URL under the label (XS).
Within two weeks after drop: Stripe Checkout plus webhook (S, blocked on the account), follow-up emails (S), variant dashboard (S).
Before the first July issue:
report_issuesgenerator triggered after the daily 6 AM sift-sync when the set's members have filed (M). Deferred: public STR upload (phase 2, members first, section 8), PDF rendering, tract-movers tile (needs a review gate). Broken promises if slipped: "your own set of the hotels that matter" (picker), "keep it coming" (generator by the July issue), "$9 a month" (checkout within two weeks), and every scan if the quiet zone stays wrong.
Ace decides (one line each):
- Founding terms: accept the proposals in section 11 or change them.
- Product name for the checkout and landing page (no "STR" in it).
- Mail list: 438 (both bands, two markets) or 315 core, and whether Houston joins drop 1.
- Return address for the piece.
- Merchant account: does a Stripe account exist anywhere; if not, open one this week.
Sources
- Handoff:
20-business/RevParPro/prompts/RPP Direct Mail CTA and QR Funnel Handoff.md - Mailer:
revparpro/artifacts/direct-mail/rpp-best-western-austin-sample-v06.htmland-data.md; live review https://gm-content-v6.rpp-mailer-v06-review.pages.dev/ - Prior design:
20-business/RevParPro/specs/str-upload-public-tool-design.md(three-rung ladder, Hormozi 2026-07-15, postcard plan) - Repo:
src/pages/Teaser.tsx,supabase/functions/teaser-page/index.ts,supabase/functions/_shared/compset-engine.ts,supabase/functions/str-parser/index.ts,workers/star-intake/src/index.js,scripts/generate-teaser-tokens.mjs, migrations 012, 181, 252, 253, 270 - Research reports (12) and panel positions (5):
~/agents-runtime/docs/rpp-mailer-funnel-brief-archive/research/and.../panel/ - STR terms: CoStar Product Terms and Conditions effective 2022-06-01, STR Benchmark Terms Secs. 4.2 and 4.4 (saved PDF in the research folder); USPTO Reg. No. 3579866 for the STR mark
- Texas Tax Code Sec. 156.155 (binds state agencies; data declared public); FTC CAN-SPAM guide; TCPA and Texas SB 140 summaries in research/05
- Analogs: Source Strategies, BoozeReports, Texas Bar Tab, AirDNA pricing (Wayback 2026-08-09), Lighthouse, Key Data (research/06)
- Benchmarks: ANA Response Rate Report 2023, Marlar/Gallup 2018 via US Census Bureau 2024 working paper, USPS Notice 123 effective 2026-07-12, Formstack 2015 (research/04)