Built from three inputs today: a full live walkthrough of every page in app.revparpro.com (E2E owner + front-desk accounts, desktop and phone), the last week of decisions and recaps (dashboard boardroom verdict, authz architecture ruling, leads build, deal pipeline, flash pipeline), and the Innrly screenshot archive. This page is the merge: what is already decided, what the walkthrough found, and what realistically ships by Sunday night.
You are right that it misses the personas, but the miss is narrower than it feels. Every persona's core surface already exists and four of them are near-ready. The product fails at the seams: wrong landing page, empty-state defaults, one access hole, and an owner dashboard that the board already agreed is anchored on the wrong data layer. Those seams are exactly what a weekend can fix.
Locked calls from the last 48 hours. This roadmap builds on them and re-litigates none of them.
| Decision | When | What it means for the sprint |
|---|---|---|
| Dashboard: feeds before UI, 4-0 (v3 mockup, board memo in vault) | Jul 16 | Only ONE new dashboard piece: the last-night / MTD money band + freshness strip, rendering unfed properties honestly. Attention queue stays dead. STR table stays deferred. PMS inventory of the 10 unfed properties is the day-zero action (due Jul 18). |
| Authorization: Option C hybrid (debate ruling, access audit) | Jul 17 | Postgres becomes the single authorization evaluator (one authorize() RPC), edge functions become transport, CI gate + parity test, no external engine. Phase 0 PR is scoped and waiting on your go; it closes the hole my walkthrough re-confirmed today. |
| Morning personas: Owner / GM / DOS lenses; front desk is NOT a dashboard persona (spec) | Jul 17 | Role landings follow the spec: desk to Leads (shipped), GM to Daily Ops, engineer to PIP, finance to Budget, revenue to Compsets. DOS forward view builds on 3-hotel pace data. |
| Type standard: Inter + JetBrains Mono everywhere (commit bddf3fb) | Jul 17 | Shipped. All sprint UI work follows it; this page does too. |
| GM flash = the GM's full morning briefing (25-component map) | Jul 17 | Waiting on your component picks; not in this sprint's critical path. Labor card stays in Ace + Alyssa review. |
Fresh findings from today's live audit that no existing thread covers.
| Finding | Severity | Evidence |
|---|---|---|
| Front-desk account reads all PIP projects and budgets by typing the URL; nav hiding is the only barrier on several surfaces | Blocker | Logged in as e2e-frontdesk, opened /app/pip, full $2.8M project table rendered. Matches the access audit's "property scoping barely exists" finding; Phase 0 + route guards close it. |
| Empty-state defaults everywhere: every property picker starts at alphabetical CLLAL (aloft), Budget starts at January | Blocker | Sales Plan opens "No sales plan exists"; Budget opens "No P&L data available"; Prospects opens an empty kanban. The data exists for Houston properties; defaults never point at it. |
| Compsets says "Last Scan 67-69d ago" while scans are actually fresh | Trust bug | rate_snapshots: 3,665 google rows in the trailing 7 days, latest today 19:13 UTC (prod query). The page reads a stale field. Makes a healthy pipeline look dead. |
| Dashboard threw 500s on an unpopulated materialized view; two cards show "Invalid Date" | Bug | mv_segment_gap_analysis was never populated (refreshed today, 0 rows, no cron). Guard the card; feed or kill the feature post-launch. |
| Sidebar logo reads "RevPAR Pro"; canonical brand is RevParPro | Brand | Hard brand rule (Jun 6). First thing every user sees. |
| Sales Intelligence is IHG-only by design but offered on every flag, all zeros | Scope | Business Edge / Corporate Gold copy shown for Marriott and Hyatt properties where it can never populate. |
| Desk capture form defaults to the wrong hotel and is not locked to the agent's property | Persona | e2e-frontdesk has no assigned property; form defaults to CLLAL. Approval flow should set assigned_properties and the form should lock. |
| PIP on a phone: desktop table crams, KPI cards clip; Mohammed is a field user | Persona | 390px screenshots. Also 3 of 4 active projects read 100+ days overdue: statuses stale or real, needs your call. |
| Deal pipeline cards wrap text mid-word at 1440px | Polish | Kanban columns too narrow; "Courtya rd Houston" line breaks. |
| Leads is the best persona fit in the app; mobile capture genuinely works | Good | 30-second form, points, review queue, scoreboard, phone-clean. The desk loop is launch-grade once property lock lands. |
| Persona | Daily loop | Today | Monday (after sprint) |
|---|---|---|---|
| Owner (Ace, Rahil, Zabir, Alyssa) | How did we do last night, MTD vs LY and budget | Partial | Money band on dashboard for the 5 fed properties, honest placeholders for the rest, feeds rolling in behind it |
| Revenue ops (Aadil, Imagine, Sam) | Rates vs compset, STR index, plan vs actual | Partial | Lands on Compsets, scan freshness truthful, data-first defaults |
| Desk (Matthew, Asma) | Capture lead in 30s, see points | Near | Locked to their hotel, approval wires property |
| Engineer (Mohammed) | PIP items from a job site, on a phone | Partial | Lands on PIP, mobile cards |
| Finance (Junaid, Asad) | P&L, BvA, close | Partial | Lands on Budget, latest closed month, QBO-synced property |
Effort: S = under 2h, M = half day, L = full day. Everything ships through CI, browser-verified, per repo rules. Items marked needs go are decided work waiting on your word.
Model routing (added Fri night): Fable usage is 80%+ with access through Sunday 5am, so execution routes to Sonnet 5 for single-surface UI and query work, and Opus 4.8 for multi-file or correctness-critical builds (migrations, authz, money band, parsers, accounting logic). Fable is rationed to review gates on the highest-risk changes (authz Phase 0, anything touching hotel identity) plus sprint orchestration. Every remaining sprint item below and every item in the depth build order now carries its model. The Friday-night wave (5 trust fixes + role landings) shipped on Fable before this constraint landed; the legacy-mining fleet was stopped and re-launched on Sonnet/Opus.
| Item | Why | Size |
|---|---|---|
| Night-audit feed rollout to all 15 + CLLAL gap fix | Board decision; ~0.5-1 day per email-parseable property, rolling; each feed lights a dashboard row | rolling |
| DOS forward view (rate position, pickup diff, sellout flags) | Persona spec Phase 1; works today on 3-hotel pace data | 2-3 d |
| Plaid bank + CC feeds, deposit reconciliation | Innrly exit gap #1; PMS-vs-deposited calendar (their best module, screenshots archived) | 1-2 wk |
| Daily revenue JE auto-post to QBO | Keeps daily book granularity post-Innrly; plumbing exists; sequence after Warren clears the HOUZN 35.5% QBO-vs-PMS divergence | 2-4 d |
| Portfolio flash email for all managed properties | Extend the HOURP twice-daily pattern as feeds land | 2-3 d |
| Night-audit resilience off the Mac Mini | Single point of failure for HOURP/HOUZN ingestion | 3-5 d |
| Authz Phase 1 (role_permissions table, parity test, real tenant claim) | Before any external customer; Casbin stays trigger-gated | 1 wk |
| STR upload cadence + the ranked STR table returns | Board: table comes back when 10+ hotels have current compset metrics | gated |
| Segment-gap pipeline (or kill the feature) | Its materialized view has never had data | 2-3 d |
| Booking Pace maturity, reviews on owned properties, franchise-fee rec (scope with Junaid) | Innrly-exit remainders | 1 wk+ |