FlowStay HQ v2
The GM's Command Instrument
Precise  ·  Alive  ·  Authoritative
Opera Cloud
3
Design Quality
2
Luxury Feel
No dark mode
Canary
6
Design Quality
5
Luxury Feel
Partial dark
Revinate
5
Design Quality
4
Luxury Feel
No dark mode
FlowStay HQ
9
Design Quality
9
Luxury Feel
First-class dark
The Four Moves
💓
Move 1 — The Pulse
The dashboard breathes before you read it. Agent dots animate at offset intervals. EKG heartbeat in the top nav. System trust before data — the GM knows it's working before reading a single number.
— Tomás Brandt, Goldman Sachs trading floor: "On the trading floor, a quiet screen means the market is closed. This dashboard must never feel closed."
Move 2 — The Actionable Strip
Three AI-generated sentences pinned above everything. NOW / TODAY / WATCH — each with an inline action button. Tells you what to DO, not just what to KNOW. This is what keeps the dashboard open all day.
— James Okafor + Nadia Volkov: "Dashboards with inline actions have 4× the daily active usage of dashboards without them."
📡
Move 3 — The Live Call Arc
A live call card embedded in the activity feed — guest history, real-time sentiment meter, FlowPilot injection text, Watch + Join Call buttons. Visible while the call is happening. No competitor can build this.
— Isabel Reyes, GM 8-year veteran: "I've never seen this anywhere. GMs will film this and send it to other GMs."
Move 4 — Two-Dial Momentum Score
Revenue dial + Guest Health dial, two semicircle arcs. Combined score: 70/100 — "Good day. 1 review risk. Golf drift detected." Visible from across the room. The thing you show the owner on Friday.
— Marcus Chen, Salesforce Einstein Analytics: "Two dials. Instantly tells you: are you making money and are your guests happy."
Design System
☀ Light Mode — Default (8AM coffee)
Canvas#FAFAFA
Surface#FFFFFF
Raised#F4F4F5
Text#18181B
Secondary#52525B
Tertiary#A1A1AA
Alert#EF4444
◑ Dark Mode — Night shift (3AM)
Canvas#0C0C0E
Surface#18181B
Cards#27272A
Text#FAFAFA
Secondary#A1A1AA
Tertiary#52525B
Alert#DC2626
THE ONE COLOR RULE: Red (#EF4444 light / #DC2626 dark) is used ONLY for critical alerts, escalations, and review risk flags. Nothing else gets color. Everything else is monochromatic. This is intentional — when everything is black and white and one element turns red, it is impossible to miss.
Phase Plan
Phase 1
Demo-Ready
Dashboard
Live Monitor
Call Explorer
Call Detail Modal
Triage Agent Page
FlowIntel (AI Sales)
🎯 Close El Conquistador
Phase 2
Operational Core
All 11 agent pages
Guest Profiles (full)
Settings (all 4 tabs)
Notifications drawer
Cmd+K palette
🎯 GM replaces old tools
Phase 3
Intelligence Layer
Full Sentiment System
AI Insights per agent
Escalations analysis
Review Risk flag
Reports (scheduled)
🎯 Product becomes irreplaceable
Phase 4
Scale & Enterprise
Multi-property rollup
Revenue attribution
FlowPilot analytics
Supervisor whisper
Full RBAC
🎯 Keystander Group enterprise deal
Page Map
Core Ops
Dashboard P0
Live Monitor P0
Call Explorer P0
Revenue P1
Intelligence
AI Sales Intel / FlowIntel P0
Agents (11 pages)
Triage P0
Golf P1
Spa P1
Marina P1
Upsells P1
Ticketing P1
Guest Services P1
In-Room Dining P1
Events P2
Table Reservations P2
Valet P2
Guests
Guest Profiles P1
Campaigns P2
Operations
Escalations P1
Reports P2
Settings
Configuration P0
Knowledge Base P1
Integrations P1
Staff & Permissions P2
Modals (shared components)
Call Detail Modal P0
Dashboard Layout
┌──────────────────────────────────────────────────────────────────────────────────────┐ │ TOP NAV: FlowStay HQ [EL CONQUISTADOR ▾] ~~~EKG~~~ [⌘K Search] 🔔 [GM] │ ├──────────────────────────────────────────────────────────────────────────────────────┤ │ AI STRIP: [NOW] ⚠ Room 412 frustrated — Golf handling, FlowPilot engaged [Watch] │ │ [TODAY] Maria Rodriguez arrives 4h — spa+marina confirmed [Briefing] │ │ [WATCH] Close rate ↓11pts since 2PM — Golf drift pattern [Review] │ ├──────────────────────────────────────────────────────────────────────────────────────┤ │ STATUS: ● Triage ● Golf ● Spa ● Marina ● Upsells ○ Dining │ 6 active │ ⚠ 1 │ ├────────────┬────────────────────────────┬───────────────────────────────────────── │ │ SIDEBAR │ LEFT 210px │ CENTER (flex) │ RIGHT 226px │ │ │ │ │ │ │ Dashboard │ [Rev 78] [Health 62] │ ACTIVITY FEED │ DEPARTURES TO WATCH │ │ Live Mon. │ Score: 70/100 │ ┌─LIVE CALL ARC─┐│ Thomas Vega 78% │ │ Call Exp. │ "Good day. 1 review risk" │ │ Golf · Rm 412 ││ Room 407 · 3PM │ │ Revenue │ ───────────────── │ │ James Whitfield││ [Reach Out Now] │ │ │ 247 CALLS TODAY ↑12% │ │ Sentiment: 38% ││ │ │ AI Sales │ $14.2k AI REVENUE │ │ FlowPilot: 85% ││ VIP ARRIVALS │ │ │ Proj EOD $22.8k │ │ ✦ Injected 3:18││ Maria Rodriguez VIP │ │ Triage │ $168 REV PER CALL │ │ [Watch][Join ▶]││ ✓ Spa ✓ Marina □ ✦ │ │ Golf ● │ $192↑ today │ └────────────────┘│ │ │ Spa ● │ 68% CLOSE RATE ████░ │ │ James Whitfield │ │ Marina ● │ │ 14:18 ✓ Golf $240 │ Chen Family │ │ ... │ ▂▃▄▅▆▇█ 7-day spark │ 14:05 ✦ Spa +$320 │ │ │ │ │ 13:52 ✓ Marina │ REVENUE TODAY │ │ Profiles │ │ 13:41 ✓ Cabana │ $14,200 │ │ Campaigns │ │ 13:22 → Transfer │ Golf $5.8k ████░ │ │ │ │ 13:12 ✓ Dining │ Spa $4.2k ███░░ │ │ Settings │ │ │ RPC: $168 · $192↑ │ └────────────┴────────────────────────────┴────────────────────┴───────────────────────┘
Actionable StripNOW / TODAY / WATCH with inline action buttons
Status StripBreathing agent dots, live call count, alert badge
Two-Dial Momentum ScoreRevenue + Guest Health semicircle gauges, 70/100 composite
Activity FeedChronological events with momentum arrows (↑↓)
Live Call Arc CardPulsing border, guest history, sentiment + FlowPilot meters, Join Call
Departure Risk CardsReview probability %, red left border, Reach Out Now CTA
VIP Arrival CardsKnow Before They Arrive summary, prep checklist
Revenue BreakdownPer-agent bars, Revenue Per Call stat
Call Detail Modal
Transcript
Quality
Analysis
FlowPilot
Guest
Revenue
Timeline
WaveSurfer.js — Stereo Dual-Channel
AGENT ↑
GUEST ↓
FlowVue Side Panel Springs in from right edge. Stays open alongside transcript and waveform. Synced to scrubber — scrub to any moment, panel shows FlowStay Go widget state at that timestamp. Tool calls fire at original timestamps. If guest never opened the SMS link: "Guest did not open FlowVue during this call."
Agent Pages — Standard Template
Tab Rail (every agent)
Overview
Calls
[Domain]
AI Insights
FlowDojo
AgentDomain Tab(s)Key Differentiator
TriageRouting Map (Sankey) · Extensions DirectoryEnd-to-end routing accuracy visualization
GolfTee Times Grid (weekly, AI-booked highlighted)Visual tee sheet — first hotel AI to show this
SpaAppointments Calendar · Treatment PerformanceTherapist preference fulfillment rate
MarinaDock Map (interactive slips) · ReservationsAI knows boat size → shows compatible slips
UpsellsProduct Performance · Upsell FunnelPer-product offered → converted funnel
TicketingLive Ticket Queue · Whistle Integration HealthAI-created tickets with resolution tracking
Guest ServicesRequest Kanban · Room Health GridRoom health map: green/amber/red by frequency
In-Room DiningOrder Queue (Kanban: Received → Delivered)Live kitchen Kanban — tablet-optimized
EventsPipeline Calendar · Venue AvailabilityCRM-style pipeline stages on event calendar
Table ReservationsReservations Timeline · Special RequestsSpecial request clearance workflow
ValetLive QueueReal-time staging status for valet stand
Sentiment System — 5 Layers
1
Per-utterance real-time scoring
FlowPilot drift trigger · Live Monitor ring
2
Per-call arc (opening / peak / closing)
Waveform gradient overlay · Call Modal Analysis tab
3
Per-stay trajectory across all calls
Guest Profile sentiment chart · At-risk flag
4
Real-time alerting: Watch / Escalate / Critical
Live Monitor alert strip · "Take Call" button
5
Cross-stay pattern detection
AI Insights per agent · FlowIntel patterns
Review Risk Flag: Negative closing sentiment + departure within 24h → yellow banner on Guest Profile + Departure Risk strip on Dashboard. Staff sees this before the guest checks out.
Tech Stack
LayerTechnology
BackendElixir / Phoenix LiveView
Voice pipelineLiveKit (VAPI removed)
RuntimeBEAM/OTP — GenServer per call
DatabasePostgreSQL + ETS hot path
IconsLucide Icons — 1.5px stroke, currentColor
LayerTechnology
WaveformWaveSurfer.js — stereo dual-channel
ChartsVisx (D3) — Sankey, heatmaps, funnels
Command palettecmdk (Cmd+K)
AnimationsFramer Motion — feed slide-ins, panel spring
ThemeCSS custom properties — light + dark first-class
Open Engineering Questions
#QuestionBlocks
1Does `call` record store visual_session_id when SMS link sent?FlowVue panel sync in replay
2Sentiment scoring: utterance-level Elixir pipeline or post-call LLM judge?Real-time alerting (Layer 1)
3Audio storage and serving method (S3 presigned / LiveKit recording)?Waveform player
4Does Boppy deliver true stereo (agent L channel, guest R channel)?Dual-channel waveform
5ETS maintained per-property or globally?Multi-property isolation
6How is guest stay detected (what ties calls 1-4 to same stay)?Per-stay sentiment trajectory
7Whistle API documentation needed for Ticketing integrationTicketing agent page
FlowStay HQ v2 PRD — v2.0 — 2026-03-28 — Flo (COO) + Eric Sanchez (CEO)