What the daily emails actually became, what a hotel management company wants landing in its inbox, and a phased plan to make RPP's email layer a real piece of the secret sauce.
The daily emails did not stay stopped. They were held the night of Jul 16, then resumed by Jul 18, team included (send logs: /tmp/houston-market-flash.log, /tmp/hourp-flash.log). As of today they are paused to you + Alyssa only.
A payroll/labor block was added to the flashes on Jul 16 (commits 60ea500, 4a1c833). It only ever reached you and Alyssa; the team always got the plain version. The market flash half was reverted Jul 17 (commit a9ebc17).
Email content has been evolving commit by commit with no preview step and no sign-off gate. That is a process hole, not a one-off bug. Phase 0 closes it.
One daily ownership email, a leaner GM email, a Friday portfolio projection, a monthly owner pack, exceptions in between. Nearly all of it runs on data RPP already collects.
Reconstructed from git history and the live scheduler on the Mac Mini. There are two daily email systems: the per-property Flash (scripts/hourp-flash-email.mjs, sent 9:00 AM and 3:30 PM CT for HOURP, HOUZN, HOUUS via cron) and the Houston Market Flash ownership rollup (scripts/market-flash.mjs, once per day, gated on night audits with a 10:30 AM CT fallback deadline).
World Cup badges (commit cefc5f6), day-over-day pickup column (be3c5fb), actual room revenue + MTD boxes (46b5cc5), projection-vs-budget forecast cards with the RMAS SMART comparison (f9f607d, 90cd65e). Each shipped straight into the live sends with no preview step.
Commit 3a75744, date-gated to first send Jul 16.
Payroll/labor blocks added to both emails (60ea500, 4a1c833) with a review gate restricting the labor variant to you + Alyssa (6ece2c4, LABOR_REVIEW flag). That same night every flash send was halted: cron lines commented #HOLD-2026-07-16, market-flash launchd unloaded (6ece2c4 commit body). This hold is the "stopped going out to the team" you noticed.
Commit a9ebc17 restores market-flash.mjs byte-for-byte to its pre-labor state ("payroll belongs in the daily hotel flash only"). The property flash kept its labor block, owner variant only.
Live crontab shows the #HOLD markers removed and both market-flash launchd jobs loaded (launchctl list, exit 0). Send logs confirm deliveries to all five Market Flash recipients for business dates Jul 17 and Jul 18, and property-team sends on Jul 19 (/tmp/houston-market-flash.log, /tmp/hourp-flash.log). No sign-off preceded the resume.
A TEAM_HOLD flag now pauses every recipient except ace@ and alyssa@texashotelmgt.com in both scripts (one-line reversible, scripts/hourp-flash-email.mjs and scripts/market-flash.mjs). Nothing reaches GMs, property teams, or Salim/Rahil/Zabir until this roadmap is decided.
The email is a product surface, but it has been treated like an internal script: content and recipients changed in normal commits, sends resumed without approval, and the only gate (LABOR_REVIEW) covered one feature, not the email itself. The fix is change control on the whole surface, not a better version of any one section.
Everything RPP or the runtime sends on a schedule today. Source: crontab + launchd on the Mac Mini, verified 2026-07-19.
| Schedule (CT) | Recipients | Content | Status | |
|---|---|---|---|---|
| Property Flash x3 scripts/hourp-flash-email.mjs |
9:00 AM + 3:30 PM (cron) | Owners; property teams on hold HOURP: Michael, Ivan, George · HOUZN: Sam Xie +1 · HOUUS: Kareem +1 |
Tonight's occupancy/left-to-sell/ADR, compset rate grid (8h freshness guard), OTB + pickup, projection vs budget vs SMART, sales focus dates, labor (owner variant only) | LIVE TEAM HELD |
| Houston Market Flash scripts/market-flash.mjs |
1x daily, by 10:30 AM | Ace + Alyssa; Salim/Rahil/Zabir on hold | Portfolio revenue banner, MTD vs budget, Occ/ADR/RevPAR vs LY + budget, per-property cards, adjustments & refunds, 7-night forward pace strip | LIVE TEAM HELD |
| Dallas Market Flash scripts/market-flash.mjs --market dallas |
1x daily | Ace only | Same rollup; 3 of 4 hotels are placeholders awaiting automated OnQ/Opera feeds (market-flash.mjs config) | LIVE |
| Freshness monitor scripts/freshness-monitor.mjs |
9:15 AM + 3:45 PM, only if stale | Ace only | Night-audit / rate / OTB staleness alert | LIVE |
| STR request + reminder scripts/str-request-monthly.mjs |
17th monthly + weekly chase | Zabir, Rahil, Ace | Missing STR file requests, threaded ingest acknowledgements | LIVE |
| GM Market Audit scripts/gm-market-audit-emails.ts |
Monthly (draft only) | Never sends; composes drafts | Per-GM compset market audit built on the compset engine | DRAFT ONLY |
| Morning brief agents-runtime/scripts/morning-brief |
6:10 AM Mon-Fri | Ace only | Private phone ops brief (separate system, not part of this roadmap) | LIVE |
Distilled from an industry sweep (hotel ops and revenue-management publications, HSMAI meeting standards, asset-management practice, practitioner threads). Full source list in the footer.
| Finding | What it means | Source |
|---|---|---|
| The 7 AM daily flash is the one universal artifact | Yesterday's Occ/ADR/RevPAR + revenue, MTD block, today's arrivals/departures/OOO, auto-delivered before anyone arrives. It replaces the night auditor's printed packet. | OnlineHotelier manager-report guide; Cloudbeds night-audit reports |
| Comparisons ARE the report | Every number appears three times: actual, vs budget, vs last year (and often vs same day last week). A number without its comparison is noise. | OnlineHotelier; Hotel Financial Coach; Docyt |
| Pickup is daily for the RM, pace is weekly for everyone else | 1/7/30-day pickup windows are the tactical grain; executives should see pace vs same-time-last-year, not daily pickup volatility. Formal strategy review runs over 7/30/90-day horizons. | Lighthouse pickup-and-pace; Demand Calendar; HSMAI revenue meeting agenda (PDF) |
| RGI is the owner metric | RevPAR index is written into management agreements and can trigger operator termination. Weekly STAR lands Wednesday; monthly around the 18th. "Beating budget with RGI under 100 still reads as leaving money on the table." | RevPARGenius; SiteMinder STAR guide; str.com processing dates |
| Friday weekly flash with month-end projection | Actuals-to-date + forecast-to-finish vs budget, green/red per property, one consolidated portfolio view: four correction windows per month instead of one. | Docyt GM weekly workflows; Global Asset Solutions |
| Monthly owner pack = P&L + flow-through + CPOR + narrative | Flow-through and labor cost per occupied room expose problems GOP hides. Every variance answers: what changed, why, what happens next. Forecast accuracy standard: within 5% (3% for sharp shops). | Hotel Financial Coach; Hospitality Net CPOR; Xotels forecast accuracy |
| Volume kills reports, thresholds kill alerts | At ~50% alert rates people learn to ignore everything. Mobile email viewing averages ~10 seconds: one primary message, exceptions first, hierarchy over detail. | Atlassian alert-fatigue; Mailchimp mobile engagement; Agilence exception reporting |
Scanned: Otelier (DigiAudit/IntelliSight), Actabl (ProfitSword, Hotel Effectiveness), M3 Insight, HotStats, Lighthouse (+ ex-Kriya BI), Duetto ScoreBoard, IDeaS G3, FLYR, Cloudbeds, Mews, STR/CoStar itself.
Table stakes (every serious platform): a daily morning flash after night audit, often portfolio-rolled into one email; self-serve scheduled report subscriptions; threshold/exception alerts (overtime risk, competitor rate moves, parity leaks, missing night audit); and a fixed-calendar benchmark ritual (STR Wednesday weekly, ~18th monthly).
Differentiators (the 2025-26 battleground): AI narrative on top of the numbers. Lighthouse BI sends daily inbox insights where "AI Smart Summaries explain which channels, segments and signals drove the variance." Legacy players still send raw tables or download links.
What operators complain about (review sites): schedulers gated behind vendor support, link-not-content emails that force a login from your phone, stale data behind a fresh-looking morning email, and alert frequency you cannot tune.
A portfolio-rollup morning flash that leads with exceptions, carries an AI variance narrative in the email body (no login, no link-chase), renders per-audience versions (owner digest vs GM detail), and sends missing-data compliance alerts so silence never reads as "all good." RPP already owns the hard parts: the night-audit pipeline, rate scans, tax-receipt market intel, QBO actuals, and an AI narrative engine (alert-narrative). This is the secret sauce framing: competitors sell dashboards; RPP delivers the answer into the inbox.
13 data domains live in RPP today (full inventory from the repo sweep, 2026-07-19). Mapped to the emails they can feed.
| Domain | Freshness | Feeds |
|---|---|---|
| Night audit (Occ/ADR/RevPAR/revenue per property-day) | nightly, on arrival | Daily flash, weekly, monthly |
| Forward booking pace / OTB (booking_pace) | daily | Daily flash, pace views |
| Rate shopping vs compset (DataForSEO scans) | 2x daily, 8h freshness guard | GM rate email, rate-move alerts |
| STR benchmarking (monthly; daily variant supported) | monthly ~mid-month | Monthly owner pack, RGI scoreboard |
| TX hotel tax receipts (SIFT: competitor actual revenue) | daily sync, monthly grain | Monthly market share, fair-share gap |
| QBO financials (P&L by property, daily JE) | daily sync | Weekly projection, monthly owner pack |
| Budget vs actual + AI narratives (alert-narrative) | monthly + on demand | Variance narrative in weekly/monthly |
| Labor (Homebase timecards, CPOR) | near-real-time | Owner flash labor block, monthly CPOR trend |
| Guest reviews (TripAdvisor + Google, classified) | weekly scrape | Weekly digest candidate |
| Pipeline red alerts + freshness (heartbeats, month-close evals) | hourly checks | Compliance/exception alerts |
| Property tax / CAD, dual-brand splits, CC recon | nightly / monthly / manual | Monthly and ad-hoc packs |
Four phases. Each phase is shippable on its own; nothing resumes to the team until Phase 1 is signed off.
| When (CT) | Audience | Leads with | |
|---|---|---|---|
| Daily, by 10:30 AM | Ownership Market Flash | Ace, Alyssa (+corp on approval) | Yesterday + MTD vs budget/LY, exceptions on top |
| Daily, 9:00 AM | GM Property Flash | GM + property team | Rate position, OTB, sales focus dates |
| Daily, 3:30 PM | Rate-move exception | GM, only when triggered | What changed since morning |
| Event-driven | Freshness / red alerts | Ace (Woz ops) | What is broken, what is being done |
| Wednesday | STR / market scoreboard | Ownership + GMs | RGI, rank, fair-share gap |
| Friday | Portfolio weekly | Ownership + corp | Month-end projection vs budget, green/red |
| Monthly, ~18th | Owner pack | Ownership | P&L flow-through, CPOR, RGI, AI narrative |
| Monthly, 17th | STR chase | Zabir, Rahil | Missing files (already live) |
Property teams (GMs + staff) on the 9:00 AM flash, and Salim/Rahil/Zabir on the Market Flash, are all held right now.
Recommendation: resume GMs first once you lock the v1 template (they act on the rate grid daily); corp team resumes with the Friday weekly instead of the daily.
It is currently in your and Alyssa's variant only, behind the LABOR_REVIEW gate.
Recommendation: keep owner-only through Phase 1; revisit for GMs once the daily CPOR numbers have a few weeks of trust behind them.
Recommendation: exception-only. Two identical daily emails is the fastest route to both being ignored (alert-fatigue research is unambiguous).
The Wednesday RGI scoreboard needs weekly STAR data; today RPP holds monthly (plus a supported daily variant). Weekly STAR is a paid CoStar add-on per property (cost unverified, needs a quote).
Recommendation: get the quote for the 3 fed Houston properties first; monthly RGI + SIFT market share covers the interim.
No email content or recipient change ships without a preview to you and an explicit OK, logged in an EMAIL-CHANGELOG.
Recommendation: yes. This is the fix for "I don't know how it mutated" ever happening again.