Fourteen Sessions • April 28 → May 4 → May 20 → May 26 → June 2 → June 9 → June 15 → July 6 → July 14 → July 21 → July 27 → August 4 → August 10 → August 18, 2026
176 activities mapped. 124 already built.
Harden the platform. Hand-process the floor plans.
Twelve meetings trace a complete arc: demo → strategy → pricing → financial model → product architecture → legal model → planning UX → contract/invite unification → multiplier matrix spec → points engine spec → booking mechanics → build review. August 4 locked the “capped vacation accrual” model (top up to 200, not flat +50), confirmed host as adjudicator with no hard booking caps in V1, and defined block booking vs. individual booking as fundamentally different platform actions. A design audit and half-day end-to-end walkthrough are the next milestones.
📅 Apr 28 → Jul 14 → Jul 27 → Aug 4, 2026
👥 4-5 participants across sessions
📄 Block booking (admin) ≠ individual booking (end user) — two separate UX surfaces
📌 No hard caps in V1; host adjudicates conflicts (Aug 4)
What was actually decided
Ten Sessions. Eight Layers of Clarity.
Each session has added a distinct layer: business model, financial formula, product architecture, legal model, planning UX, workflow architecture, points engine spec, and now booking mechanics. July 27 resolved the points deduction timing question, refined the replenishment model, and set the calendar grid as the member UI direction.
Contract-First, Host-Directed Model
Terms are negotiated offline. The host then uploads the signed contract + fills operating details in one combined screen — this activates the member's access. Members do not self-sign-up. The host controls every commercial term before the member ever logs in.
Bookable Seats is the Universal Unit
Points are the booking engine mechanic (hidden from planning). Bookable seats are what the host sells and what the member buys. The planning tab speaks dollars and seats only. % capacity share is a calculated output, not a user input. Points drive capacity enforcement behind the scenes.
Tool vs. Marketplace
V1 is clearly a host management tool (hosts bring their own members). V2 adds broker/realtor partnerships. V3 is the full two-sided marketplace. The team aligned on this roadmap — but the entry criteria for moving from V1 to V2 (how many hosts, what traction threshold) have never been defined.
The arc so far
Ten Sessions. Booking Mechanics Locked.
The host workflow is built. The points engine is specced. The booking mechanics are resolved. What remains is wiring it all together on the member side.
✓ Resolved (Jul 6): The Complete Host Workflow Is Now Designed
What was flagged as the critical gap in April 28 — a mechanism for the host to invite, configure, price, and activate a member — now has a complete designed flow:
property → listing (with head lease terms) → planning simulation → contract upload + member invite (one combined screen) → member onboarding → booking. The flow separates what was previously two duplicate screens into one contract-first approach. The member's first screen mirrors the host's last screen. Points and booking enforcement still need to be wired in, but the workflow architecture is locked.
14
Sessions held • Apr 28 → Aug 18
124 / 176
Activities built vs. mapped across four personas (Aug 18)
$/sq ft
Pricing metric confirmed • ~40% share of value recovered (Aug 10)
5 weeks
Workflows and hardening first • floor-plan automation deferred (Aug 18)
Reading guide
How to use this document
Start with Forward Path
The Forward Path tab has the full build state reconciled against the Aug 18 Activity List, all decided-but-unbuilt items, strategic risks, and the V1→V3 moat ladder. Updated through Aug 18.
Start with Jul 6, then Forward Path
Jul 6 redesigned the contract/invite flow, moved host type to listing level, and formalised member user tiers. This is the most current spec. Forward Path has the full sequenced build list.
Start with May 26, then Jun 9
May 26 has the financial model and points formula. Jun 9 has the license vs. sublease legal clarity and why members cannot be subtenants. These two sessions form the commercial and legal foundation.
Session 01 • April 28, 2026
The Demo Session:
First “real website” moment.
Matt demos a complete end-to-end flow for the first time. The product works. The conversation then surfaces the business model gaps that the product hasn't yet accounted for.
🌟 First working auth + booking flow
⚠ Credit system confusion surfaced
📌 Host-to-tenant pricing: unresolved
What was demonstrated
The Working MVP
End-to-end flow now functional. These things are built and working.
-
📒
Host Account Creation
AWS Cognito auth, property registration with MapBox-validated addresses (enforced registered addresses only), amenity capture, floor plan upload.
-
📷
AI Floor Plan Detection
Detects desks and rooms from uploaded PDF floor plans. Accuracy needs tuning (conference rooms missed frequently). Manual correction UI exists.
-
📍
Listing Management
Multi-listing per property, suite/floor naming, active/draft states, amenity tagging, rate-setting. Host dashboard shows all properties.
-
📅
Member Booking Flow
Browse listings, date selection unlocks interactive floor plan, desk/room selection with credit cost preview, multi-day booking with conflict detection (orange = booked).
-
👥
Team Management (Partial)
Company admin invites member guests, assigns property access. Credit pre-loading not yet wired. Guest email invitation flow incomplete (requires real email).
-
🔒
Access Control
Members only see properties they've been granted access to. Edge login protection for pre-launch. SOC 2 skeleton documentation created.
Core debate
The Airline Analogy Breakthrough
Steve's analogy was the most clarifying moment of the session — and the team didn't fully internalize it.
✈ The Key Insight: Credits are seats, not prices
An airline has 100 seats. They sell 120 tickets (overselling). Passengers pay wildly different prices for the same seat. But the cost in "booking currency" (miles, ticket tier) is the same for everyone on that flight.
For HQ Lite: Credits = seat availability (how hard is it to book Monday vs Wednesday). Dollar value per credit = host's bilateral contract with each tenant. These are architecturally independent. The product must not conflate them.
Load Balancing
Host sets credit cost per day and space type (e.g., Mon=8, Tue/Wed/Thu=10, Fri=8; desk=1, huddle=4, conference=8). This controls utilization. No dollar value attached here. This is what the product should manage.
Bilateral Contract
Host negotiates $/credit separately with each tenant. Tenant A might pay $10/credit, Tenant B might pay $6/credit for the same space. This happens outside the booking engine but must be stored in the host's dashboard.
Strategic tensions surfaced
3 Unresolved Conflicts
These were debated but not resolved. Each one has a downstream product implication.
Fully digital signup
Member admin self-serves, sees listing, books. No host involvement needed in onboarding.
VS
Paper contract first, then system access
Host and tenant agree terms offline, then host provisions access in the software. System is a management tool, not a marketplace.
Per-seat/day booking rate (flat, visible)
Like a hotel: you see a price, you book. Simple, scalable.
VS
Negotiated rate per tenant (variable, private)
Large tenants get enterprise discounts. Can't show price on a listing page. Requires host-controlled configuration per tenant.
Separate internal (Envoy-style) + external (HQ Lite)
Company uses HR tool for their own floors, HQ Lite only for sublease inventory.
VS
All space on HQ Lite, internal rate = $0
Host uses HQ Lite for 100% of floor, sets their own internal allocation at zero credit cost. One system, no carve-outs.
⚠ Non-obvious implication: Tension 1 is actually a product architecture decision
If you choose "paper contract first," the product needs a
host-initiated tenant onboarding flow (invite by email, configure access/credits/rate per tenant). If you choose "fully digital," you need public pricing, self-serve checkout, and a conflict resolution model. You cannot build both simultaneously. The session leaned toward "paper contract + host-configured access" but didn't make it explicit.
What was flagged as next steps
Commitments from Apr 28
Owner: Brandon Monetization strategy
Lead monetization model design
Think through subscription terms, billing model (square footage vs flat), audit approach, and land-and-expand dynamics.
Owner: Tony Journey mapping
User journey map for all personas
Map every track, identify terminology gaps, expose where the current build diverges from intended flow.
Unassigned Critical gap
Host-to-tenant pricing integration
Current member admin flow has no mechanism for the host to set per-tenant rates, credit allocations, or contract terms. This was flagged but not assigned.
Owner: Matt Test scenario
Multi-city Citibank test case
Set up Citibank as a multi-city host with test properties to expose edge cases in the multi-property, multi-tenant data model.
Bottom line
Product is further along than expected. Business model is 6 weeks behind.
The demo validated the booking engine and auth flow. But the session revealed that the team has been building the tenant experience (the less commercially important side) while the host management experience — which is the customer who actually pays — is incomplete. The credit system is conceptually solid but architecturally unimplemented.
Session 02 • May 4, 2026
The Strategy Session:
“Office isn’t dead. It’s overbuilt.”
The team steps back from building and confronts the harder question: what kind of company is HQ Lite? A tool, a platform, or a marketplace? The session surfaces the versioned rollout strategy but leaves the sequencing of build priorities open.
🌟 Framing breakthrough: inefficiency, not death
👥 6 personas fully mapped
📌 Marketplace vs. tool tension crystallized
The strategic frame
The Problem Redefined
Tony's framing via Claude changed the conversation tone for this session.
“Help hosts rent out empty space”
Reactive. Assumes the market already knows it has a problem. Makes HQ Lite sound like a listing tool. Competes directly with WeWork, Regus, CoStar.
“Office isn’t dead. It’s overbuilt.”
Proactive. Reframes the host's pain as hidden waste. 55% utilization is the problem. HQ Lite is the efficiency + revenue layer — not a listing service. Creates urgency and financial justification.
💡 Why this frame matters for stakeholder alignment
"Office isn't dead, it's overbuilt" is the pitch. It makes the ROI case in five words. Every feature you build should map back to this: does it help a host extract more revenue from existing square footage, or does it help a tenant pay less for the same utility? If a feature can't answer yes to one of those questions, it's probably scope creep.
Persona architecture
6 Personas, Two Sides
Session aligned on a full persona map. The hierarchy matters because it dictates the permission model and the build sequence.
| Role | Responsibility | Priority |
| Host |
Corporate parent (e.g. Brookfield). Owns the software contract with HQ Lite. |
P0 |
| Portfolio Manager |
Manages all properties in a city or region. Not yet in product. |
P1 |
| Site Manager |
Day-to-day operations at one address. Access but not billing control. |
P1 |
| Role | Responsibility | Priority |
| Account Admin |
Sets up company account, invites users, manages credit pool and access. |
P0 |
| Team Lead |
Books space for a team. Has delegated credit budget. Cannot edit system config. |
P1 |
| Team Member |
Books individual desk/space. No admin capabilities. |
P1 |
| Guest Visitor |
Temporary access for external consultants. Not a permanent member. |
P2 |
⚠ Non-obvious implication: The tenant side is HQ Lite's daily user but generates $0 revenue
Hosts are the paying customer but interact with HQ Lite infrequently (setup, occasional changes). Tenants' Account Admins, Team Leads, and Members are the daily users but pay nothing directly. This creates two important risks: (1) hosts undervalue the software because they don't use it daily; (2) tenants have no financial incentive to advocate for the product internally. Future monetization of the tenant side (analytics, premium features) is a hedge against this.
Revenue model clarification
The Sensitivity Analysis
Brandon's revenue calculator made the financial case explicit for the first time.
| Scenario |
Sq Ft |
Rate/Sq Ft |
Oversell % |
Annual Revenue |
vs. Baseline |
| Baseline (no HQ Lite) |
25,000 |
$50 |
100% |
$1,250,000 |
— |
| HQ Lite + overselling only |
25,000 |
$50 |
120% |
$1,500,000 |
+$250k (+20%) |
| HQ Lite + oversell + rate lift |
25,000 |
$60 |
120% |
$1,800,000 |
+$550k (+44%) |
| Break-even occupancy |
25,000 |
$50 |
— |
70% occupancy matches current revenue |
📈 The pitch in numbers
A host needs only
70% occupancy to match their current revenue when using HQ Lite's overselling model. Everything above 70% is incremental margin with no additional cost. At 85% occupancy + a 20% rate premium, they're up 44%. This is the financial argument that gets a Brookfield to sign a pilot.
What was built on the whiteboard
Version Strategy: 3 Stages
The team converged on a phased approach, but didn't assign timelines or entry criteria.
Tool for Sophisticated Hosts
Target hosts like Brookfield who already have tenants. HQ Lite is a management and optimization layer. No need to solve chicken-and-egg. Host finds their own tenants, brings them into the platform.
Build this first
Realtor / Broker Partnerships
Partner with commercial real estate brokers to source tenants for hosts who can't self-acquire. HQ Lite becomes the fulfillment layer behind broker relationships. Avoids building a full marketplace.
After V1 traction
Full Two-Sided Marketplace
National tenant acquisition, vendor program, dynamic matching, analytics products. The moat. This is where the platform becomes defensible and HQ Lite shifts from a software tool to a network effect business.
When V2 reaches density
Host management requirements surfaced
What Needs to Be Built for V1
These requirements emerged explicitly in the May 4 session and are not currently in the product.
-
📋
Tenant profile + lease abstracts
Contact info, sq footage, rental rate, lease start/end, renewal options, emergency contacts. This is the "contract administration" feature the host dashboard needs.
P0 for V1
-
⏰
Critical dates + alerts
Renewal notice deadlines (typically 90 days), rent increase notifications, move-out dates. Hosts need automated reminders, not manual tracking.
P0 for V1
-
📈
Utilization analytics for hosts
Tenant-level usage table: who's using how much, vs. their allocation. Unused credits, overuse warnings. This is what validates the overselling model in real time.
P1
-
📝
Oversell throttle controls
HQ Lite must enforce a max oversell cap (e.g. 150% of sq footage). Hosts cannot accidentally commit more space than the system can support. This is a platform integrity feature.
P0 for V1
-
💲
Credit allocation engine
Sq footage → credit pool allocation (e.g. 20k sq ft = 100 credits). Day-of-week variable pricing. Seat-type tiers. Total credits must be capped at oversell limit. Host configures, system enforces.
P0 for V1
Bottom line
The strategy is clear. The sequencing is not.
The team aligned on "build the engine first, marketplace later" and defined a compelling revenue story. But the session ended without an explicit answer to Tony's core question: where's the friction — is it managing existing tenants, or finding new ones? The correct answer for V1 is "managing existing tenants" — and that determines exactly what to build next. The host management dashboard and tenant onboarding flow are the next critical path items.
Session 03 • May 20, 2026
The Pricing Session:
Host invite is live. Now define the math.
Matt demos the host-initiated invite flow for the first time — it works. The session then pivots to the most detailed pricing discussion yet: what does the host actually input, how does it become credits, and what does the tenant actually see? Key consensus: start with the bare-bones model first.
🌟 Host invite flow shipped
📈 Credit = % capacity share (not sq footage)
📌 Steve's Excel model = next unlock
What shipped
The Host Invite Flow Is Live
The critical missing flow identified in the Apr 28 analysis now exists. Here's what's working.
-
✓
Host can create a listing and send a member invite
Invite goes out via email. Copy-link fallback also works. Matt demo'd it live during the meeting (pushed changes an hour before the call).
-
✓
Member signup flow operational
Invited member receives link, creates account, enters the system. The basic one-sided onboarding loop is closed.
-
⚠
Required invite fields still undefined
The invite form has fields (sq footage, rental rate, start/end date) but no consensus on which are mandatory. This was the central open question Matt raised at the start of the session.
-
⚠
Credit allocation not wired to invite yet
The invite creates the member account and grants access, but the credit pool assignment (how many credits this tenant gets per month) isn't calculated or set during the invite flow yet.
Biggest conceptual shift
Credits Are About Capacity, Not Square Footage
This is the most architecturally significant clarification across all three sessions.
💡 The reframe that unblocks the build
Previous sessions tied credits loosely to square footage. May 20 resolved this: credits are derived from the physical count of bookable assets on the floor plan (desks, meeting rooms, conference rooms), not from sq footage. Square footage is a host accounting metric. Credits are a booking capacity metric. These are connected but not the same thing.
Floor credit pool formula
2 conference rooms × 8 credits = 16
5 meeting rooms × 4 credits = 20
30 desks × 1 credit = 30
Daily floor total = 66 credits
+ 20% oversell cap → 80 credits available/day
% share → daily credit budget
4 tenants at 25% each
25% of 80 = 20 credits/day/tenant
20 × 5 days = 100 credits/week
Tenant books within their budget.
Floor-level cap enforced automatically.
⚠ The key disconnect that still needs resolution
Credits derived from floor plan assets (desks, rooms) do
not numerically equal sq footage. A host thinking "I have 10,000 sq ft, so I have 10,000 credits worth of space" will set up the system incorrectly. The invite form must make clear the distinction:
sq footage = your billing metric; credits = your booking capacity metric. The input the host provides for tenant setup should be
% capacity share, not sq footage.
Pricing model architecture
The Two-Track Model
The session landed on a clean conceptual split that directly maps to what needs to be built.
How money flows
Host inputs: monthly floor cost (e.g. $12,000/month).
System shows: 1.2x revenue potential ($14,400/month).
$2,400 = 100% pure additional margin. Host assigns $/credit per tenant independently. Tenant pays a monthly fee for their % share. Credits and dollars are decoupled.
How space gets consumed
Tenant has a credit pool (derived from % share).
Tenant books desks/rooms using credits. Credit cost per asset type and day determines what they can book.
Tenant sees: seats available, credit balance, how many days their team can come in.
| Scenario |
Monthly Cost |
1.2x Oversell |
Additional Margin |
Margin % Increase |
| Base (no oversell) |
$12,000 |
$12,000 |
$0 |
— |
| With HQ Lite oversell |
$12,000 |
$14,400 |
+$2,400 |
Pure margin |
| Compounding effect |
If existing margin was 20% ($2,400), HQ Lite doubles it to 40% |
+100% margin |
| Building valuation lift |
Income-method valuation: 20% revenue increase = ~20% property value increase |
Strategic asset |
The simplicity mandate
Consensus: Build the Bare Bones Model First
The most operationally important decision from this session. It directly defines what Matt builds next.
🎯 The agreed baseline (V1 credit model)
All weekdays have equal credit cost. A seat is a seat — no differentiation between desks, meeting rooms, and conference rooms in the initial implementation. One credit per seat per day. Day-of-week weighting and seat-type tiers are explicitly V1+ features, not V1.
Simple model
All days equal. Seat = seat. Host inputs: monthly cost + number of seats. System outputs: credit pool, 1.2x cap, tenant % allocations. Member sees: credit balance, available seats.
Day weighting
Wednesday costs more credits than Monday. Host configures (or uses system defaults). Addresses the "everyone books Wednesday" problem. Requires credit weighting table per listing.
Seat-type tiers
Conference rooms cost more than desks. Dynamic pricing, analytics dashboard, tiered subscription unlocking these variables. Potential upsell tier for advanced hosts.
New competitive context
WeWork Benchmark
Team reviewed WeWork's model as a competitive baseline.
✗
$54/day per seat
Rigid per-seat daily rate. No flexibility for team blocks or variable use.
✗
25% oversell cap, premium beyond
WeWork charges extra if you go over the base allocation. HQ Lite builds oversell into the base model.
✗
Fixed allocation regardless of usage
Pay for 20 desks whether you use 2 or 20. HQ Lite's credits allow consumption-based flexibility.
✓
Flexibility at lower cost per actual usage
Team of 10 coming in 2 days/week pays for what they use, not 10 full desks for the month.
✓
Oversell built into the base model
1.2x capacity is the default. Host captures the margin without separate premium charges.
✓
Host controls the economics
Hosts set their own rates per tenant. Not a WeWork-controlled fixed price list.
Tiered product monetization (new idea)
A SaaS Tier Model Emerged
Steve suggested locking advanced features behind higher subscription tiers — a meaningful product strategy shift.
| Tier | What's included | Locked features |
| Base |
All metrics hard-coded. Day weighting fixed (e.g. Wednesday = 1.6x). Seat = seat. Core booking works. |
Cannot change day weighting or seat-type tiers. |
| Mid |
Configurable day-of-week weighting. Seat-type differentiation. Custom credit pricing per tenant. |
Analytics dashboard locked. |
| Premium |
Full analytics dashboard. Revenue projections. Utilization reports. Credit usage history. |
Nothing. Full platform access. |
⚠ Critical challenge: don't let tiering delay V1
The tier model is a sound monetization strategy but it introduces a real risk: the team starts designing around tier gates before the base model even works. The tiering architecture should be
planned now but implemented after V1 validation. Build the simple model first. Decide what gets locked behind a paywall in V1+.
What was committed
May 20 Action Items
Owner: Steve Next unlock
Build Excel pricing model (3-4 tabs)
Tab 1: Host cost → credit pool (simple, all-days-equal, seat=seat).
Tab 2: Host credit allocation → member % share → credits/day.
Tab 3: Dollar-to-credit conversion (commercial track).
Tab 4 (optional): Sophistication layer with day weighting + seat tiers.
Owner: Tony + Matt Product
Define minimum required fields for member invite form
Based on May 20 discussion: required = % capacity share (not sq footage), monthly fee (optional at invite time, confirm with team). Sq footage, rental rate, start/end date are optional reference fields.
Owner: All Next meeting
Tuesday — validate model assumptions from Steve's Excel
Use Steve's model to walk a real scenario end-to-end. If the math holds, hand it to Matt to wire up the credit allocation engine.
Bottom line
The invite works. The credit math is almost there. One Excel model unlocks the next build sprint.
The host invite flow shipping is a major milestone. The session resolved the sq footage / credits confusion (credits = capacity, not area). The consensus to start with a bare-bones model (all days equal, seat=seat) is exactly the right call — it unblocks development without waiting for full business model agreement. Steve's Excel model is the single deliverable that, when validated, gives Matt the spec to wire up the credit allocation engine. This is the critical path item for the next sprint.
Session 04 • May 26, 2026
The Numbers Session:
The financial model is real now.
Steve presents his Excel model with actual figures for the first time. The points formula crystallizes. The rolling 4-week window is agreed. Three dashboards are scoped. And a specific listing field change is required immediately: remove "rate per day," add gross rent + sq footage + term.
📈 First concrete financial model with real numbers
🌞 Points formula resolved (3,240 pts / 4-week period)
📌 Immediate code change: listing setup fields
The financial model — finally in numbers
Steve's Excel: The Full Stack
This is the most complete articulation of the HQ Lite value proposition to date. These are the numbers that go in the host pitch deck.
The "total nut"
Head lease: $1,000,000/yr
Janitorial: $50,000/yr (+$2.50/sq ft)
Total nut: $1,050,000/yr ($52.50/sq ft)
Space: 20,000 sq ft
Host inputs: gross rent + sq footage + term.
Everything else is calculated.
The oversell layer
Physical seats: 135
Multiplier: 1.2×
Bookable seats: 162
Seat types: benches, cubes, offices,
conf. rooms, huddle rooms, phone booths
All treated as equal seats in V1 baseline.
| Member |
% Share |
Seats |
Equiv. Sq Ft |
Annual Fee |
Rate/sq ft |
| Member 1 |
20% |
32 |
4,800 |
$258,000 |
$53.75 |
| Member 2 |
50% |
81 |
12,000 |
~$645,000 |
$53.75 |
| Member 3 |
15% |
24 |
3,600 |
~$193,500 |
$53.75 |
| Total recovery |
85% |
— |
— |
~$1,290,000 |
— |
| Less head lease |
— |
— |
— |
($1,050,000) |
— |
| Net margin |
— |
— |
— |
+$240,000 (23%) |
— |
📈 The landlord pitch in two lines
If the host already has 20% margin baked into their $52.50/sq ft pricing, HQ Lite doubles that margin. And because income-method building valuations run at 5–6×, adding $240K in annual income adds $1.2M–$1.44M to the building's appraised value. That's the conversation that gets a CFO's attention.
⚠ Non-obvious: the subtenant value prop is equally strong
A subtenant host (not the head landlord, but a tenant trying to sublease) can discount their market rate below what they're paying, take a $100K loss instead of a $300–400K loss, and still come out ahead. HQ Lite's pitch isn't just "earn more" — it's also "lose less." That second value prop is underused and unlocks a different host segment entirely.
Points system — now defined
The Complete Formula
This is the spec Matt needs to wire up the credit/points engine. It's now concrete enough to build from.
1:1 per seat per day — flat
162 bookable seats × 5 days = 810 pts/wk
810 × 4 weeks = 3,240 total pts / period
Member at 20% = 648 pts
Member at 50% = 1,620 pts
Member at 15% = 486 pts
Points are equal regardless of day earned.
Weighting only applies when spending.
Variable cost at time of booking
V1 baseline: 1 pt per seat, every day equal
V1+ (day weighting):
Mon: 0.8 pts • Wed: 1.4 pts
Tue/Thu/Fri: ~1.0 pts
V1+ (overuse surge):
>10% over allocation → exponential cost
"Reverse volume discount" model.
The rolling window model
4-Week Rolling Balance — Not Calendar Month
📅 How it works (Workday vacation analogy)
Every day: lose the oldest day's allocation, gain a new day's allocation. The pool stays constant. You can never accumulate beyond 4 weeks × daily allocation — use it or lose it.
Example (Member 2, 50% share): 81 bookable seats/day → 81 pts/day. Maximum balance = 81 × 28 = 2,268 pts. Never more. Unspent points on day 29 expire as day 1 points load in.
Prevents hoarding
Members can't stockpile points for a single big event. Forces distributed usage. Protects other members from brownout days.
80% daily cap
No member (or combination of members) can book more than 80% of the total space on any single day. Always leaves room for unplanned drop-ins from other tenants.
Reputation scoring
Track book-and-cancel patterns. Chronic over-reservers accumulate a score that increases their per-booking cost over time. Self-regulating system, not policed.
Immediate product change required
Listing Setup Fields: What Changes Now
This came directly out of walking the product during the meeting. These are concrete changes Matt can make in the next session.
-
✗
Rate per day
Irrelevant at listing creation time. Pricing happens at the member management layer, not the listing layer. Remove this field entirely.
-
✓
Total gross rent (annual $)
Host's total cost baseline. Auto-calculates cost/sq ft = gross rent ÷ sq footage.
-
✓
Square footage
Drives capacity calculation downstream. Already partly captured but must be required.
-
✓
Lease term (date range or months)
Sets the maximum period the space can be licensed to members. Can't license beyond legal occupancy right.
Host setup flow — agreed sequence
The Onboarding Stack
The session walked through the product and confirmed this order. Each step gates the next.
-
①
Property: address, sq footage, gross rent, lease term
The "product label" — what the host has available to sell. Establishes cost basis and date boundaries.
Mostly built
-
②
Listing: floor plan upload → seat count detected
Floor plan determines unit count (desks, rooms). This is the source of truth for total points capacity. AI detection + manual correction already exists.
Built (tuning needed)
-
③
Capacity: set multiplier (default 1.2×) → see bookable seat count + total points pool
Host sees: 135 physical seats → 162 bookable → 3,240 pts / 4-week period. Can scenario-plan with different multipliers. System enforces max cap.
Not built
-
④
Members: invite + assign % share → system calculates pts allocation per member
Can do real invites (existing flow) or scenario-plan with unnamed slots (e.g., 4 members at 25/25/25/25%). Points breakdown shown immediately.
Invite built • % share + pts calc missing
-
⑤
Dashboard: host sees occupancy, member utilization, points balance per member
Loops back to the host. Shows real-time: total bookable seats, seats booked today, points used vs. available per member. Revenue projection optional (V1+).
Not built
Three dashboards scoped
What Each Party Sees
| Dashboard | Who sees it | Key data | Priority |
| Global / Floor View |
All members + host |
Real-time seat availability for today. How many seats are booked vs. open. No individual member data visible to other members. |
P0 — needed for booking UX |
| Member Dashboard |
Individual member only |
Points balance (rolling 4-week), points used this week, booking history, days remaining before points expire, projected capacity calculator. |
P0 — core member value |
| Host Dashboard |
Host only |
All members' utilization, total occupancy %, revenue recovery vs. cost, points distribution vs. allocation, critical dates (lease renewals). |
P1 — needed before first pilot |
Bottom line
The model is real. The formula is buildable. Three things unblock the next sprint.
Steve's Excel model resolved the financial ambiguity that's persisted since session 1. The points formula is now a spec: 162 bookable seats × 5 days × 4 weeks = 3,240 pts, distributed by % share, earned 1:1, spent at variable rates. The rolling 4-week window and 80% daily cap are agreed rules, not just ideas.
Three things unblock the next sprint:
(1) Remove "rate per day" from listing setup, add gross rent + sq footage + term.
(2) Wire capacity multiplier UI: seat count × 1.2 → show bookable seats + total points pool.
(3) Wire % share field in member invite → calculate and store points allocation per member.
Everything else (day weighting, surge pricing, reputation scoring, analytics dashboards) is explicitly post-V1.
Session 14 • August 18, 2026
176 Activities. Four Personas.
The Map Became a Gap Register.
Tony walked the group through the HQ Lite Activity List: every persona, every workflow, tagged built or not built. It was commissioned as a test script. It turned into a requirements-elicitation instrument that surfaced roughly ten net-new requirements in ninety minutes. Two things flipped after Matt joined late: the Super Admin column was obsoleted live when he demoed a panel nobody knew existed, and floor-plan ingestion was reclassified from the critical path to a walled-off subsystem to be done by hand for the first fifty customers. The UI walkthrough was deferred a week so Steve could review.
📅 August 18, 2026
👥 Tony, Rob, Brandon, Matt (joined late) — Steve travelling
🎯 176 activities across 4 personas • 124 built, 52 tagged as gaps
📌 Floor-plan automation deprioritised for five weeks — white-glove instead
The artifact
Four Columns. Thirty Sections. One Hundred Seventy-Six Activities.
HQ-Lite-Activity-List-v1.0, dated 18 Aug 2026. Untagged items are built and testable today; tagged items carry an explicit gap label.
11/27
Super Admin
7 sections • thinnest column
52/70
Host
10 sections • largest surface
28/42
Member Admin
7 sections
33/37
Member / Guest
6 sections • most complete
📋 How the Map Works
Four persona columns: HQ Lite (Super Admin) • Host • Member Admin • Member (Guest). Tony renamed column A live: “We could call it super admin. We could call it platform admin. Actually, maybe it’s better to just say super admin.” Confirmed internal-only.
Two-level numbering, restarting per column — numbered sections, then numbered activities inside each. “I did break it down a little bit differently because now it’s kind of got like an area and then sub areas within it.”
Colour coding: black and untagged = built and testable today. Orange = carries a bracket tag: [NOT BUILT] [PARTIAL] [API ONLY] [NO UI] [UI STUB] [ORPHANED] [BLOCKED BY DESIGN] [CLI ONLY] [AUTOMATIC] [N/A].
Sheet 2 — E2E Journeys: seven journeys, 43 steps, each with an expected-blocker column. J1 host cold start to live listing • J2 host plans and sells space • J3 member admin onboards a team • J4 guest books, changes plan, cancels • J5 company block and claim • J6 limits and edge cases • J7 wind down.
Where it goes: Tony — “Each one of these becomes a much more expansive test case that now gets put into our repository that all the testing will be done with.” One row, one test case.
The mid-meeting reversal
Matt Had Already Built the Super Admin Panel.
🔄 The Column Was Scored Wrong (Aug 18)
Tony opened the Super Admin section saying “We don’t have anything of that sort or nature built, because right now we’re just kind of logging in as the users and executing everything that way.” Two hundred and fifty lines later, Matt demoed a working panel.
Why he built it: “I built out this whole super admin panel. And a UI for it, because I got sick of… it created a bunch of data.” Tony’s test scripts were generating junk records with no way to clean them up.
What it already does: real Gmail addresses with real passwords and working password reset • TOTP two-factor with QR registration • 30-day soft delete with a ~90-day hard purge • audit log showing actor and event kind (“I can see like a booking was created. This is the person who did it and it was this kind”) • the beginnings of a company list access view.
Consequence: the map’s Platform Admin column needs substantial re-scoring, and soft delete turns out to exist for users but not for properties and listings — which is exactly what the meeting independently decided to change.
Matt on where host management goes: “I have a place to shoehorn that in sort of right here. Let’s manage hosts right here.”
The floor plan reckoning
“The Most Precarious Part of the Entire Workflow.”
Tony opened calling floor-plan upload the most integral step. Matt closed by calling it smoke and mirrors, and won the argument for deprioritising it.
🛑 Floor-Plan Automation Deprioritised for Five Weeks (Aug 18)
Matt’s admission: “The honest answer is that part of the entire workflow is the most precarious… It’s probably the only and the most smoke and mirrors, right? And I think once we got that working with our two only real sample floor plans, we were like, cool, move on. There’s a business to build.”
The data problem: two real sample floor plans total. About a dozen looked at overall. A synthetic-training experiment failed outright — “I had AI build 10 different floor plans and then I tried to train a model to do that and it still just was 0% success. It’s like, okay, I’m not going to waste time on this right now.”
On Steve’s vision (in absentia): “Steve’s vision of this is eventually this is totally autonomous. There’s zero involvement… We are so far from that. We just don’t have the data sets to make that work. We just straight up don’t.”
The prioritisation verdict: “The bigger priority now is back to the activities, the workflows. I think you have time to circle back later on the upload. If we spent the next five weeks just working on the upload, I would say we’re spending our time on the wrong thing.”
The white-glove offer: “Give me your first 20 users and I don’t care, I will upload them by hand… I want to do it because I would use that data as how do I feed some model that can do it automatically eventually.” Manual processing is a data-collection strategy, not just a stopgap. Ceiling: “that would probably work, white-glove approach, for less than 50 users. And if we ever got to that point, holy shit, it would be a success.” Turnaround on a real client plan: about a day.
PDF for V1. DWG deferred to V2.
Tony: “Usually the DWG files, because they’re a dynamic file, you can actually extract the exact blueprint with dimensions and everything within it… in the perfect world, DWG would be a preference that we push on.”
But higher build cost, so deferred. Trigger for revisiting: “if we get comments or we have troubles with users onboarding with whatever files they’re bringing us.” Alternative floated: a smarter PDF handler that up-resolutions poor scans.
Never hit the bottleneck live
Tony: “It’s not walk into a sales pitch and say, we’re going to set you up on account right now, because we’ll get into that step and we’ll immediately hit that bottleneck and be like, oh, by the way, we can’t ingest yours right here.”
New sequence: demo with an existing sample plan → client signs → client provides their floor plan during onboarding → Matt and Tony process it manually before the next meeting. Brandon on why this matters: the floor plan is “basically the first major thing they do. So we want it to be super simple, easy for them, and they keep clicking so they don’t call us.”
Seats versus points
“They’re Going to Spin.” The UI Must Convert Both Ways.
📊 Bidirectional Seats ↔ Points Conversion — Required Everywhere (Aug 18)
Rob’s argument: “If I’m a member admin and you tell me I have — are you going to tell me I have seats or are you going to tell me I have points? If you just tell me I have points, mentally you have to help me bridge that into what my job is, which is trying to get people in and sitting in seats.”
The consequence if it isn’t built: “The person that’s the member admin doesn’t care about points. They’re trying to get the right people in seats. And if they don’t have the clear visibility link between the points and the seats, they’re going to spin.”
Brandon’s spec: “Here’s your input of number of seats. The output of that is how many points you have left. And then we convert that and say, hey, here’s how many seats you have left based on this matrix.” Concretely: 20 seats Wednesday, 30 seats Friday — visible as a live readout.
Tony conceded the framing: points are “just an arbitrary thing for us to kind of give them access.” An internal abstraction, not a user-facing currency.
Requirement changed from “display the balance” to “display a live bidirectional conversion at every decision point.”
🧩 The Structural Problem the Map Can’t Hold
Rob:
“The calculations of the bookings are not an activity of a person. So it’s hard to fit it in the structure. But in addition to this structure, there’s got to be a section where we vet out the things we need to consider in the calculation of the points… it’s still a standalone section that’s got to tie in and pull in from this afterwards.”Agreed fix (partial): a green-highlight overlay marking every activity that affects the points calculation —
“if we highlighted each cell within green that should affect the point calculation, then at least it’s clear what we want.” The standalone points-logic section was discussed but
not created. Still open.
New requirements surfaced
Ten Things Nobody Had on Any List.
Replacing today’s hard delete
Rob: “Maybe they can call it delete, but it’s kind of like in your email when you delete it, it’s still sitting in the trash bucket… And maybe they don’t have access to the trash bucket.”
Tony conceded: “I don’t think it works that way right now. I think it’s a hard delete right now.” Driver is analytics and audit — Rob: “we’re always going to want to know the history of usage… so if it just disappears…” Tony: “Not bueno for us.”
A new dependency
If a host deletes a property or listing, affected members must be told their bookings are cancelled. Tony: “That means we better build in the thing that actually sends out the notifications to the members.”
The notification subsystem does not exist. Cascade semantics are also undefined: “right now the minimum is, you can just delete stuff and it’s going to just kill everything else.”
A hard cap that throttles
Brandon: “What’s our provisioning system?” If a host pays for 100,000 sq ft at roughly $1/sq ft/year, access must be throttled to match.
Tony’s model: one blanket number on the account, not per-property accounting. “You’ve got a million square feet. And once you hit that cap, you’re going to be blocked from creating any more listings.” Placement in the map deliberately left open.
CSV upload, 8B, 9B
Added live and numbered on the fly to avoid renumbering the list: bulk CSV member upload, 8B bulk quota management, 9B bulk user removal.
Tony on why: one-by-one entry breaks “than just having to redo 50 users or 100 users.” Implementation options: checkbox multi-select with search, or the same CSV used to delete by email.
Beyond active and terminated
Reached by argument. Brandon wanted the payment-status field cut because HQ Lite is not a billing system. Rob reframed it: the real need is enforcement — hosts need “an ability to prevent a member from booking rooms and all that stuff for whatever reason.”
Tony’s own case: “they’re overbooking some crazy amount that our system isn’t actually capturing. No, I want to disable them until we can sort that stuff out.” Field stays; a pause state is added.
Not a cancellation
Today the only path is cancel and rebook, which forfeits points. Agreed: changing a booking well in advance must not be penalised. Rob’s case: booked three weeks out, changed at two weeks out.
Dates as well as seats should be changeable. Workflow not designed yet.
✅ Also Decided
Hosts are invited, not self-serve. Existing self-signup is now considered wrong. Tony: “We’re middlemanning it right now… by manually creating the accounts and then operating those accounts.”
Cloud-only on AWS. On-prem and per-host isolated instances explicitly rejected — not on cost, but on the cross-host member case: “I’m in this location on Mondays and I go to this location on Thursdays.” One system manages it. Escape hatch reserved for a mega-customer with a hard security requirement.
Contract start date is driven by the signed agreement date, not invite acceptance. Reworded live.
Member Groups are V2 — but the need (bulk reserve for a recurring team) was decoupled from the mechanism. Rob: “maybe it’s not member group, just some other flag.” Robin and Envoy cited as prior art.
Per-guest points accrual rejected as too complex — a junior analyst coming two days a week needs a fractional, day-dependent allocation like 3.2 or 3.8 points. Member Admin allocates instead; the guest just books within an allowance.
Cancelled bookings stay visible for one specific reason: auditability of forfeited points. Tony went further — “we may actually want to build out a specific report to highlight that for member admins.”
Two-factor available by default for hosts, optional not mandatory. Matt: “that’s the kind of persona that thinks I’m entering in financial protected data… we should not be afraid of saying, yeah, two factor is here by default for hosts.”
A deliberate decluttering pass added to Matt’s work — “there’s a lot of leftover mess after all the work that’s been happening… which is actually what I think the UI needs right now, which is a decluttering.”
Defects the map found that nobody said out loud
Three Bugs Sitting in the Spreadsheet.
PNG/JPG floor plans fail in prod
Tagged twice in the artifact: PNG/JPG silently fails in prod — OCR is gated to macOS. A platform-dependency bug that fails without telling the user. The sharpest engineering find in the document, and it was never mentioned in the meeting.
Listing can go ACTIVE with no floor plan
J1 step 8: No gate on missing floor plan - dead-end risk. A host can publish a listing that has no bookable units behind it. Also never raised verbally.
Four orphaned features
Working code with no way to get to it: the favourites page, Reserve a block of seats, Company bookings list with filters, and Member (company) utilization. Plus dead legacy credits and subscription screens flagged for removal.
⚙ Operator Tunables Have No UI At All
Both the over-sell factor (1.2×) and every point factor are hard-coded constants. Changing a day weight today is
[NO UI - code change + redeploy]. Sensitivity analysis is
[CLI ONLY - npm run simulate:points]. The meeting asked for both to become settable
globally and per-account:
“the ability to set that either across the board and or account by account basis.”
The maturity moment
“Moving Away From That Vibe-Coded Term.”
💡 Matt Names the Transition
“We’re getting to a critical mass point with that. It’s code, it’s features. It’s going to be data. And so it’s a product that’s not a couple workflows that someone else could have automated on Excel or whatever. And so that’s where for me it’s a little bit of an ‘oh shit’ moment of, okay, if we really say this is this thing and we go and we put it out there… there’s going to be a hardening process of moving away from that vibe-coded term to, this is an enterprise production-level application.”
And the reason it matters: “It’s financial data, it’s financial implications to their business. If something goes wrong and we can’t answer why, they’re going to say goodbye.”
Compliance load, ranked: SOC 2 is the heavy one and long-term (“distinct requirements… that one actually will need some specific focus”). GDPR is framed as easier — data handling and right to be forgotten. PIPEDA for Canada. The US is assessed as least demanding. Mitigating argument is data minimisation: “we get their name and their email, but we’re not keeping anything crazy about them.”
Pre-launch legal artifacts now line items: terms and conditions, a legally approved privacy agreement, and the HQ Lite to host licence agreement.
Where it landed
Walkthrough Deferred. Steve Reviews First.
Wait for Steve and Matt
Tony offered to load the UI and walk it that night. Rob argued to wait — “the person that really knows the industry is Steve” — and Brandon agreed, noting Matt was seeing the document for the first time. Both named vital.
Rob’s rationale for spending the time now: “If we don’t spend the time now, I just think we’re going to spend more of it later.” Walkthrough moves to next Monday or Tuesday.
Map, review, true up, declutter
Tony: apply all meeting edits to the map, upload it to document storage as a live collaboratively editable version, email it round, and post the notes for Steve.
Rob and Brandon: get Steve to review — treated as gating. Brandon: “I’m going to harass him.”
Matt: true up the codebase against the list and drive everything orange to black; start deriving test coverage; identify and remove dead features and duplicate views; keep building the super admin panel.
Everyone: review and flag changes this week.
❓ Biggest Open Questions Leaving the Room
Where does the square-footage cap live — Super Admin or Host? • How are multiple floors modelled: one listing with N floors, or N listings? (Brandon confirmed it is live today — “for our current office there’s multiple floors to book. It’s going to come up.”) • Is the daily capacity cap 80% of sold seats or 100% of physical seats — and what does the system actually enforce today? • Is 24 hours the right refund cutoff, or just a starting point? • When exactly is a point transaction confirmed? Brandon: “that’s an area we just haven’t fully thought through.” • Steve’s request for a host override on refunds — raised by Matt and left dangling • Does the offices-versus-workstations point taxonomy survive contact with a real floor plan? • What operational data does a super admin need to run the business? Matt asked the group directly and got no answer.
Session 13 • August 10, 2026
Stop Refining. Start Testing.
Price It Per Square Foot. The Brokers Sell It.
The call opened as a development status check and ended as a business-formation call. Tony declared the build 85–90% complete and reframed his own work from building features to finding bugs. Rob forced the pricing conversation; it took five minutes to land on dollars per square foot. Then Steve reframed the entire go-to-market by pointing out that the brokerage community is already a landlord-funded salesforce that HQ Lite never has to pay. Rob’s closing line named the shift: the software is good, but five guys working Monday nights is not going to manage a launch.
📅 August 10, 2026
👥 Tony, Rob, Steve, Brandon — Matt absent
🎯 Square footage confirmed as the pricing metric — ~40% of value recovered
📌 Brokers reframed from a cost line into the distribution channel
The fork in the road
85–90% Done. Testing Becomes the Forcing Function.
Rob framed it as a binary and the group picked a side: keep polishing in the dark, or start testing and let the results drive the refinement.
🎯 Test First, Refine Second — Decided (Aug 10)
Rob’s framing: “We’re sort of at that pinnacle where we have to decide, do we continue to try and refine, or do we start testing and then use the testing results to refine?” Answered: testing.
Tony’s status call: “I feel like we’re at the 85% point and this is where stuff starts to take longer.” All core critical problems identified over the last 12 weeks are resolved. “Now when I’m jumping into the interface it’s more finding the issues in the system rather than building out new functionality.”
Baseline scenario: one host, one member admin, one member user — full end to end. Expand to additional personas and edge cases from there.
Two-pass method: Tony writes the step-by-step guide first and circulates it (“does this feel like it captures what we’re doing?”), then the group walks the system against it. Explicitly not ad hoc — “the problem with doing it on the fly is you start to get lost… you get lost in what else is on the screen.”
The guide becomes the permanent regression baseline, and its acceptance criteria feed automated tests: “once we have those relatively captured that’s all automated, we just push those into user tests.”
🛑 Hard Sequencing Decision — Fix the Numbers First
Tony:
“The biggest issue that needs to be fixed first is the logic and then the actual numbers in the app don’t look right… because if none of the numbers match up you don’t know what you’re looking at and it doesn’t make sense to try to get into testing anyway.” Everything else is gated behind this. Release cadence also moves from Friday/Monday only to mid-week deploys so the fix can land before testing starts.
Why the test plan matters
Rob’s ERP Lesson: The First Outsider Always Picks the Broken Path.
No one should have to call Matt
Rob, from a prior ERP go-live: “And without Matt telling us, oh no, you have to go back three steps and go over here. Because if I’m a user, we don’t want anybody calling a Matt.”
The test is only valid if it can be completed by someone with no insider knowledge. A walkthrough narrated by the developer proves nothing.
Naming, placement, discoverability
Rob: “Nine times out of ten… the first round, it’ll be, oh, I don’t know where that is. Oh, that name’s really bad. Or, wow, that’s in a weird spot… And all those things fall out by taking time to develop one very cradle to grave set of transactions.”
And on edge cases: “Trust me, the first time anybody that isn’t amongst us group goes on and uses it, it’s going to be the one they’re going to pick. Because it’s just the way it is.”
📋 Member Scenarios Rob Enumerated (test-case source material)
An admin who is also the only user • an admin managing 10+ users across multiple groups (finance, marketing) • users with no group assignment • an admin bringing 15 users in at once • booking on a single date • booking across multiple dates • booking directly vs. booking off a reserved block • a supervisor admitting one of their people • a supervisor saving a block as an activity • a supervisor saving and reserving a block of spots • book it, get it wrong, cancel • wanting to change the date rather than cancel.
The pricing decision
Dollars Per Square Foot. Share ~40% of the Value Created.
Rob predicted the conversation could take five minutes or five months. It took about five.
🎯 Pricing Metric Confirmed — $/sq ft (Aug 10)
The model (Brandon): “We think we’re able to allow you to recover $5 a square foot. We want to share in that upside. So we’ll charge you $2 a square foot. We’ll charge like 40% of the economic value.”
Why not per seat: “That’s definitely the industry moving away from that because people are shifting from labor to capital, and capital meaning AI. So you don’t want to be tied to that. You want to be tied to the actual economic value.” Brandon’s concrete case: if a contractor does the same job with 50 fewer administrative people, “we’re not getting docked for 50 less licenses.”
Tony’s independent confirmation from the product side: “Your asset in our system is the floor plan, and the floor plan is based on square footage. So I think it’s the simplest approach for right now.” He also noted the payer is the property owner, not the seat occupant.
Price anchor: $1–$2/sq ft, benchmarked against what landlords already pay for janitorial and paper shredding — it slots into an existing cost-of-goods line rather than creating a new budget category.
Self-auditing: square footage needs no customer audit — “because we see what they’re uploading into the system.” A material advantage over project-volume pricing, which requires auditing the customer’s books.
Notable: the AI model Tony ran beforehand recommended per-seat pricing. The group overruled it.
Better than zero
Steve: “The value proposition isn’t always on additional margin. It’s on recovery… if you’ve got space worth 50 bucks a foot and you get zero recovery, getting anything back over that buck is a bonus.” For genuinely dead space, any recovery is upside.
Incremental margin
Rob: “If you pile on an extra buck, it makes their cost of goods sold go up a buck, but it gives them a return… if you’re giving them $10 a square foot and it’s costing them a buck, that’s pretty cheap.” A 10:1 return on the software line.
Don’t ratchet the price
Steve: contracts run one to three years, so “you don’t want to jack up prices every year.” $1→$1.25 is fine; $1→$3 “will kill a market.” Commit to a number you can live with, then justify increases with inflation plus demonstrable product improvement.
Good / better / best + volume + bolt-ons
Tiers: entry tier for small businesses early in their digital transformation; a middle tier with extended workflows; a top tier with the newest capability.
Volume: a marginal-rate model — above a threshold, the next incremental square foot gets cheaper, “but you’re collecting more dollars off of them as they scale.”
Bolt-ons (Rob): “We want to specifically target bolt-on developments in the software so that we can say, hey, this is going to add incremental value. You can take it or leave it. But it’s another buck.”
Land and expand: “Nobody’s going to go enterprise wide on the first contract.” One property → ten → enterprise.
The people who pay aren’t the people who cost
Tony: “Costs are probably negligible… the actual software, it’s minimal. It’s API calls and database queries. But it’s insignificant compared to the rate our support costs will go up once we start getting users on the system.”
And the structural mismatch: “The small number of users who actually pay the money are a very small modicum of your cost to serve. It’s the users that you don’t get revenue off of that end up being a significant amount of support and cost to serve.”
Rob’s estimate: a 25,000 sq ft floor generates roughly 100 support calls; 10× the square footage means roughly 10× the calls. No solution agreed — outsourcing floated, absorb-then-reprice floated.
💵 Trials: Yes — But With a Published Price
Tony floated a trial with no stated price so the model could change if demand surprised them. Rob shut it down with a buyer’s-eye argument:
“If you came to me and said, hey, you can use this software for free for three months, and I say, well, that’s fine, so what does it do? Great. How much is it? Well, I don’t really know… I’m not investing my people’s time or energy or anything in it. I need to know what you’re talking about. Otherwise I’m not committing our organization to it.” Steve’s version of the trial:
“the crack dealer model — find a couple of big fish and give them six months or a year free on X number of square feet. Get them hooked.” Resolution: trial yes, price must be stated. Length (3, 6, or 12 months) unresolved.
The strategic unlock
HQ Lite Already Has a Salesforce. The Landlord Pays For It.
Rob asked how five part-timers sell 25,000 sq ft at a time across North America. Steve’s answer converted a headcount problem into a marketing problem.
🎯 Brokers Are the Distribution Channel — At Zero Direct Cost (Aug 10)
Steve, cutting off the incentive discussion: “Hang on a sec. You have to understand how the brokerage business works. We don’t have to worry about paying these guys. They will get paid. And we don’t have to worry about incenting these guys either, because they essentially get a percentage of the transaction… That is the incentive — that our model is essentially putting more space on the market. All of this dead and feral space that isn’t moving now becomes potential space.”
Why it self-sells: “They’ve got vacant space that they can’t move, that they’ve got the listing for, and it’s driving them nuts because they’ve got to invest all this time on this dead dog. This gives them an alternative to liven the dead dog… It’s self-selling to the brokerage community. What we need are people to go to the brokerage community and explain to them why this is a good thing. And they’ll get it like that.”
The junior-broker mechanism (answering Brandon’s worry that smaller deals hurt brokers): senior brokers hand 5,000 sq ft deals to juniors and participate in the income, exactly like articling. Higher deal volume is a feature, not a threat.
Steve’s closer for a landlord: “Why wouldn’t you just hire Cushman & Wakefield — their property managers as well? So this is a completely hands-off solution. And oh, by the way, you get to walk away with an extra 10 bucks in your pocket. What’s the downside?”
And for a national tenant: “You can actually bring all of your people in Toronto into the office four times a month without having to pay for all that square footage. And this model is applicable across North America. So how about you give me the assignment to help you right-size your portfolio across North America, and we’ll work with HQ Lite.”
Non-paying, but load-bearing
“Our economic buyer is the landlord. But if there’s no buy-in from the brokerage community, this thing kind of falls apart basically.”
And the education gap: “We get three or four owner or landlord customers, and then they’re going to call their brokers and their brokers are going to say, well, what the hell is HQ Lite?”
Net resolution: no commission cost, but a real marketing-and-education budget line for brokers — conferences, events, direct outreach. Steve conceded this.
A two-sided network
Brandon: “Our moat is like the network… we’re creating a two-sided model. You need the supply of the properties, but then you need the demand of people that want the real estate.”
Steve on scale: “If we got 1% of the Canadian market, we’d be very, very happy. And if we got 1% of the North American market…” Tony: “I don’t know what to do with ourselves.”
Unresolved: whether go-to-market is direct for large landlords like Brookfield and broker-led for everyone else, or a single strategy for all.
The P&L work item
Rob Wins the Argument: You Can’t Price Without a Cost Base.
$200–250K per head
Fully loaded, 60/40 base to variable. Channel partners as an alternative — Brandon’s company pays 25–30% commission globally.
$100–150K, scales with users
The main variable cost driver. Brandon’s placeholder assumption: 50 seats sold means roughly 100 actual users. Support load comes from end users who generate no revenue.
The cost nobody is paying yet
Rob: “The other big cost that we can’t forget is that Matt and Tony aren’t going to be doing all the R&D at the side of their desk. That’s going to be a huge fixed cost that comes in too.” Autodesk named as the public benchmark for R&D and S&M as a percentage of sales.
📊 The Test of the Model (Rob)
“Whatever we present in terms of market pricing, whether it’s a buck a foot — that this thing hangs together. How tight is it? How many square feet do we have to get to, to break even?” Model the low end first:
“it’s best to start at the lower end. That way our cost as we grow, it’ll be to our advantage as opposed to us getting hit.” Steve to supply host-side economics (cost of goods for a typical 25,000 sq ft property); Brandon to supply top-down SaaS benchmarks.
Also decided
Collateral, Issue Capture, and What Gets Deferred.
Website front end + printable deck
Tony pushed for one answer; Rob refused: “I think it’s both… that can be the front end of the website, but it’s also a printable document that you can either attach to or link to or take with you if you actually go see somebody.” 5–10 slides plus a live demo. Not marketing collateral — Tony: “we don’t want this to be widely available.” It’s a targeted sales playbook.
A dislike button, not an email chain
Tony: “I want to come up with a good way for us to hit a dislike button or something that’s really easy when we hit a problem, so that it’s easy for us to capture issues and there’s not a whole bunch of emails and stuff flying back and forth.” The design constraint is explicitly anti-email. Mechanism still undecided.
Legal templates and FAQ
Boilerplate licence templates pushed back: “we’re dealing with more sophisticated users, so I don’t think there’s even a point of spending time on that yet.” FAQ documentation stays on the list but below testing. In-app help videos (the Robin model) are a roadmap item, not now.
🍸 The Immediate Test of the Broker Thesis
Steve has dinner next Tuesday with
Lloyd Cooper, a top Cushman & Wakefield broker in Canada with US connections, whom he hasn’t seen in ten years. Plan: soft-float the concept generically and capture his reaction. Rob:
“Getting confirmation of somebody in the brokerage at that level is massive. Because that can just change everything in terms of our strategy.” He could also become an early lead source.
💬 The Line That Named the Shift
Rob, closing:
“You and Matt have done a superb job on translating our gibberish into workable software. But now what we need to do is help make that software valuable and understand how we’re going to deliver the product… And five guys all working on Monday night is not going to manage a successful software launch.”
Session 12 • August 4, 2026
Cap and Accrue. Design Audit.
End-to-End Walkthrough Next.
Full group including Steve. The session reviewed the live build end-to-end for the first time with everyone present. Steve confirmed the capped accrual points model (top up to 200, not flat +50). Two bugs were found live. The team aligned on no hard booking caps in V1 (host adjudicates conflicts), locked the block booking vs. individual booking architecture, defined three-tier cancellation logic, and agreed the next milestones are a design audit then a half-day cradle-to-grave walkthrough.
📅 August 4, 2026
👥 Tony, Matt, Rob, Brandon, Steve — full group
🎯 Capped accrual confirmed by Steve — top up to 200, not flat +50
📌 Two bugs found live. Design audit + walkthrough as next milestones
The core decision
Points Accrue Like PTO. You Top Up to the Cap, Not Past It.
Steve resolved the ambiguity in the accrual model. The bucket analogy: if you have 175 points and weekly accrual is 50, you add 25 to reach the 200 cap, not 50. Flat replenishment is out. Capped accrual is in.
🎯 Capped Accrual Model — Confirmed by Steve (Aug 4)
Model: Members start at 200 points (one month’s worth) on day one of their term. Weekly replenishment tops the bucket up to the 200 cap — it does not add a flat 50 regardless of balance.
Example: 175 points on hand + weekly accrual = 200 (not 225). The cap is enforced at every replenishment.
Why weekly, not daily: Daily accrual creates weighted-valuation gaming opportunities. Weekly intervals are simple and predictable.
Why a cap at all: Motivates usage. Members who hoard lose the incentive of accrual — “use it or lose it” for recurring empty reservations. The cap is also the system’s memory limit — preventing runaway point accumulation across a long term.
Last month of term: No additional 200-point credit at end of term (points issued at start, not end). Renewal triggers a new agreement and fresh allocation. Bonus-point loyalty incentive floated as V2.
Booking policy
No Hard Caps. Host Adjudicates. Gaming Is Acknowledged But Parked.
Host is the adjudicator
The team explicitly chose not to bake hard booking limits into the system for V1. If a member attempts to game the system (e.g., booking all 200 points into weeks 3–4 then collecting 100 more as weeks 1–2 expire), the host sees it and intervenes.
Agreed approach: flag loopholes as they’re found, let the AI stress-test surface the worst cases, and respond in V2 with rules that are grounded in real abuse patterns rather than speculation.
Book 200 pts into far weeks, collect 100 more
Week 1 and 2 expire. Member has 100 fresh points. Used 200 in weeks 3–4. Net: 300 points of value from a 200-point cap in one replenishment cycle. Not prevented in V1. Host can see the pattern, cancel the speculative far-week bookings, and issue a warning. This is considered an acceptable edge case for MVP given its visibility to the host.
Block booking architecture
Block ≠ Individual. Two Separate UX Surfaces. Hotel Conference Block Logic.
🏘 Block Booking vs. Individual Desk Selection (Aug 4)
Block booking (Member Admin action): Reserves N seats for a date range. Consumes points at commitment time. Acts like a hotel conference block — the seats are held but specific desk assignments aren’t made yet. Admin sets the ceiling; individuals fill from within it.
Individual desk selection (End User action): Picking a specific desk within a pre-allocated block. This is NOT a booking. It should be freely adjustable up to a cutoff (approximately one week before the date). No points consumed at this stage — already paid by the block.
Release rule: Unselected seats in a block return to the general pool at the cutoff (approximately one week out). Partial credit may apply for released seats. No-shows on the day: no credit — the cost of the advance blocking privilege.
Why this distinction matters: Treating block commitment and desk selection as the same action creates bad UX and bad accounting. The two surfaces must be separate in the data model and the interface.
Batch enrollment: Adding a large team should support bulk import (e.g., 50 employees with three permission tier assignments in one operation).
Cancellation tiers
Points Back Depends on When You Cancel. Three Tiers.
Full credit returned
End users can self-serve cancel with full points credit returned. Clean, simple, no override needed. This is the standard cancellation window.
Member admin discretion
Late cancellation. End user cannot self-serve. Member admin can override within a defined window (up to ~3 days). Whether a credit is issued is the admin’s call. Host retains final override for extenuating circumstances (e.g., snow days).
No credit, no exception
Day-of cancellation: points are gone. This is the cost of the advance booking privilege. No-shows are also Tier 3 — the booking consumed points regardless of attendance. Repeat book-and-cancel behavior is flagged for host intervention regardless of tier.
Live build review
End-to-End Flow Exists. Two Bugs Found. UI Needs an Audit Before Walkthrough.
Seat count vs. multiplier confusion
The points balance is miscalculating. Seat count and points multiplier are being conflated somewhere in the calculation logic. Found live during the demo. Matt to fix before the walkthrough session.
File reference broken
Floor plan image and associated file are not linking correctly in the live build. Visible during the demo review. Matt to fix before the walkthrough session.
🌟 Calendar UI Improvements Identified (Aug 4)
Four specific UI changes identified during the live review:
• Rename “Week 1” to “Current” — makes the booking calendar immediately understandable without instructions
• Weighted point cost per day in column header — day-of-week pricing visible at a glance so members can see that Tuesday is 1.0× and Wednesday is 1.2× before they book
• Seat type multiplier in the same header row — hot desk vs. office costs visible without navigating away
• Points balance prominent at top — “loud and proud” above the booking grid, not buried in a corner
Robin cited as the UX benchmark. Key gap: Robin is single-tenancy; HQ Lite is multi-tenancy. The additional complexity must not surface in the end-user interface.
Floor plan privacy
Color-Code by Company. Anonymize External Names. GDPR Safe.
📍 Floor Plan Color-Coding + Privacy Model (Aug 4)
Internal view (same company): Show names or employee identifiers on booked desks. Your own team sees who is sitting where.
External view (other company’s seats): Color-code by company (e.g., blue team vs. red team dots) but do not reveal individual names. Hovering to reveal a name from another company is a GDPR / privacy concern — anonymization must be enforced at the data layer, not just the UI layer.
Implementation: External companies appear as colored zones or anonymous markers. Internal employees see their colleagues’ names only. The host sees everything in host view for facilities management purposes.
AI stress-test plan
Three Personas. Two Optimise. One Adjudicates. Then We Have an FAQ.
🧠 AI Stress-Test — 3-Persona Plan (Aug 4)
Rather than manually scenario-planning every edge case, run competing AI agents against the booking system:
Persona 1 — Rule-following member: Books weekly accrual as intended. Baseline behavior. Shows what the system looks like when used correctly.
Persona 2 — Maximiser: Tries to extract the most value possible. Finds and exploits every loophole. Books speculatively. Cancels strategically. Surfaces the gaming scenarios the team hasn’t thought of yet.
Persona 3 — Host adjudicator: Watches both agents, resolves conflicts, generates recommended responses. The output is a draft FAQ of host guidance for common conflict scenarios — which the team can then review and formalize.
Goal: let AI enumerate the loopholes so V2 rules are grounded in real abuse patterns, not speculation.
Next milestones
Fix. Audit. Walk. Then Block Booking.
Points calc + floor plan linkage
Matt fixes the two bugs found live before any walkthrough session. The build needs to be stable enough to navigate end-to-end without hitting errors mid-flow.
Full platform UX review
A complete design audit of every screen before a structured group walkthrough. Identifies cosmetic and structural issues so they’re not found during the walkthrough session itself.
Cradle-to-grave with role assignment
Each participant takes a role (host, member admin, end user) and works through the full flow independently. Stop at ~10pm; pick up from that point next session. No shortcuts — every screen, every action.
Two-surface architecture
Build the block booking UX as a separate surface from individual desk selection. Implement the hotel conference block model with a ~1-week release cutoff. Batch enrollment for large teams.
Session 11 • July 27, 2026
Points Consumed at Booking.
Calendar Grid. Gaming Risk Mapped.
A working session with Matt and Brandon stress-testing the points balance model against real numbers in the spreadsheet. Three decisions locked: points deduct at reservation not day-of-use, the weekly replenishment formula, and the calendar/grid as the member UI direction. Several open questions (hard caps, monthly vs. weekly accrual) were flagged for Steve. Matt demoed a first version of the member points dashboard.
📅 July 27, 2026
👥 Tony, Brandon, Matt
🎯 Booking mechanics resolved
The core decision
Points Deduct When You Book. Not When You Show Up.
The most consequential mechanics question: when does a reservation consume points? The team landed on: at booking. Not at day of use.
🎯 Points Consumption Rule — Locked (Jul 27)
At booking: Points are deducted from the member’s balance the moment they confirm a reservation. The seats are locked in. The balance reflects reality immediately.
Why: If points only deducted on the day of use, members would never know their true available balance when planning future bookings. The dashboard would be misleading. Points-at-booking makes the balance trustworthy.
Cancellations: Partial refund if cancelled 24+ hours before the booking date. Points forfeited if cancelled within 24 hours or not used. No-shows = points gone.
Effect on gaming: A member who books out the whole floor on Wednesday burns through their points immediately and can’t book anything else until the weekly replenishment. This is intentional — the rule creates natural scarcity without a hard cap.
Points balance model — refined
200 Start. +50/Week. Cap at 200. Never Exceed.
🎯 Balance Mechanics — Updated (Jul 27)
Starting pool: Seats × 20 = starting balance. 10 seats → 200 points on day one.
Weekly replenishment: 50 pts added at end of each week (= one quarter of base, for a 10-seat member). Added to a maximum of the starting balance — never above it.
Example A (heavy user): Start 200 → use 100 → end week at 100 → +50 → 150.
Example B (light user): Start 200 → use 10 → end week at 190 → +10 (only enough to reach cap) → 200.
Key principle: You can’t accrue beyond your contracted maximum. The cap enforces the "use it or lose it" spirit without a complex rolling-day mechanism.
Open question (needs Steve): Monthly vs. weekly replenishment. Monthly is cleaner and avoids end-of-week booking rushes, but creates hard end-of-month spikes. Weekly was kept for now pending Steve’s input.
Day weights — Thursday confirmed
Five-Day Matrix Now Complete Except Friday.
Day weight modifiers (platform-set)
Monday: 0.8×
Tuesday: 1.0× (anchor)
Wednesday: 1.2–1.3×
Thursday: 1.1× (updated in spreadsheet during Jul 27 call)
Friday: TBD
Weighting drives natural spread of bookings across the week. If a day gets consistently overbooked, raise its cost — pushes members to redistribute without hard caps.
Hard booking floor/ceiling (80% cap) — needs Steve
The 80% daily floor cap (no member or combination can book >80% of the floor on any single day) was flagged as still open. Steve has been resistant to hard caps. His sign-off is needed before this can be wired in. The alternative is relying on dynamic day pricing to self-regulate demand, with bad-actor monitoring as a backstop.
Gaming and overbooking risk
The Points Abundance Problem — Mapped But Not Fully Resolved.
Brandon and Matt walked through a concerning scenario: a 10-seat member starting with 200 points can theoretically flood the floor on day one, since 200 ÷ their weekly "need" of ~50 means they have 4× what they need. The team mapped the risks but did not fully resolve them.
Starting balance gives members 4× their weekly "share"
A 10-seat member gets 200 points but only "needs" ~50 per week. This means on day one they could book far more seats than their contract implies. The team debated whether starting balance should be 200 (full) or 50 (one week only). Landed on 200 for now because flexibility is a selling feature — but the question of what happens when multiple members all do this simultaneously is unresolved pending AI simulation.
Three layers of bad-actor defense
1. Points-at-booking: Burning 200 points on day one leaves the member unable to book anything else until replenishment. Natural consequence.
2. Dynamic day pricing: If a member perpetually books Wednesday, the system raises Wednesday’s cost, pushing them (and others) to cheaper days. No hard cap needed if pricing is responsive.
3. Bad-actor monitoring: Pattern detection with cost multipliers applied to repeat offenders — the "move them to a different server" approach from game dev.
💡 MCP Server Stress Test — Proposed
Tony proposed building an MCP server that deploys multiple AI agents all booking simultaneously — to find break points before real members can. Brandon will simulate concurrent bookings across different member profiles to find where the points model breaks. This is the right way to validate the model before launch.
UI direction
Calendar Grid Replaces Date List. Planning vs. Booked States.
-
📅
Mon–Fri × 4-week calendar grid (replacing current date list)
Five columns (Mon–Fri), four rows (weeks 1–4). Each cell shows: seats booked that day + points consumed. Running balance visible. Costs weighted by day (Mondays cheaper, Wednesdays more expensive). Members can see at a glance which days have cheap availability vs. expensive. Reference: Steve’s Excel calendar view; Robin for UX patterns.
-
✍
Two states: Planning and Booked
Planning state = member has selected seats but not confirmed. Booked state = confirmed, points deducted, confirmation sent. A commit/confirmation step separates the two. Who can finalize a booking depends on permission level — Super Admin vs. User distinction needs to be designed. This is also where the permission cascade becomes visible in the UI.
-
📷
Robin screenshots as UX reference (Brandon)
Brandon has Autodesk Robin access. Will pull screenshots of the member booking experience — seat selection, calendar view, confirmation flow — for Matt to use as UI reference. Not copying Robin, but using it as a benchmark for the experience quality HQ Lite needs to match.
Contract exhibit confirmed
Bottom Table Goes in the Contract. Top Table Stays Internal.
-
✓
The tenant-facing range table is the contract exhibit
The bottom table in Brandon’s spreadsheet — showing the range of seats a member can expect per day for their contracted seat count — goes into the license agreement as an exhibit. This sets member expectations upfront. The top table (raw multiplier matrix) is a host/internal tool only, not shown to members.
-
✓
Min-of-one debate resolved: unnecessary
For a company with a single contracted seat, the math still works without a minimum-of-one override. A 1-seat member gets 20 points; on Tuesday they can book 1 standard desk. On cheaper days they can actually get slightly more than 1 seat’s worth across the month. The formula works without intervention — no floor needed.
What stayed open
Open Questions Carrying Forward — Need Steve
Monthly vs. weekly replenishment
Monthly is cleaner (avoids weekly rush, simpler for members to understand). Weekly keeps the rolling window fluid but creates complexity and a potential rush each Monday. Steve needs to weigh in on which model fits the product vision before it is wired in.
Hard booking caps (80% floor) — Steve has been resistant
The hard cap that prevents any member or combination from booking >80% of floor on a single day. Steve’s view is that the model should self-regulate through pricing, not caps. The team wants to run AI simulation first, then revisit with Steve before shipping.
Starting balance 200 vs. 50 — abundance question
Giving members 200 points (4× their weekly need) means day-one flexibility is very high. Whether this causes problems at scale depends on the mix of member behavior types. The MCP server stress-test will provide data before a decision is made.
Permission levels in booking flow — who can finalize
The distinction between planning a booking and committing it needs permission logic. Can any User finalize, or only Admins? Does Super Admin need to approve? The booking commit step is the right place to enforce this — but the hierarchy rules are not yet designed for the booking context specifically.
Next steps
Action Items from Session 10
-
1
Tie day-booking UI to points balance (Matt)
Connect spreadsheet day-weight calculations to the member dashboard. Add weighted day costs (Mon–Fri multipliers) to the booking view. Points deduct at booking confirmation.
Matt
-
2
Build calendar/grid booking view (Matt)
Replace current date-list UI with Mon–Fri × 4-week grid. Show seats booked per day + points remaining. Separate planning state from booked state with a commit step.
Matt
-
3
Pull Robin screenshots for UI reference (Brandon)
Click through Autodesk Robin account. Capture: seat selection, calendar/grid view, booking confirmation flow. Share with Matt as a UX benchmark.
Brandon
-
4
Tony & Brandon huddle before next Tuesday
Tony is running a gap analysis of the current build. Sync to review gaps and align before the next full team call.
Tony + Brandon
-
5
Run points balance logic through AI for scenario validation
Stress-test weekly accrual model. Simulate concurrent bookings from multiple member profiles (MCP server approach). Find where the model breaks. Generate data for the Steve conversation on caps and accrual.
Brandon
-
6
Align with Steve on hard caps and accrual model
Two open questions require Steve’s sign-off: (1) 80% daily floor cap vs. pricing-only self-regulation; (2) monthly vs. weekly replenishment. Present AI simulation results before asking for a decision.
All
Session 10 • July 21, 2026
Points Matrix Locked.
Host Side Done. Member Side Begins.
Brandon presented a two-dimensional points matrix (day of week × seat type) built in Excel, intended as the direct spec for Matt to implement. The team resolved the last outstanding points engine questions — rolling window length, replenishment cadence, who controls the multiplier — and formally declared the host side complete. The next phase is building the member-facing permission hierarchy and scenario planner.
📅 July 21, 2026
👥 Tony, Steve, Rob, Brandon, Matt (joined late)
🎯 Points engine fully specced
The core decision
The Points Matrix: Two Dimensions, One Anchor.
The framework is a matrix of day-of-week modifier × seat-type modifier. All values multiply against a baseline of 1 point = standard desk on Tuesday.
🎯 The Points Matrix — V1 Spec (Jul 21)
Anchor: Standard desk, Tuesday = 1 point.
Day modifiers: Monday 0.8× • Tuesday 1.0× (anchor) • Wednesday 1.3× • Thursday TBD • Friday TBD
Seat type modifier: Standard desk = 1.0× • Office seat = 1.5×
Conference rooms: Parked. Not tied to points in V1. Shared amenity policed by host; existing tools (Outlook, Robin) handle booking. Members get proportional access as if they own the whole office.
Result: A standard desk on Monday costs 0.8 pts. An office seat on Wednesday costs 1.95 pts. A member buys seats, not specific desks — the matrix shows them the range of outcomes depending on when they show up.
Capacity multiplier & day weights: platform-controlled
HQ Lite Sets These. Hosts Can See, Not Touch.
A key structural decision: the multiplier (currently 1.2×) and day-of-week weights are set globally by HQ Lite, not configurable per host.
Platform controls the multiplier and day weights
Rationale: hosts lack the analytical sophistication to set these safely. A host who inflates their multiplier to 1.8× in pursuit of more revenue will over-contract and create a poor experience — bad press for the platform. HQ Lite will use AI scenario testing to find defensible break points and margin-of-error thresholds before locking values. Target: disappointment rate under ~10–15%. Once locked, values are adjusted platform-wide based on aggregate utilisation data — not per-host request.
Lean conservative on V1 multiplier (1.1× vs 1.2×)
Once a host has contracted members at 1.2×, dropping to 1.1× has knock-on effects on those existing agreements. The platform can push multiplier updates but must account for contracted capacity obligations. Conservative stance: it is easier to relax a conservative multiplier upward than to tighten an aggressive one. Existing contracts are protected; new listings inherit the updated platform value.
Rolling window — final spec
20-Day Window. Weekly Replenishment. Starts Monday.
🎯 Rolling Window Mechanics — Final (Jul 21)
Window: 20 working days (not 28 calendar days).
Starting pool: Member begins with full pool = contracted seats × 20. (e.g., 10 seats → 200 points on day one.)
Replenishment: Weekly — one week's accrual is added, oldest week drops off. Not daily. Points never exceed contracted maximum.
Booking ahead: Members can book up to 20 days out. They can spend future points now — but if they don’t show, those points are gone.
Unused points: Lost when the window rolls. No banking beyond the cap. Use-it-or-lose-it by design.
Contract start/end: All contracts start and end on Monday/Friday. This keeps the rolling window clean and removes calendar-month complexity. If a member starts mid-week, host can manually accommodate as a one-off freebie.
Seat Allocation Illustrator
Brandon’s Spreadsheet Becomes a Sales Tool and a Contract Exhibit.
The matrix doubles as a host-to-member contracting and negotiation tool. Host shows tenant: “if you buy 10 seats, here’s what that looks like day by day, seat type by seat type.”
-
1
Daily view: what can I get on a given day?
Shows the range for a given seat count: cheapest day (Monday, standard desk) gives the most seats. Most expensive (Wednesday, office seat) gives the fewest. Rounded down — no fractional seats. Helps tenant understand the variability they’re signing up for.
-
2
Monthly view: 20-day scenario planning
Multiplies the daily matrix by 20 working days. Shows use cases: a company with 50 employees buying 10 seats can still put all 50 in on a Monday by saving points. Capacity limiter still needed (e.g., only 30 office seats exist in the physical space). This view goes into the contract as an illustrative range.
-
3
Interactive member scenario planner (to be built)
Based on Brandon’s spreadsheet. Member-facing: plan out an entire 20-day period, see points consumed per booking, see what’s left. Town hall planning (50 people on a single Monday), team scheduling, points rollover visualisation. This is the member’s primary planning tool once the booking engine is live.
Host → Member inflection point
Host Side: Done. Member Side: Starting Now.
What’s built or specced on the host side
Account setup • Property + listing creation • AI floor plan detection • Capacity multiplier (platform-controlled) • Planning tab (bookable seats model) • Points pool configuration • Combined contract/invite flow • Head lease terms at listing level • Host type toggle (owner vs. lessee) at listing level • Planning tab locked after first agreement
What needs to be built on the member side
Member Admin vs. Member User split (currently collapsed into one role) • Permission hierarchy: host admin → member admin → member users • Member scenario planner (Brandon’s spreadsheet logic in software) • Points balance dashboard (view pool, see rolling balance) • Utilisation analytics dashboard for host (after member booking flow is captured) • Physical access list (who is on-site each day — V1 baseline)
Revenue model & product strategy
Hub and Spoke. Data from Day One.
Hub-and-spoke model with stickiness as the design principle
Hub = core seat booking. Spokes = analytics, conference room booking, access control, vendor partnerships (e.g., Robin integration discount). The goal is to be embedded in every core workflow so switching cost is prohibitive. Software contracts: 1- or 3-year terms with fee review at renewal. HQ Lite retains pricing power. Longer member subleases increase renewal leverage.
Premium analytics — freemium first, paid unlock
Give hosts a taste of advanced analytics (e.g., utilisation trends, churn risk signals, “next best move” recommendations), then gate ongoing access. Freemium/trial approach: users become dependent, then pay. Requires capturing the right data schema from day one — analytics cannot be retrofitted. Also: vendor referral revenue (e.g., Robin discount for HQ Lite hosts).
Permissions & guest access
Corporate Email Domain = Member Baseline. Guests = Separate Flow.
-
👤
All standard member users must share a corporate email domain
Business software, not personal. This enforces that member user accounts are tied to the company, not to individuals who might leave. Host can see every user that the member admin invites — full visibility down the permission chain.
-
👥
Guest invites handled separately — lightweight, expiring
Guests provide contact info voluntarily. Data expires after ~10 days. Not tied to the standard member permission system. Guest module is also a V2+ upsell candidate — and a marketing opportunity (guests see the platform, brand awareness spreads).
-
📋
Physical access list = V1 baseline requirement
Host must know who is on-site each day. Analogous to badge/swipe: prevents one person letting in five. Advanced access control (badge reader integration, facial recognition on screen) is a V2+ spoke. V1 = software-generated daily access list.
What was decided
Decisions Locked in Session 09
Points matrix: day × seat type, platform-set
Anchor: standard desk, Tuesday = 1 pt. Day modifiers platform-controlled. Office seat = 1.5× on top of day modifier. Conference rooms excluded from points in V1.
Rolling window: 20 days, weekly replenishment
Not 28 days. Not daily replenishment. Weekly. Contract starts/ends Monday/Friday. Full pool upfront. Unused points lost at rollover. Book up to 20 days ahead.
Multiplier + day weights: HQ Lite only, not host-configurable
Displayed to hosts but not editable. Platform runs AI scenario tests to validate before locking. Can be adjusted platform-wide; conservative default (lean toward 1.1× until data supports 1.2×).
Host side complete — move to member side
The host workflow is sufficiently built. Team formally declared the inflection point and is now designing member permissions, scenario planner, and booking-to-analytics pipeline.
Next steps
Action Items from Session 09
-
1
Hard-code 1.2× multiplier + day weights (Matt)
Display values to hosts but remove any host-edit UI. Values set globally by HQ Lite. Multiplier also locks permanently once first agreement on a listing is created (already in progress).
Matt
-
2
Implement points engine: rolling 20-day window, weekly replenishment (Matt)
Constrain accrual to contracted maximum. Ensure license start/end dates lock to Monday/Friday. Full pool on day one. Rolling FIFO: oldest week drops off, new week adds.
Matt
-
3
Build member scenario planner into software (Matt)
Based on Brandon’s spreadsheet. Covers monthly seat allocation, town hall planning, points rollover visualisation. Daily view + 20-day view.
Next sprint
-
4
Upload Brandon’s points matrix to Steve’s shared sheet (Brandon)
Needed so Matt can reference it directly while implementing the points logic.
Brandon
-
5
Run AI scenario tests on capacity multiplier (Brandon)
Find break points and acceptable margin of error (target: disappointment rate <10–15%) before locking platform-wide values. Daily vs. weekly replenishment comparison. Feed results to team before next session.
Brandon
-
6
Schedule longer Friday working session for end-to-end walkthrough
Once core member pieces are in place, do a multi-hour end-to-end run with hypothetical contract data. Stress-test the full host-to-member flow. Identify the last 10% before V1 is shippable.
All
Session 09 • July 14, 2026
Two Dimensions. One Matrix.
The Points Formula Is Just Multiplication.
Matt was on vacation. The rest of the team ran a dedicated strategy session to lock the points model before his return. They confirmed a 2D multiplier matrix (day of week × seat type), anchored to Tuesday hot desk = 1 point, with a zero-sum design so weekly weights sum to 5.0. A Gemini-generated formula validated the built-in fail-safe: total weekly point cost (125) exceeds points in circulation (120), so full simultaneous overbooking is mathematically impossible. The team also aligned on value propositions, permission hierarchy, license model, and space enforcement strategy.
📅 July 14, 2026
👥 Tony, Brandon, Rob, Steve — Matt on vacation
🎯 Points matrix spec locked — ready for Matt to implement on return
📌 Value propositions, permission model, and enforcement model aligned
The core decision
Day × Seat Type. Two Dimensions. That’s It.
After weeks of circling the points model, the team landed on the simplest possible solution: a two-factor multiplier matrix with a single anchor point.
🎯 The Points Matrix — Locked (Jul 14)
Dimension 1 — Day of week:
• Monday: ~0.9× (cheaper; drive off-peak usage)
• Tuesday: 1.0× (anchor — reference point for all pricing)
• Wednesday: ~1.2× (peak demand)
• Thursday: ~1.0×
• Friday: ~0.9× (cheaper; drive off-peak usage)
Zero-sum: Mon+Tue+Wed+Thu+Fri = 5.0 — high-demand days cost more, low-demand days cost less, net equal
Dimension 2 — Seat type:
• Hot desk / standard seat: 1.0× (base)
• Private office: ~1.5× (stacked on top of day multiplier)
• Conference rooms: parked for V1 — no point cost; host-policed separately
Example: Wednesday private office = 1.2 (day) × 1.5 (office) = 1.8 pts. Monday hot desk = 0.9 pts.
AI-validated fail-safe (Gemini): Optimised formula — day weights 0.6/1.2/1.4/1.2/0.6; point costs 15/30/35/30/15 = 125 total weekly. 125 > 120 points in circulation. The space can never be 100% simultaneously overbooked — the math prevents it.
Value propositions — finally explicit
Host Wants Revenue. Tenant Wants Flexibility. Both Get It.
Revenue optimization, not utilization
Hosts don’t care about utilization rates — they care about earning more from the same space. The oversubscription mechanism lets them recover more rent cost by licensing to more tenants than the space could physically hold simultaneously. The points system steers demand across days so the law of averages prevents actual physical overflow.
Steve’s analogy: host becomes a “rental car company.” License agreement (not sublease) keeps obligations narrow. Tenant gets narrow-use rights; host retains full real estate responsibility.
Flexibility at lower effective cost
Traditional leases charge for 100% of space regardless of actual attendance. HQ Lite charges closer to actual usage, with a points mechanism that steers behavior transparently.
Pitch: “If you book peak days you get fewer seats per dollar; if you book off-peak you get more.” The license agreement must include a sensitivity analysis — a seat-count range per day so tenants know what they’re buying before they sign.
Permission hierarchy
Four Levels. Self-Serve at Every Layer. “Simplexity.”
👥 Tenant Permission Tree (Jul 14)
Level 0 — Host: Full visibility across all tenants. Sets booking rules. Adjudicates conflicts. The “facilities manager” of the shared office.
Level 1 — Tenant Super Admin: Controls the entire member account. Allocates points and seat budgets down to Admins.
Level 2 — Admin (team/department lead): Manages a subset of seats from the Super Admin. Can book on behalf of team. Sees team-level utilization only.
Level 3 — Individual User: Books their own desk. No visibility into contract terms. Must be the easiest layer — one click to see available seats, one to book, one to confirm.
“Simplexity”: the simpler the UX at the bottom, the more complex the back end. That complexity is where the platform creates value — the user sees nothing except a floor plan and a confirm button. This is the Uber model.
License model — confirmed
A License, Not a Sublease. A Rental Car, Not a House Key.
Narrow-use rights only
A license permits use of the space only. The host retains all real estate obligations. The member has no capital improvement rights, no alterations, no obligation pass-through from the head lease.
Providing a boilerplate LOI + license template in-platform gets hosts ~80% to a signed deal. The host’s lawyer marks it up from there — dramatically reducing the legal cost of onboarding each new licensee.
Key distinction
A sublease transfers the tenant’s obligations to the subtenant — 90% of the original lease flows through. HQ Lite’s model is not a sublease. The member pays a license fee for narrow use for a defined term, nothing more. This distinction matters legally and operationally: the host cannot wash their hands of the real estate; the member cannot claim tenant rights.
Space enforcement
Host Polices. Software Audits. Points Penalise.
Entry log = evidence layer
Badge or swipe entry generates a per-person, per-space log. If a member employee occupies an unbooked space, the audit trail shows it. No enforcement without the log — the evidence layer must exist first.
One “gimme”, then penalty
Accidental space entry: one free pass per user. Second and subsequent violations: double points charged retroactively. Repeat offenders escalate to host review. Badge suspension for egregious cases. The “cost” of non-compliance is paid in points, not money — keeping the model simple.
Private SSID per tenant
Host provides a single IP. Each tenant gets an IDF closet for their own switches and access points. Every tenant’s SSID is private — employees log onto only their company’s network. Logging onto a private network = implicit presence verification, no hardware check-in required.
📄 Matt’s Deliverable on Return (July 21)
Tony will package the meeting notes and send them to Matt before the July 21 call. Covers the points matrix, two-dimension multiplier model, permission hierarchy, and sensitivity analysis requirement so Matt can resume development with a complete spec rather than partial notes.
Session 08 • July 6, 2026
Contract First. Invite Second.
One flow. No more duplicate screens.
Another live coding session. Matt walked the full host-to-member flow end-to-end, and the team spotted a structural flaw: two screens (member invite + contract creation) were capturing near-identical information. They collapsed them into a single contract-upload flow. They also resolved where head lease terms live, moved host type to listing level, and formalised three member user tiers.
📅 July 6, 2026
👥 Tony, Matt, Steve, Brandon, Rob
📄 Full host-to-member flow walked live — structural flaw identified and resolved
📌 Four structural decisions locked
What was demonstrated
Full End-to-End Flow — Host Creates, Member Books.
Matt demoed the complete journey: host creates property → listing → planning simulation → member invite → contract → member logs in → member searches → member books seats. The team identified problems in real-time and redesigned the flow on the call.
Host setup + simulation
Property creation, listing, and planning/simulation tab working end-to-end. Utilization tracking between host and member confirmed working — booking a seat updates the utilization display on both sides.
Duplicate invite + contract screens
The current flow has a member invite step and then a separate contract creation step, capturing nearly identical information. This is confusing, redundant, and creates a data sync problem. The team resolved to collapse these into one screen.
Points / booking enforcement
Booking rules not fully enforcing yet — the 28-day window and capacity allocation from the contract are not yet wired to the booking engine. Points remain as a placeholder; seats-only for V1.
Decision 1 — The biggest change
Contract Upload Replaces Invite + Contract Two-Screen Flow.
🎯 New Host Workflow (Step 4 Redesigned)
Old flow: (1) Invite member → member accepts → (2) Create contract separately — two screens, near-duplicate data, confusing ordering.
New flow: Host negotiates terms offline (email, broker, LOI). Once agreed, host goes to step 4 in the system: upload the signed contract PDF + fill in the operating details in one combined screen. Clicking "invite" at the end sends the member a single email: here is your access + a copy of the signed contract.
What the combined screen captures:
• Company info: name, address, phone, primary point of contact, email
• Agreement terms: license start date, license end date, monthly fee ($), % capacity share (which derives bookable seat allocation), included services
• Upload: signed contract PDF
What stays in the PDF only (not extracted): guarantor, insurance, indemnification, termination clauses, legal boilerplate.
Amendment workflow: Contract terms are locked after activation. Changes require a formal amendment process (separate workflow, not just editing the screen) — sends notifications to the member.
Decision 2 — Data model fix
Head Lease Terms Move from Property Level to Listing Level.
A host can own some floors and lease others in the same building — possibly with different terms on each. Head lease terms belong at listing level, not property level.
Fields captured
Head lease start date (defaults to next month 1st if mid-lease — avoids showing stale commencement date) • Head lease end date • Square footage • Annual base rent • Operating costs • Taxes
Safeguard: License start date for any member contract cannot be earlier than head lease start, and license end date cannot exceed head lease end date.
Fields captured
No start/end dates (or optional "space available from/to" for internal planning) • Square footage • Financing/carrying cost (replaces base rent — could be mortgage payments, depreciation, equity allocation, or $0) • Operating costs • Taxes
Rationale: A building owner has no lease obligation to constrain, but still has carrying costs that inform the recovery planning calculation.
💡 Host Type Toggle Moves: Property → Listing
The "I own this building / I hold a head lease" toggle moves from the property setup screen to each listing. This is because a single host could own some floors and lease others within the same building. The toggle at listing level determines which field set appears (lease fields vs. ownership fields). The property-level checkbox is removed.
Decision 3 — Member user hierarchy
Three Member Tiers. One Booking System.
Master administrator
Full visibility: sees all contract details, all team members, full utilization. Manages all sub-users and permission levels. Can allocate seat budgets to Admins. Set by the host during contract setup — this is the person who receives the invite email and has authority over the member-side account.
Team/department lead
Receives a seat allocation from the Super Admin. Can distribute that allocation to Users within their team. Can book on behalf of users. Sees utilization for their team only. Example: R&D department head managing their 10-seat allocation.
Individual booker
Granted booking authority by their Admin. Can book a seat when they need one, within whatever allocation their Admin has given them. No visibility into contract terms or overall utilization. The most common daily user of the product.
Decision 4 — Terminology locked
License vs. Lease vs. Member Agreement — Finally Clear.
License, not sublease
Sublease: transfers all rights and responsibilities of the original lease to the subtenant.
License: permits use of the space only — no capital improvements, no alterations, no obligations beyond paying the fee and vacating.
The host-to-member relationship is always a license. The host-to-building-owner relationship is a lease. HQ Lite's relationship with the host is a software license.
Use different terms by context
In the product UI / marketing materials: "Member Agreement" (clearer to non-real-estate users)
In the legal documents / contract PDFs: "License Agreement"
In internal data model / codebase: "LicenseContract" entity (established Jun 9)
Host-level: "Head Lease Terms" (not "License Terms" — that was confusing head lease with member license)
The member onboarding handoff
Last Host Screen = First Member Screen.
The interface boundary between host and member is now explicit.
⚡ The Handoff Architecture
Host side ends at: The contract screen (upload PDF + fill operating details + click "invite"). This page is locked from the member side — the member cannot edit any of it.
Member side starts at: A read-only summary of the same contract details. The member sees: what they signed, what their allocation is, what their included services are, and when their license runs.
Member then fills in their half: Operational contacts (who to call, billing address, who's on site), payment/invoice routing details, sub-user invites. This is the member's "master file" — editable by them, not by the host.
Sync: When member updates their operational details (new contact, billing address change), the host sees an updated read-only view. Host cannot edit it; member cannot edit the contract half. Two separate locked halves of the same record.
Open questions from this session
Three Things Still Unresolved.
-
?
How granular should member permission customisation be?
The 3-tier system (Super Admin / Admin / User) is identified but not designed. How does a Super Admin allocate seats to an Admin? Can seat allocations be by date range? Can a User book for colleagues, or only for themselves? These UX details need a design pass.
-
?
Can the PDF contract be auto-parsed?
The goal is to extract key fields (company name, start/end dates, fee, % share) from the uploaded PDF automatically — like the floor plan AI detection. This is aspirational for V1 but not guaranteed. The fallback is manual entry after upload. The feasibility needs assessment before it's scoped.
-
?
When does the planning simulation lock?
Confirmed: the simulation locks once a first real contract is activated. But what is the exact trigger — contract upload? Contract activation? What happens if the contract is uploaded but not yet activated? The lock state transition needs to be explicitly defined in the data model.
📋 Matt’s deliverable before July 21
Matt is travelling July 10–20. Before leaving, he will ship the contract/invite unification changes and deploy to production so Tony can demo and review the new flow. Next meeting moves to July 21.
Session 07 • June 15, 2026
Bookable Seats is the Unit.
Planning is Mandatory. Code Follows Clarity.
The first fully live-coded session — Matt building in real-time as the team walked through the host setup flow. Three things locked: planning is a forced sequential step after listing creation, bookable seats replaces square footage and points as the single unit of sale, and the host persona formally splits into two access tiers. Points are banished from the planning tab entirely.
📅 June 15, 2026
👥 Tony, Matt, Steve, Brandon, Rob
✍ Live coding session — app walking and iterating simultaneously
📌 Three structural decisions locked in one session
What was demonstrated
End-to-End Host Setup Flow — Live.
Matt walked the full host journey: new user → add property → create listing → planning tab → (future: invite member). The team reviewed each step in real-time and identified changes on the fly.
Property Setup
Property creation unchanged. The host type selector (building owner vs. lessee) was reviewed and refined: building owner section captures physical/amenity details only; host section captures financial and lease details. You always capture both, but the fields diverge by role.
Listing Creation + Units
Listing creation mostly stable. Validation bugs surfaced (sq ft increments, save errors) and were fixed live. Closed dates confirmed as a future-facing feature: default to location-based statutory holiday calendar (state/provincial level) based on building address.
Planning Tab — Major Redesign
The planning tab was rebuilt conceptually in real-time. Points and capacity multiplier were stripped out. Bookable seats became the primary input column. Monthly rate became the primary price input. The tab is now a clean quantity × rate model with calculated outputs.
Key decisions locked — June 15
Three Decisions That Change Everything Downstream.
Planning is Mandatory and Sequential
After listing creation, the host is forced into the planning tab — it is not optional. The rationale: a blank-slate host needs to understand their cost basis, capacity, and revenue plan before inviting anyone. Planning validates the business logic before members are added. Once a member is invited and locked in, their portion of the plan becomes immutable — only the unallocated portion remains editable.
Host Default = Licensee, Not Owner
The UI should default to the assumption that the host is a lessee of the space, with a checkbox for "I own this building." The more complex data capture scenario (lessee host + separate building owner section) is the common case. Building owner data = physical details + amenities. Host data = financial details + lease terms. Always capture both; if same entity, a "same as above" shortcut is sufficient.
🎯 The Planning Tab Column Spec — Locked
Column order: Bookable Seats (input) | % Share (calculated: seats ÷ total bookable capacity) | Monthly Rate (input: $ charged to this member) | Rate per Seat (calculated: monthly rate ÷ bookable seats)
Capacity cap: Cumulative bookable seats across all members cannot exceed total bookable capacity (physical seats × multiplier). The table blocks entry once you hit the cap.
Totals row: Sum of bookable seats, weighted-average rate per seat, total monthly rate. Plus an Unallocated Balance row showing remaining bookable capacity still available to sell.
What's removed: Daily points column, capacity multiplier display, square footage column. Points belong in a separate admin section when configuring the actual points allocation — not here.
What's retained from prior sessions: The 1.2× multiplier applies under the hood to calculate total bookable capacity. The planning tab just shows the result (e.g., 162 bookable seats) without exposing the formula.
The host user hierarchy — formalised
Two Host Roles. Different Access. Different Jobs.
The team formally split the host persona into two distinct user types with separate logins and gated data access.
Administrator / Power User
Sets up properties, manages portfolio, configures the planning and financial model. This is HQ Lite's primary customer — the person signing the contract with us and paying the license fee. They have full access to all configuration, financial data, and planning tools. Steve's "Alex" persona. The planning tab is their core product.
Property / Facility Manager
Day-to-day operational management of a specific property. Interfaces with members, manages check-in, handles day-to-day requests. Has a gated and narrower view of the data — cannot see or change the financial plan. Once the administrator locks the plan, the facility manager can only run within it. Different login credentials from the administrator.
💡 Approval Workflow Concept Identified (Not Yet Built)
The planning tab output is the document a host administrator would take for internal approval (CFO, board, etc.). Once approved and locked, the property manager cannot modify it — they can only operate within the plan. This implies a future
lock/approve state on the planning tab: editable → submitted for approval → locked. The facility manager sees the locked version only. This was identified but not scoped for V1.
Points vs. dollars — the clean separation
The Planning Tab Speaks Dollars. Points Live Elsewhere.
A key conceptual clarity emerged: the planning tab is a financial planning tool, not a points allocation tool. These are different products for different moments in the workflow.
Revenue recovery planning
How much space (bookable seats) am I selling, at what monthly rate, to which members? Does my total monthly revenue cover my obligation? This is a landlord's financial model — input costs vs. contracted income. No points here. No multiplier displayed. Just quantity × rate = revenue.
Capacity allocation and booking enforcement
How does the capacity multiplier translate to bookable seats? How are points distributed across the rolling 4-week window? What is each member's daily cap? This belongs in a separate admin section — not visible to members, and not cluttering the financial planning view. The multiplier is an operational detail, not a financial planning input.
The dynamic pricing communication problem
How Do You Sell Points to Someone Who Doesn't Want Points?
Rob surfaced the core marketing problem: a member signing up will ask "how many seats do I get?" and a percentage share or points allocation doesn't answer that directly. The team worked toward a resolution.
⚠ Open: Member-Facing Communication of Dynamic Pricing
The model sells
% capacity share, which translates to a
range of seats depending on which days members book (peak days = fewer effective seats, off-peak = more). Rob's position: if you don't explain this clearly, members will feel deceived. The team's answer: a
sensitivity analysis table in the member-facing contract or onboarding. Shows: "If you book all Mondays, you get X seats. If you book all Wednesdays, you get Y seats. Average across a normal week: Z." This translates the dynamic model into a concrete range that a decision-maker can approve. Not yet designed or built.
Open questions from this session
Four Things That Need Answers Before the Next Sprint.
-
?
When does the planning tab lock?
After first member is invited? After explicit "submit for approval" action? After a certain number of members are added? The locking mechanism needs to be defined before the approval workflow can be built.
-
?
Partial month point allocation
If a member joins mid-month, how is their point allocation calculated? Does the rolling 4-week window start from their join date? Does the host get a pro-rated month? This is a billing and points engine question that needs resolution before the points engine is built.
-
?
Entering existing tenants into the planning tab
A host who already has tenants needs to enter them before planning hypothetical new ones. The current flow assumes a blank slate. The team proposed: invite existing tenants through the member invite flow — their data then backfills and locks in the planning tab. The sequencing of this needs to be designed explicitly.
-
?
Sensitivity analysis design for member onboarding
The team agreed a range-based seat estimate is the right way to communicate dynamic pricing to members. But who generates it, where it lives (contract, onboarding screen, PDF export), and what the exact calculation is haven't been defined. This needs a UX design pass before it can be built.
Session 06 • June 9, 2026
License, Not Sublease.
The legal model is now the product model.
Steve walked through a real lease abstract (400 Bay St, Suite 1800) to ground the data model in actual commercial real estate practice. Three foundational decisions emerged: members are licensees not subtenants, included services belong at listing level not member level, and the existing codebase needs a "bookings → contracts" migration before the next feature sprint.
📄 Real lease abstract reviewed (400 Bay St)
⚖ License vs. sublease distinction locked
📌 Included services: listing-level, not per-member
🛠 Bookings → Contracts migration identified
The foundational legal distinction
Members Are Licensees. This Changes Everything.
⚖ License vs. Sublease — locked Jun 9
A sublease transfers occupancy rights — the subtenant gets defined square footage, their own lease term, and participates in guarantees. A license grants access to use a space without transferring any rights of tenancy.
HQ Lite members are licensees. The primary tenant (e.g., Acme Financial) retains all lease obligations and guarantees. The member gets access, not occupancy rights. "Like renting a car — you can drive it, but you can't take it in for new tires."
Access to use the space
Points allocation (% of total pool)
Included base services (see below)
A defined term within the head lease window
Right to alter the space
Right to sublet or re-license
Participation in head lease guarantees
Right to renew or extend beyond head lease
Signage or naming rights
Member contract = license agreement, not sublease
Term field must be bounded by head lease expiry
License fee = lump sum (not $/sq ft)
No guarantee pass-through fields needed
Included services are standardized per listing
Included services — listing level, not member level
What Every Member Gets. No Exceptions, No Customisation.
Steve's rule: if you give one member something, you give all members the same thing in proportion. Included services belong on the listing, not the member contract.
✓
Desks and chairs (proportionate to % share)
✓
Internet (shared backbone, own access point/SSID/firewall)
✓
✓
+
After-hours HVAC (same rate for all tenants — host profits if multiple use simultaneously)
+
+
+
🎬 The movie theater model
"You buy a ticket, you get to see the movie. Popcorn is optional. You don't need parking to watch the movie." The all-inclusive license fee covers everything needed to use the space at base level. Extras are à la carte but never required.
Data model — what's changing
The Critical Codebase Shift: Bookings → Contracts
Tony identified this live. The current model is booking-centric (member finds space, books it). The real model is contract-centric (host creates a license agreement, which then governs what the member can book).
Booking-centric
Property → Listing → Booking. The member picks space and books it. Terms are implicit. No contract layer. This was the two-sided marketplace assumption — members discover and book freely.
Contract-centric
Property → Listing → License Contract → Booking. The host creates a contract with explicit terms (sq ft, % share, term, license fee). The contract governs what the member can book. Bookings still exist but are bounded by the contract.
-
1
Property + Listing: minor changes only
The Property → Listing hierarchy is confirmed correct. Minor field updates: add "license terms" (renamed from "lease terms"), floor plan must show only the space being put into HQ Lite. Multi-floor listings supported if same terms apply — just update sq footage and floor range.
Minor update
-
2
Add Contract layer between Listing and Booking
New entity: LicenseContract (or MemberContract). Fields: licensed premises (sq ft), % share of listing, term start/end (bounded by head lease expiry), license fee (lump sum), included services (inherited from listing). One contract per member per listing. This is the missing middle layer.
New — required
-
3
Bookings remain — but bounded by the contract
The booking flow (member admin locks in seats for a day) still exists. But a booking can only be made against an active contract. The contract's % share determines the member's points pool. No contract = no booking ability.
Refactor
Host type toggle
Tenant vs. Building Owner — Same Data, Different Labels
🔄 The toggle decision
Both host archetypes (head landlord = Bental Green Oak, subtenant = Acme Financial) use identical data structures. The only difference is nomenclature — "minimum net operating income" vs. "gross rent," etc. Solution: a toggle at the top of the listing setup:
"Are you a building owner or a tenant?" Same fields, different labels. Like billing address vs. shipping address — click "same as" if they match.
Multi-floor and partial-floor listings
Floor Plan Must Reflect Only the Licensed Space
List only what's going into HQ Lite
If a tenant keeps half a floor for themselves, the floor plan upload should show only the licensable half. The system can't police a demising wall — the host is responsible for accurate representation. Multiple floors with identical terms can be one listing (update sq footage + floor range). Different layouts or terms = separate listings.
Floor plan upload needs multi-floor support
Currently the system assumes one floor plan per listing. Multi-floor scenarios (e.g., floors 18–19 as one listing, or a cafeteria/amenity floor shared across all listings) require the floor plan component to support multiple maps per listing. Tony flagged this as a gap during the demo.
What stayed open
Carrying Forward
Revenue model — how does HQ Lite charge?
Steve raised: should members pay HQ Lite a fee to access the search/discovery layer? Host fee model is assumed but not defined. Brandon taking on revenue model. Decision: keep launch pricing simple — "if you do this, you get this, here's the charge." Japanese car model: fixed packages, not à la carte.
Line-by-line MVP scope review
Tony and Matt to go through the full data model and UI field by field to confirm what's in MVP vs. later. This is the next scheduled sync. Goal: ensure all the contract fields, included services, and license terms are fully specified before Matt builds them.
Session 05 • June 2, 2026
Architecture Before Code.
The team calls a productive stop.
The team walked through the live product, surfaced UX confusion in the listing setup flow, and collectively decided to stop coding until the full product architecture is diagrammed. A three-section framework emerged: Planning & Marketing, Contracts & Revenue, Reporting. Critical constraints were also locked: multiplier range 1.2–1.6 enforced by the platform, conference rooms excluded from points, and planning is always separate from actual contract data.
🏃 Live demo + QA review
📄 3-section product framework defined
▶ Mermaid diagram + spreadsheet required before next sprint
What was demonstrated
The Live Host Flow
Matt walked the full host creation sequence. It works — and exposed where the UX needs structure.
-
✓
Host account + property creation
Full flow from account creation to "One South Wacker" property, with listing "Suite 1250" created and saved in draft state.
-
✓
Floor plan → seat detection working
44 physical seats detected (counting workstations, conference rooms, huddle rooms as one unit). Multiplier applied: 44 × 1.2 = 52 bookable seats. Four-week calculator shown inline.
-
⚠
Credits/points system: not yet functional
Business logic not programmed yet — credits exist as a field but are not being calculated or tracked. Explicitly flagged as an open item.
-
⚠
Two QA blockers flagged
One item blocks QA automation. One takes UI elements outside the browser window. Both need Matt's attention before QA can be completed.
-
📌
Tab navigation: wizard vs. persistent tabs
Current flow auto-creates a listing sequentially. The team aligned that listing tabs should be persistent informational sections the host can return to at any time — not a one-time wizard.
The major architectural decision
Three Sections. Two Modes. One Clear Boundary.
Steve proposed and the team confirmed this structural model for the host-side product.
Planning & Marketing
Three sequential data entry flows: Property setup (address, floors, amenities), Listing setup (floor plan, financial details, lease terms), Planning tab (capacity multiplier + member scenario modeling). Done once. Rarely changed. The basis for the economics and the listing page.
Contracts & Revenue
Member registration flow. Actual contracted members locked in here — not hypothetical. Once accepted, member data auto-populates back to the planning tab as a real constraint. Revenue metrics derived from this section. The line between planning and reality.
Reporting
Pulls from actual contracts and data. No data entry. Financial metrics, utilisation, portfolio overview. Identified as a future/iterative build. Different persona: finance, portfolio manager. The analytics tier unlocked once data exists.
📌 Key insight from this session
The planning tab is fundamentally different from data entry. Planning pulls from actuals + allows hypothetical scenarios. Actuals drive contracts. Contracts feed reporting. These three modes must not be mixed in the UI — if they are, hosts will lose track of what's real. Steve articulated this cleanly: "you're mixing actuals and calculators and putting it all in a big bag."
Constraints locked in this session
Platform Rules — Not User-Adjustable in V1
1.2× to 1.6× maximum
Capacity multiplier is not freely adjustable by the host in V1. The platform enforces a floor of 1.2× and a ceiling of 1.6×. Reason: a host setting a multiplier of 9 makes the product look unrealistic and damages trust. Syngenta analogy: "we drive the metrics, not the user."
Ancillary — not part of the points system
Conference rooms, huddle rooms, and phone booths are ancillary. Points are calculated on individual seat types only: benches, cubes, offices. Conference room management (booking conflicts, no-shows) is the host's problem — handled via external tools (Robin, Outlook) not HQ Lite.
V1 is 1:1 flat. Office ≠ cube weighting in V1+
Offices cost more points than cubes/benches — but this complexity is deferred to V1+. V1 treats all seats equally to reduce configuration burden. Easy to layer on a multiplier per seat type in a future iteration once the base model is validated.
Planning tab uses actuals + allows hypotheticals
The planning tab always shows real contracted members (locked, not editable) + a free-form section for hypothetical new members. Total cannot exceed 100% capacity. This is a sensitivity tool, not a data entry form. Actuals can only change via the Contracts & Revenue section.
Tab structure for listing setup
Proposed Sequential Tab Flow
Agreed in principle. Needs Mermaid diagram to confirm before coding.
-
1
Property Details
Host name, address, location city, parking, floors. Basic listing data — the info a member or broker would search by. Same data set regardless of one-sided vs. two-sided marketplace model.
-
2
Financial Details
Floor plan upload → seat detection. Head lease cost, gross rent, sq footage, operating costs. Steve's Excel tab 1 structure. This feeds all downstream calculations.
-
3
Variables Input
Capacity multiplier setting (1.2–1.6 range). Lease term. Any other config variables needed for the economics calculation. Inputs here feed the economics playground.
-
4
Economics Playground
Output view: toggle multiplier, see impact on revenue, margin, bookable seats, points pool. Planning member scenarios (hypothetical member 1 at X%, member 2 at Y%). This is the sensitivity tool — not a data entry form. "Move the slider until you hit 25% return, then present it to your boss."
-
5
Member Registration (separate section)
This is not part of the listing wizard — it's Section 2 (Contracts & Revenue). Once a member deal is struck, host goes here to register the actual member. This auto-updates the planning tab with a locked contracted row.
⚠ Matt's concern — validate before coding
Matt raised a valid concern: the team is still iterating on the model while Matt is coding after every weekly call. The result is rework. The explicit team decision in this session:
produce the Mermaid diagram + finalize the spreadsheet BEFORE Matt writes any new code. Tony and Matt to sync on the diagram. Steve to continue layering detail in the spreadsheet.
What stayed open
Open Questions Carrying Forward
Where does points allocation display in member flow?
Steve noted the host allocates points; the member uses a points calculator to figure out how to spend them. The exact hand-off point — where the member-facing dashboard pulls from the host's allocation — is not fully specified.
Planning tab placement: under listing or at property level?
Agreed that V1 planning is per-listing (not per-property). Portfolio-level aggregation across listings is explicitly deferred. But the UI placement and navigation path for a host with multiple listings was not resolved.
User personas per section differ — who sees what?
Steve noted brokers use Planning & Marketing, property managers use Contracts & Revenue, and finance uses Reporting. Persona-to-section mapping is not captured in PERSONAS.md. This affects permission scoping and onboarding flow for multi-user host companies.
QA blockers for Matt
Two items need to be triaged with Matt: (1) the blocker preventing QA automation from running, and (2) UI elements rendering outside the browser window. These are P0 before any new feature work.
Strategic Synthesis • Forward Path • Updated through August 18, 2026
Where you are.
What to build. In what order.
Fourteen sessions distilled into one actionable view, now reconciled against the Aug 18 Activity List: 176 activities across four personas, 124 built, 52 tagged as gaps. The host side, the points engine and the guest booking path are built. The thin areas are host lifecycle (nothing built), operator tunability (every point factor is a code constant requiring a redeploy), reporting on both sides, and soft delete. The commercial model landed on Aug 10: dollars per square foot, roughly 40% of the value recovered, sold through a brokerage channel HQ Lite does not pay for. The five-week plan agreed Aug 18: build the workflows, harden the platform, hand-process the floor plans.
Current state — reconciled against the Aug 18 Activity List
What's Built. What's Missing. What's Decided.
✓
Host auth, property, listing creation — 52 of 70 host activities built
✓
Floor plan upload, extraction job, draft review, accept → auto-creates bookable units
✓
Guest booking path — 33 of 37 activities, the most complete persona
✓
Visual seat selection on the floor plan (click, drag, shift multi-select)
✓
Points engine: matrix pricing, capped weekly accrual, 20-day horizon, balance replay
✓
LicenseContract: create, invite, auto-activate, exhibit table, terminate with history
✓
Capacity config: physical vs. bookable seats, 1.2× uplift, locks at first contract
✓
Member calendar planner (4-week × Mon–Fri) with autosave and over-budget warning
✓
Per-guest listing access control + company-level scoping
✓
Super admin panel (Matt, Aug 18): real auth, TOTP MFA, 30-day soft delete, audit log
✗
Host lifecycle — nothing built (0 of 6). No admin-created host, no host invite, no enter/modify host info, deactivate is Cognito-disable only, GDPR delete is API-only (Aug 18)
✗
Operator tunables have no UI. Over-sell factor and every point factor are code constants — changing a day weight is a code change plus redeploy (Aug 18)
✗
Sensitivity analysis is CLI-only (npm run simulate:points) — needs a UI, settable globally and per-account (Aug 18)
✗
Soft delete for properties and listings — currently hard delete; kills history and analytics. Soft delete exists for users only (Aug 18)
✗
Notification subsystem does not exist — now a hard dependency of delete (members must be told their bookings were cancelled) (Aug 18)
✗
BUG: PNG/JPG floor plans silently fail in production — OCR gated to macOS. No error surfaced to the host (Aug 18)
✗
BUG: a listing can go ACTIVE with no floor plan — no gate, dead-end risk for members (Aug 18)
✗
BUG: points balance miscalculation — seat count conflated with points multiplier. Blocks all testing (Aug 4 / Aug 10)
✗
BUG: floor plan and file linkage broken in the live build (Aug 4)
✗
Four orphaned features — built but unreachable: favourites page, block reservation, company bookings list, member utilization table (Aug 18)
✗
Dead legacy credits and subscription screens still in the UI — flagged for removal (Aug 18)
✗
Bidirectional seats ↔ points conversion panel — input seats, output points spent and seats remaining, shown at every decision point (Aug 18)
✗
Bulk member operations: CSV upload, 8B bulk quota management, 9B bulk removal (Aug 18)
✗
Member pause / disable status — beyond active and terminated, so hosts can suspend without deleting (Aug 18)
✗
Edit a booking without cancellation penalty when changed well in advance — today the only path is cancel and rebook (Aug 18)
✗
Square-footage provisioning and hard cap that blocks further listing creation once exceeded (Aug 18)
✗
Multiple floors per listing — a modelling gap, not just UI. Live today at Brandon’s own office (Aug 18)
✗
Amend an active contract — not built; formal amendment workflow with member notification (Jul 6)
✗
Upload signed contract PDF — UI stub, “coming soon” (Aug 18)
✗
Host reporting: member list with terms, projected revenue, upcoming expiries, seat usage by member, daily on-site roster, churn alert — 2 of 10 built (Aug 18)
✗
Super admin reporting: host list with terms, projected contract revenue by host, upcoming contract expiries (Aug 18)
✗
Member Groups for bulk recurring reservations — V2, but the underlying need is real (Aug 18)
✗
Statutory holiday auto-defaults for closed dates (Jun 15 / Aug 18)
✗
Restrict member invites to a corporate email domain (Aug 18)
✗
Property photo upload — UI stub, cloud storage not connected
✗
Two-platform split: admin block booking (points-consuming) vs. individual desk selection (freely adjustable) (Aug 4)
✗
Block seat cutoff: unbooked seats return to the general pool ~1 week out; no-shows forfeit (Aug 4)
✗
Cancellation tiers: >1wk self-serve refund / 2–3 day admin override / day-of forfeited (Aug 4)
✗
Calendar UI: “Week 1” → “Current”; day multipliers in column headers; balance loud at top (Aug 4)
✗
Floor plan colour-coding: internal seats named, external company seats anonymised — GDPR-safe (Aug 4)
✗
Terms and conditions, legally approved privacy agreement, host license agreement — all required pre-launch (Aug 18)
✗
SOC 2 readiness (long-term, most complex), GDPR and PIPEDA handling (Aug 18)
✗
Support impersonation / act-on-behalf-of from the admin interface (Aug 18)
✗
Low-friction issue capture — a “dislike button” to replace email chains during testing (Aug 10)
✗
Boilerplate LOI + license template in-platform — deferred Aug 10, sophisticated users don’t need it yet (Jul 14)
✗
Badge/swipe entry audit log for host enforcement of unbooked space (Jul 14)
✗
Dynamic day repricing and bad-actor pattern detection (Jul 27)
✓
Points formula: 1:1 flat (earned), variable (spent)
✓
Rolling 4-week window (not calendar month)
✓
Max 80% daily cap (no member can lock out others)
✓
Host input: gross rent + sq ft → system calculates $/sq ft
✓
V1 baseline: all days equal, seat = seat
✓
Multiplier platform-enforced: 1.2×–1.6× range only (Jun 2)
✓
Conference rooms = ancillary; points on seats only (benches/cubes/offices) (Jun 2)
✓
3-section architecture: Planning & Marketing | Contracts & Revenue | Reporting (Jun 2)
✓
Planning = actuals (locked) + hypotheticals (editable); never feeds contracts directly (Jun 2)
✓
Members are licensees — no sublease rights, no guarantee pass-through (Jun 9)
✓
Included services at listing level — same for all members, proportionate to % share (Jun 9)
✓
Host type toggle: building owner vs. tenant — same data, different nomenclature (Jun 9)
✓
License fee = all-inclusive lump sum (not per sq ft); extras charged separately (Jun 9)
✓
Planning is a mandatory sequential step — forced after listing creation, before member invite (Jun 15)
✓
Planning tab unit = bookable seats (not sq ft, not points) — % share is a calculated output (Jun 15)
✓
Planning tab columns: Bookable Seats | % Share (calc) | Monthly Rate | Rate/Seat (calc) | Unallocated Balance (Jun 15)
✓
Points + multiplier removed from planning tab — belong in separate admin/points config section (Jun 15)
✓
Host user split: Administrator (full access, portfolio) vs. Property Manager (gated, day-to-day ops) (Jun 15)
✓
Default host = licensee/lessee; building owner section = physical details only; host section = financial details (Jun 15)
✓
Billing = calendar month (not rolling 4-week window) — 4-week window is for points only (Jun 15)
✓
Closed dates: auto-populate from location-based statutory holiday calendar (state/provincial) (Jun 15)
✓
Member invite + contract creation collapsed into one screen: upload PDF + fill operating details (Jul 6)
✓
Host type toggle (owner vs. lessee) moves to listing level — different field sets per type (Jul 6)
✓
Head lease terms captured at listing level (not property) — start/end date, base rent, opex, sq ft (Jul 6)
✓
License start date defaults to next month 1st — cannot exceed head lease end date (safeguard) (Jul 6)
✓
Member 3-tier hierarchy: Super Admin (full) / Admin (allocated seats) / User (individual booker) (Jul 6)
✓
Contract locked after activation — changes require formal amendment workflow with member notification (Jul 6)
✓
Last host screen = first member screen (same contract data, different edit rights per party) (Jul 6)
✓
Terminology: “Member Agreement” (marketing), “License Agreement” (legal), “Head Lease Terms” (host-level) (Jul 6)
✓
Points matrix: day × seat type. Anchor = standard desk, Tuesday = 1 pt. Mon 0.8×, Wed 1.3×. Office seat 1.5× on top. Platform-set (Jul 21)
✓
Capacity multiplier + day weights controlled by HQ Lite only — hosts see, cannot edit (Jul 21)
✓
Rolling window = 20 working days (not 28). Weekly replenishment. Contracts start/end Monday/Friday (Jul 21)
✓
Conference rooms parked from V1 points engine — shared amenity, host-policed, existing tools handle booking (Jul 21)
✓
Member scenario planner = Brandon’s spreadsheet logic in software (daily + 20-day view, town hall planning) (Jul 21)
✓
All member users share corporate email domain; guest invites separate with ~10-day data expiry (Jul 21)
✓
Physical access list (who is on-site daily) = V1 baseline requirement; badge/access integration = V2+ spoke (Jul 21)
✓
Hub-and-spoke revenue model confirmed: core booking = hub; analytics, conference, access control, vendor deals = spokes (Jul 21)
✓
Points consumed at booking, not day-of-use — locks in reservation and prevents balance ambiguity (Jul 27)
✓
Cancellation: partial refund if cancelled 24hrs+ in advance; forfeited on no-show (Jul 27)
✓
Weekly replenishment: +50 pts/wk (for 10-seat member); balance capped at starting pool of 200 — tops up to max, not beyond (Jul 27)
✓
Thursday day weight confirmed at 1.1× — updated in spreadsheet during Jul 27 call (Jul 27)
✓
Bottom table (tenant outcomes view) = contract exhibit; top table (raw multipliers) = internal/host-only — not shown to members (Jul 27)
✓
Min-of-one debate resolved: floor unnecessary — math works without it; single-seat member can balance across cheap days (Jul 27)
✓
Dynamic day repricing direction set: if a day is consistently overbooked, raise its cost to push tenants to redistribute (Jul 27)
✓
Bad-actor monitoring: track repeat offenders and apply cost multipliers — game-dev “different server” model (Jul 27)
✓
Zero-sum day pricing: Mon–Fri weights sum to 5.0; AI-validated fail-safe: weekly cost total 125 > 120 points in circulation (Jul 14)
✓
Gemini formula baseline: 0.6/1.2/1.4/1.2/0.6 day weights; 15/30/35/30/15 point costs — mathematical overbooking limit built in (Jul 14)
✓
Permission tree confirmed: Host (top) → Tenant Super Admin → Admin (team) → Individual User; one more layer than Robin (Jul 14)
✓
Network isolation per tenant: private IDF closet + SSID; host provides single IP; each tenant’s employees log into own company network only (Jul 14)
✓
Enforcement: complaint system with one “gimme” for accidental entry; repeat violations charged double points or badge suspended (Jul 14)
✓
Points replenishment = “top up to cap” weekly (not flat +50): balance reaches 200 maximum, no more; confirmed by Steve (Aug 4)
✓
No hard booking caps in V1 — host is the adjudicator; “use it or lose it” for recurring empty reservations (Aug 4)
✓
Last month of term: no additional 200-point credit; renewal = new agreement + fresh allocation; bonus points = V2 idea (Aug 4)
✓
Block booking = points commitment (admin); individual desk selection within block = freely adjustable (end user) — hotel conference block model (Aug 4)
✓
AI stress-test plan confirmed: 3 personas (rule-follower, optimizer, host-resolver) to surface loopholes and generate host FAQ (Aug 4)
✓
Square footage is the pricing metric — not per seat. Charge ~40% of the value recovered ($5/sq ft recovered → $2/sq ft fee) (Aug 10)
✓
Per-seat licensing explicitly rejected: headcount is falling as AI replaces labour; tie price to economic value, not seats (Aug 10)
✓
Packaging: good/better/best tiers, marginal-rate volume discounts, bolt-ons as a third lever, land-and-expand from one property (Aug 10)
✓
Trials yes — but with a published price. Buyers will not commit resources to an unpriced product (Aug 10)
✓
Brokers are the distribution channel at zero direct cost — paid by the landlord, self-incentivised by dead space becoming leasable (Aug 10)
✓
Broker marketing and education is a real budget line even though commission is not (Aug 10)
✓
Test first, refine second — the written test guide becomes the permanent regression baseline and feeds automated tests (Aug 10)
✓
Collateral is both: a website front end and a portable 5–10 slide deck plus live demo. Sales playbook, not public marketing (Aug 10)
✓
Persona 1 renamed Super Admin and confirmed internal-only; hosts are invited, never self-serve (Aug 18)
✓
Cloud-only on AWS — on-prem and per-host isolated instances rejected, because members work across multiple host locations (Aug 18)
✓
Soft delete everywhere with a hidden trash bucket; delete must notify affected members (Aug 18)
✓
Contract start date is driven by the signed agreement date, not invite acceptance (Aug 18)
✓
Per-guest points accrual rejected as too complex — the Member Admin allocates, the guest books within an allowance (Aug 18)
✓
Cancelled bookings stay visible for auditability of forfeited points; a dedicated member-admin report may follow (Aug 18)
✓
Two-factor available by default for hosts — optional, not mandatory (Aug 18)
✓
PDF stays the V1 floor-plan format; DWG deferred to V2 despite being more automatable (Aug 18)
✓
Floor-plan automation deprioritised for five weeks — white-glove manual processing for the first ~20–50 clients, doubling as training-data harvest (Aug 18)
✓
Sales sequence redesigned so floor-plan ingestion is never hit live in front of a prospect: demo a sample, sign, then process their plan (Aug 18)
✓
Green-highlight overlay on the activity map marking every activity that affects the points calculation (Aug 18)
✓
A deliberate UI decluttering pass — remove duplicate views and dead legacy screens (Aug 18)
The points engine spec — buildable today
This Is the Formula. Wire It In.
Agreed May 26, refined Jul 21, confirmed by Steve on Aug 4. Model: capped accrual (like PTO), points-at-booking, host adjudicates — no hard caps. All mechanics locked.
🎯 V1 Points Formula (Confirmed Aug 4)
Pool: Contracted seats × 20 working days = starting balance. Example: 10 seats → 200 points on day one.
Replenishment: Weekly top-up to the 200 ceiling. You receive however many points are needed to reach 200 — not a flat +50. If balance is 190, you get +10. If balance is 50, you get +50. Never above 200. Like a capped PTO accrual.
Points-at-booking: Points deduct immediately when a booking is confirmed. Balance reflects reality at all times. No deduction on day-of-use.
Rolling window: 20 working days (4 weeks). Members can book any date within the forward 4-week window using their full available balance.
Spending: Variable — day multiplier × seat type multiplier. Standard desk, Tuesday = 1 pt. Office seat, Wednesday = 1.2 × 1.5 = 1.8 pts. Zero-sum design: weekly point costs sum to 5 — AI-validated fail-safe (125 total weekly cost > 120 pts in circulation) makes full simultaneous overbooking mathematically impossible.
Daily cap: No hard cap in V1. Host adjudicates booking conflicts. “Use it or lose it” for recurring empty reservations.
Contract constraints: All contracts start and end on Monday/Friday. No 200-point credit issued in the last month of term; renewal = fresh allocation.
Current build priorities — the five-week plan (post Aug 18)
Build the Workflows. Harden the Platform. Hand-Process the Floor Plans.
Matt’s prioritisation call on Aug 18 set the frame: “If we spent the next five weeks just working on the upload, I would say we’re spending our time on the wrong thing.” Floor-plan automation is deliberately parked. The work is workflow completion, platform hardening, and turning the Activity List orange to black — then the deferred UI walkthrough.
-
1
Fix the points balance and floor plan linkage bugs (Matt)
Bug 1: points balance miscalculating — seat count conflated with the points multiplier. Bug 2: floor plan and file linkage broken. Both seen live. Tony on Aug 10: “if none of the numbers match up you don’t know what you’re looking at and it doesn’t make sense to try to get into testing anyway.” Everything is gated behind this.
Immediate
-
2
Steve reviews the Activity List, then run the deferred UI walkthrough (all)
The walkthrough was pushed from Aug 18 so Steve (absent, and the only industry expert) and Matt (seeing the map for the first time) could review. Rob: “if we don’t spend the time now, I just think we’re going to spend more of it later.” Each participant takes a role — host, member admin, end user — and works the flow independently, side by side with the map.
Immediate
-
3
True up the codebase against the Activity List — drive orange to black (Matt)
52 of 176 activities carry a gap tag. Work the list column by column, resolve what is actually built versus what the map claims, and close the genuinely missing items. The Super Admin column in particular needs re-scoring after Matt’s panel demo invalidated it.
Immediate
-
4
UI decluttering pass — remove dead and duplicate views (Matt)
Matt: “there’s a lot of leftover mess after all the work that’s been happening… which is actually what I think the UI needs right now, which is a decluttering.” Remove the legacy credits and subscription screens. Wire up the four orphaned features that work but have no navigation entry: favourites, block reservation, company bookings list, member utilization.
Immediate
-
5
Soft delete everywhere + the notification subsystem it depends on (Matt)
Properties and listings are hard-deleted today, which destroys history and analytics. Move to soft delete with a hidden trash bucket and confirmation dialogs. Delete must then notify affected members that their bookings were cancelled — the notification subsystem does not exist and is now a blocking dependency.
Next sprint
-
6
Bidirectional seats ↔ points conversion in the member admin UI (Matt)
Rob: “if they don’t have the clear visibility link between the points and the seats, they’re going to spin.” Input is seats; output is points spent and seats remaining, priced by the day × seat-type matrix. Shown side by side at every decision point, not just on the balance card.
Next sprint
-
7
Calendar UI improvements + the two-platform split (Matt)
Rename “Week 1” to “Current”. Day multiplier and office premium in the column headers. Balance loud at the top. Then separate block booking (admin, points-consuming) from individual desk selection (end user, freely adjustable) — with unbooked block seats releasing to the general pool about a week out.
Next sprint
-
8
Cancellation tiers, booking edit, and member pause (Matt)
Cancellation: >1 week self-serve refund, 2–3 days member admin override, day-of forfeited. Editing a booking well in advance must not be treated as a cancellation. Add a member pause/disable state so hosts can suspend a member without deleting them. Open: is 24 hours the right refund cutoff, and does the host get an override?
Next sprint
-
9
Host lifecycle — the emptiest column on the map (Matt)
Zero of six activities built. Admin-created hosts, host invites, enter and modify host info, real deactivation, GDPR delete with a UI. Tony: “we’re middlemanning it right now… by manually creating the accounts and then operating those accounts.” Also decided: hosts are invited, never self-serve.
Next sprint
-
10
Give the operator tunables a UI (Matt)
The over-sell factor and every point factor are hard-coded constants; changing a day weight is a code change plus a redeploy. Sensitivity analysis is CLI-only. Both need a UI, settable globally and per-account. Also add the square-footage provisioning cap that throttles listing creation once a host exceeds what they paid for.
Next sprint
-
11
Bulk member operations (Matt)
CSV upload for adding members, 8B bulk quota management, 9B bulk removal. One-by-one entry breaks past roughly 50 users. Implementation options discussed: checkbox multi-select with search, or the same CSV used to delete by email.
Next sprint
-
12
Straw-man P&L against the $/sq ft model (Rob, Brandon, Steve)
Rob: “how many square feet do we have to get to, to break even?” Model the low end first. Steve supplies host-side economics for a typical 25,000 sq ft property; Brandon supplies top-down SaaS benchmarks (Autodesk) and bottoms-up per-head costs. Key unresolved input: support cost, which scales with non-paying end users.
Commercial
-
13
Broker channel validation — Lloyd Cooper and beyond (Steve)
Steve floats the concept with a top Cushman & Wakefield broker. Rob: “getting confirmation of somebody in the brokerage at that level is massive. That can just change everything in terms of our strategy.” Then decide the open question: direct to large landlords like Brookfield, broker-led for everyone else, or one strategy for all.
Commercial
-
14
AI stress-test: three personas against the booking model (Brandon)
Persona 1 books by the rules. Persona 2 maximises aggressively and hunts loopholes. Persona 3 plays host and adjudicates, generating an FAQ of recommended responses. Let the AI enumerate the gaming patterns so V2 rules are grounded in real abuse rather than speculation.
Brandon
-
15
Pre-launch legal and compliance artifacts (Tony + counsel)
Terms and conditions, a legally approved privacy agreement, and the HQ Lite to host license agreement — all required before public launch. Compliance load ranked on Aug 18: SOC 2 is the heavy long-term item, GDPR and PIPEDA are data-handling and right-to-be-forgotten, the US is least demanding.
Pre-launch
Non-obvious analysis
8 Things Fourteen Sessions Surfaced — Some Resolved, Some Still Open
The strategic and product risks the team touched across fourteen sessions. Items marked resolved have decisions locked. Open items still need a call or decision before shipping.
V1 "sophisticated host" target requires more polish than an MVP
Targeting Brookfield-tier hosts sidesteps the chicken-and-egg problem — but sophisticated real estate enterprises have procurement gates: SSO, audit logs, SLAs, data residency requirements. A working product isn’t enough for procurement sign-off. V1 needs a defined "enterprise readiness" bar before the first sales conversation. The SOC 2 skeleton is a start — it needs to become a checklist, not a folder of templates.
Two host archetypes resolved: same product, different field sets at listing level
May 26 surfaced two distinct host types: building owners (earning from owned space) and lessees/subtenants (offsetting a lease). Jul 6 resolved the UX question: the host type toggle moves to listing level (not property). Owners see: sq ft, financing/carrying cost, operating costs. Lessees see: head lease start/end, base rent, operating costs, sq ft. Same product — adaptive field sets. License start date is bounded by head lease end date as a safeguard. No separate products, no separate onboarding.
The points system needs a host-facing explainer before anyone configures it
The team spent four sessions working out the points formula. A host landing on the product cold will not have that context. If the first host misconfigures their capacity multiplier or % share allocations, the overselling model breaks and they’ll blame the software. A one-page visual explainer (physical seats → bookable seats → points pool → member allocations) needs to ship alongside the configuration UI, not after.
Terminology locked: two-register system for "agreement" and "points"
Jul 6 formalised the language split: "Member Agreement" is the marketing-facing term (onboarding, UI, pitch materials). "License Agreement" is the legal term (contracts, PDFs, formal correspondence). "Head Lease Terms" = the host-level arrangement with the building owner. For the booking engine: points (locked; replace any remaining "credits" references in CLAUDE.md and UI). Bookable seats = the planning tab unit. Billing = calendar month; points window = rolling 4 weeks. These are distinct and must not be conflated in UI copy.
The tenant side generates $0 revenue today but is the primary daily user
Tenants (Account Admins, Team Leads, Members) will be the most frequent product users by a large margin. They currently generate no revenue and have no financial incentive to advocate for HQ Lite internally. The future monetization paths (analytics, capacity calculators, cost-comparison tools) are all tenant-facing. Designing those hook points now — even if unmonetised in V1 — ensures the upgrade path exists when the time comes.
V1 has a low moat — the window to build defensibility is shorter than it feels
A well-built host management tool can be cloned in 6 months by a funded competitor. Tony named this in May 4. The strategic window to establish network-effect moat (V3) closes the moment a competitor with distribution decides to enter the space. V1 traction data is the asset that justifies moving to V2/V3. Every V1 feature should generate data that makes the marketplace case undeniable to the next investor or enterprise partner.
Architecture-first discipline worked — maintain it as build complexity increases
June 2 surfaced an honest dynamic: the product architecture was still evolving while Matt was coding after every weekly session. The explicit fix was: diagram first, spreadsheet finalised, then code. That discipline held through Jul 6 and produced the locked planning tab spec and contract model. As the build accelerates post-Jul 6 (five sprint items, Matt pre-vacation deadline), the risk of design-while-building returns. Any session that proposes new flows should produce a spec before Matt touches code.
The license model has liability implications the software must respect
June 9 confirmed members are licensees, not subtenants. But the codebase still models them as booking users. If the product allows a "member" to set terms, extend access, or claim rights beyond the license scope, HQ Lite could be facilitating an unlicensed sublease arrangement. The LicenseContract entity must enforce term boundaries (bounded by head lease expiry) and make clear the product is a license management tool, not a sublease platform. This is a legal exposure that needs a brief review before the first real pilot.
The defensibility ladder
V1 → V2 → V3: The Moat Builds in Stages
V3 — Two-Sided Marketplace with Network Effects
Hosts need HQ Lite to source tenants. Tenants need it to find space. Switching = losing your entire network. National vendor contracts layered on top. High switching cost on both sides.
🔒 High moat
V2 — Platform with Realtor / Broker Partnerships
Switching cost = re-establishing broker relationships + re-onboarding tenants. Moderate stickiness. Bypasses chicken-and-egg for hosts who can’t self-acquire tenants.
🔒 Medium moat
V1 — Best-in-Class Host Management Tool
Switching cost = re-entering tenant data + reconfiguring points allocations. Low moat. Cloneable. Necessary first step — but not a destination.
🔓 Low moat • Current
💡 The strategic imperative
Don’t stay in V1 longer than necessary. Every month of V1 usage generates utilisation data, booking patterns, and host ROI proof points that are the raw material for the V2/V3 pitch. The goal of V1 is not to perfect the tool — it’s to generate the evidence that the model works at scale.
The full build roadmap
Sequenced by Dependency
Green = must-have for V1 done condition. Yellow = V1+. Grey = V2/V3.
Listing Setup
Remove rate/day • Add gross rent + sq ft + term • Auto-calc $/sq ft • Capacity multiplier 1.2×–1.6× (platform-enforced) • Show bookable seats + pts pool • Save-progress (not wizard)
Economics playground (slider + live output) • Operating cost breakdown fields • Scenario planner
Multi-listing bulk import • Integration with property management systems
Points Engine
% share → pts allocation on invite • Rolling 4-wk balance • 80% daily cap • Booking blocked at budget limit • 1:1 flat V1 baseline
Day-of-week weighting (Mon 0.8×, Wed 1.4×) • Overuse surge pricing (exponential above allocation)
Reputation scoring • Dynamic allocation from historic usage • AI-driven load balancing suggestions
Dashboards
Global floor view: real-time seats booked/available • Member: pts balance + rolling usage • Host: member utilisation table
Host revenue recovery view (actual vs. projected) • Member cost-comparison calculator (vs. direct lease)
Analytics tier (premium unlock) • Building valuation impact calculator • Portfolio-level aggregation
Host Core
✓ Invite flow shipped • LicenseContract entity (sq ft / % share / term / fee) • Included services on listing • Host type toggle (owner vs. tenant) • Planning tab: actuals locked + hypotheticals editable
Lease abstract storage • Critical date alerts (90-day renewal notice) • Boilerplate license agreement template • Multi-user host company (5+ leasing people + brokers)
Payment facilitation • Automated invoicing • Portfolio manager role
GTM
✓ Steve’s Excel model (in progress) • Host pitch: $1.05M nut → $1.29M recovery • Mermaid diagram (Tony + Matt) • WeWork benchmark documented
First host pilot (Brookfield-tier) • Enterprise readiness checklist • Points explainer one-pager for host onboarding • UI whiteboard sessions for navigation options
Realtor/broker partnerships • Two-sided marketplace • National vendor contracts
Where decisions need to be captured in the repo
Documentation Gaps — Before the First Pilot
Most of the business logic agreed across four sessions is not in any project doc. Every undocumented decision is a future support ticket or re-debate.
| Decision / Artifact | Where it belongs | Status |
| Points formula (3,240 pts / 4-wk; rolling window; 80% daily cap; 1:1 flat V1) |
docs/BOOKING_RULES.md — new "Points Engine" section |
Not documented |
| Terminology lock: "points" not "credits"; "4-week period" not "monthly" |
CLAUDE.md Core Domain Concepts • shared across all docs + UI |
Drifting across sessions |
| Listing field spec (remove rate/day; add gross rent + sq ft + term) |
docs/MVP_TASKS.md — immediate P0 task for Matt |
Agreed May 26, not captured |
| Two host archetypes (head landlord vs. subtenant) and their different value props |
New docs/BUSINESS_MODEL.md — two-archetype section |
Surfaced May 26, not documented |
| 6-persona hierarchy and permission cascade |
docs/PERSONAS.md — expand from 2 to 6 personas with cascade table |
Partial (journey map only) |
| V1 / V2 / V3 versioning strategy and entry criteria |
docs/DECISIONS.md — new ADR: "Tool before marketplace" |
Not captured |
| Oversell model and throttle rules (max 1.2× enforced by platform) |
docs/BOOKING_RULES.md — "Oversell Policy" section |
Not documented |
| Tiered SaaS feature gating (base / mid / premium) |
docs/DECISIONS.md — ADR: "Tiered feature gating strategy" |
Discussed, not written |
| WeWork competitive positioning ($54/day, 25% cap vs. HQ Lite model) |
New docs/COMPETITIVE.md |
Discussed, not written |
| Revenue model (Steve’s Excel: $1.05M nut → $1.29M recovery, building valuation lift) |
New docs/BUSINESS_MODEL.md — financial model section |
In Excel only (not in repo) |
| 3-section architecture: Planning & Marketing | Contracts & Revenue | Reporting (Jun 2) |
docs/ARCHITECTURE.md — new "Host Product Architecture" section |
Agreed Jun 2, not captured |
| Multiplier platform-enforced 1.2×–1.6× range; conference rooms excluded from points (Jun 2) |
docs/BOOKING_RULES.md — "Platform Constraints" section |
Agreed Jun 2, not captured |
| Listing tabs: persistent informational sections (not a wizard); save-progress required (Jun 2) |
docs/MVP_TASKS.md — update listing setup UX task + docs/DECISIONS.md |
Agreed Jun 2, not captured |
| Persona-to-section mapping: brokers → Planning, property managers → Contracts, finance → Reporting (Jun 2) |
docs/PERSONAS.md — add section-access column to persona table |
Surfaced Jun 2, not documented |
| LicenseContract entity: fields, constraints, relationship to Listing and Booking (Jun 9) |
docs/DATA_MODEL.md — new LicenseContract section + ERD update |
Agreed Jun 9, not captured |
| License vs. sublease distinction and legal scope of HQ Lite (Jun 9) |
New docs/LEGAL_MODEL.md — define what the product is and is not from a legal standpoint |
Critical — not documented anywhere |
| Included services: listing-level, standardized, proportionate to % share (Jun 9) |
docs/DATA_MODEL.md — Listing entity, included services field spec |
Agreed Jun 9, not captured |
| Host type toggle: building owner vs. tenant — same data, different labels (Jun 9) |
docs/DECISIONS.md — ADR: "Single data model, persona-toggled nomenclature" |
Agreed Jun 9, not captured |
V1 done condition
One host. Three members. Points enforced. Dashboard showing utilisation.
Host flow: A host enters their space (gross rent, sq footage, lease term, floor plan). The system calculates 162 bookable seats, sets the default 1.2× multiplier, and shows total points pool (3,240 pts / 4-week period). Host invites 3 members with % shares (e.g. 20 / 50 / 15). System allocates points accordingly and displays remaining capacity (15% unsold).
Member flow: Each member sees their points balance, can book desks within their daily budget, is blocked when they hit the 80% daily cap, and watches their rolling 4-week balance update in real time.
Host dashboard: Shows each member’s % share, points used vs. allocated this period, and total floor occupancy %. Confirms the 20% oversell margin is generating incremental recovery above the gross rent baseline.
When this loop closes end-to-end without a spreadsheet — V1 is done. Everything else is V1+ or later.