Atelier House HospitalityOperations Dashboard · v2 Restaurant Intelligence Plan6 Venues / 2 Currencies

From daily status board to a restaurant intelligence cockpit.

The current dashboard answers what happened. The next version answers what happened, why, how confident we are, what to do, and what the AI should remember next time — venue by venue, market by market.

Is this miss real, or just noise? z = −2.3σ · ALERT
ALERT ▲ ALERT ▼ EXPECTED · same-weekday median NORMAL BAND ± 1.5σ TODAY
The whole plan in one picture: stop reporting a bare percentage. Show where today falls inside the venue's own normal range for this weekday — and only raise a flag when the signal is real.
Scroll
The reframe

The review is strong. It needs sequencing, correction, and a way for the AI to actually learn.

The strategic review you received gets the instincts right — same-weekday benchmarking, calendar-weighting, variance decomposition, venue-specific reading, disciplined AI confidence. Four gaps stop it short of buildable. This document closes them.

Gap 01

No prioritization

~400 KPIs, all treated as equal. That hides the ten things that move decisions. We add an honest value-vs-effort ranking.

Gap 02

Skips the foundation

It says "import X" repeatedly without fixing how data arrives. Messy exports + free-text notes are the real bottleneck. No feature beats the data contract underneath it.

Gap 03

Overstates the imports

Weather is daily and cheap. Tourism data is monthly and lagged — context, not a signal. Food-cost, labor, CRM each need infrastructure you don't yet have.

Gap 04

The AI never learns

It lists a hypothesis tracker but nothing checks whether a call was right. An AI never told it was wrong never improves. We close the loop.

The path

Fix the data contract → add cheap statistical upgrades (bands + variance bridge + calendar-adjusted forecast) → make the AI a narration layer over deterministic metrics, with memory and an evaluation loop → then selectively layer in weather, calendar, and the SoBo 20 fee engine. Defer the food-cost, labor, CRM, marketing-attribution, and predictive clusters until their data sources exist.

Diagnosis

Keep what's right. Correct what's off.

Validated — keep, don't rebuild

  • BaselineSame-weekday, same-daypart run-rate. Tuesday lunch and Friday dinner are different businesses; the dashboard already avoids the beginner's error of comparing them.
  • ForecastingCalendar-weighting the month. The best idea in the review, and the direct answer to how longer / weekend-heavy months move revenue.
  • ExplanationVariance decomposition. "The miss was volume, not check quality" is what turns a status board into intelligence.
  • DisciplineAI confidence + Facts / Interpretation / Actions. The right guard against a model sounding certain on one day of data.
  • IntegrityLeakage needs classifying, and currencies never sum. A VIP comp, a platform promo, and a staff error are three things wearing one number.

Corrected — where I push back

  • RigorPoints hide the answer to "is this real?" With ~6 samples a single run-rate number is noise. Report a band and a z-score, not a bare percentage.
  • MarketDubai's premium block is Thu–Fri–Sat, not Fri–Sat–Sun. The review used the wrong calendar for a UAE group. This actually strengthens your month-shape instinct (see below).
  • Scope"Owner EBITDA" and "theoretical food cost" aren't daily-feed metrics. They need cost accounting and inventory integration — separate projects, not dashboard tiles.
  • DataTourism / hotel macro is monthly and lagged. Treat it as a slow seasonality prior, not something you check each morning.
  • Learning"Gets smarter over time" needs a mechanism. Without evaluation the AI accumulates guesses, not knowledge.
Correction in focus

July 2026 is a calendar tailwind — for the right market

A month is a weighted calendar, not a smooth block. July 2026 opens on a Wednesday and carries five Wednesdays, five Thursdays, and five Fridays. For Dubai venues, where the weekend socially runs Thursday night onward, that is two of the three premium nights landing five times. For SoBo 20 in Mumbai, the Saturday count matters more.

Premium-night density · Dubai lens
Dubai premium night (Thu·Fri·Sat) Standard trading day
5
THU
5
FRI
4
SAT
Calendar Quality — Dubai
WEAK NEUTRAL FAVORABLE
Why it matters

"Premium day" must be defined per market and per venue, not with one generic weekend rule. The same month is a tailwind for a Dubai fire-grill and roughly neutral for a Mumbai hotel restaurant — and the forecast has to say so before anyone reads into the numbers.

Method

Four mechanics that do most of the work.

These are cheap to build, run on data you already have, and carry the largest interpretive lift. Each replaces a blunt number with a decision.

01

The band — "is this miss real?"

For every venue × weekday × daypart, compute a robust centre (median) and dispersion over the trailing comparable days. Replace the single expected number with a normal band, and classify each posting by how far outside it falls.

Control chart · same-weekday history HIGH LOW Prior same weekdays → today NORMAL ± 1.5σ EXPECTED (median) WATCH 1–2σ ALERT > 2σ −13% "down 13%" alone says nothing — −2.3σ says: real signal
Small-sample guard: fewer than ~6 comparable days → widen the band, flag low confidence, and fall back (venue same-weekday → venue any-day scaled → analog venue → manual target).
Effort

Pure math on existing data. The single highest-ROI change — it stops the dashboard flagging normal variance and stops it burying real problems.

02

The variance bridge — "why did it miss?"

Decompose the gap between expected and actual net into additive drivers that reconcile. The AI then narrates a bridge it did not have to compute.

Waterfall · net sales vs expected Expected 40.3K − covers −5.4K + APC +1.1K − mix + leakage Actual 34.9K
Reads in one line: "Missed on volume (−5.4K covers), not check quality — APC actually held. Ask what suppressed demand, not what went wrong at the table."
Payoff

Turns every "−13%" into a diagnosis. Covers-down vs check-down are opposite problems with opposite fixes — the bridge makes the AI say which one.

03

Calendar-adjusted forecast — "are we actually behind?"

Replace target × days_elapsed ÷ days_in_month with the sum of each day's own expected value. Early-month "behind" is often just a weekday-heavy opening, not a problem.

Cumulative pace · month to date Day of month → Naive linear pace Calendar-weighted expected today naive says "behind" calendar says "on track" — premium nights still to come
Forecast_month_end = Σ actual(elapsed) + Σ expected(remaining). Factors start neutral at 1.0 and are learned from history — presented as estimates with priors, never as magic numbers.
Your question

This is the direct answer to how longer and weekend-heavy months move revenue: the month's shape is priced in, so a slow weekday opening no longer triggers a false alarm.

04

Two-layer AI + the evaluation loop — "how it gets smarter"

The language model should never compute variance or decide significance — it drifts. Code does the numbers; the model narrates, remembers, and proposes. Then a loop checks whether it was right.

Architecture · deterministic → narrated → evaluated LAYER 1 · CODE Metrics engine band · z-score variance bridge context join facts LAYER 2 · LLM Narration prioritise · explain assign actions set confidence MEMORY Venue profile + daily record read / write OUTPUT FACTS INTERPRETATION CONTEXT ACTIONS CONFIDENCE + HYPOTHESIS EVALUATION Was it right? hit-rate · retire or confirm verified hypotheses tune next forecast — the system accumulates knowledge, not guesses
Result: summaries become consistent, auditable, far cheaper in tokens — and genuinely improvable, because the reasoning inputs are stable and the outputs are scored.
The unlock

Trust is earned, not assumed. "This model's Inja cancellation calls are right 8 of 10 times" is a sentence you can only write once the loop exists.

Priorities

Value against effort — the ranking the review lacked.

Every item placed by decision-impact and build cost. Hover any point for detail. The top-left is where to start: high value, low effort.

Prioritization matrix · 19 items
LOW EFFORT HIGH EFFORT → LOW VALUE HIGH VALUE → DO NOW BIG BETS EASY ADDS RECONSIDER
Tier 0 · Foundations Tier 1 · Analytics Tier 2 · AI architecture Tier 3 · Venue economics Tier 4 · External context
Tier 0

Foundations

do first · everything depends on these
Tier 1

Highest-ROI analytics

cheap math · existing data
Tier 2

AI architecture

trustworthy & self-improving summaries
Tier 3

Venue economics & reservations

ownership-grade truth
Tier 4

External context — the realistic subset

only what's daily or plannable
Roadmap

Four moves, in order.

If the dashboard currently holds only a few days of data, Sprint 1 is backfill and foundations — not forward features. Baselines need history before anything reads them.

1Weeks 1–2

Foundation & the band

  • F1 Daily fact record
  • F2 Historical backfill
  • F3 Ingestion + validation
  • A1 Bands + Normal/Watch/Alert
  • A4 Weekly time windows
  • AI2 AI output contract
2Weeks 3–5

Explanation & forecast

  • A2 Variance bridge
  • A3 Calendar-adjusted forecast
  • A5 Leakage reason-codes
  • AI1 Two-layer AI
  • AI3 Memory store
3Weeks 6–9

Economics & context

  • V1 SoBo 20 fee engine
  • V2 FX reporting layer
  • V3 Reservation risk
  • E1 Weather feed
  • E2 Calendar overlay
  • AI4 Hypothesis + hit-rate
4Gated

When data allows

  • V4 RevPASH by daypart
  • Guest-identity layer
  • Menu engineering
  • Labor efficiency
  • Marketing attribution
  • Predictive models
Venue intelligence

Six venues, six questions. Never read the same way.

The review's per-venue lists repeated themselves. Here is what actually differs: the one economic question, the primary signal, the main risk, and the lens the AI should load into each summary.

Build specs

Enough detail to hand to an engineer — or an agent.

The keystone is one canonical record every view and the AI read from. Expand each spec below.

F1

The canonical daily fact record

+

One object per venue per day. Ingested → enriched → computed → generated, as separate testable stages. Everything downstream reads this, never the raw files.

venue_day {
  meta:      { venue_id, name, city, currency, ownership_model,
               date, weekday, seats, open_hours, service_periods,
               filed_at, source_files[], data_quality_flags[] }   # ingested
  sales:     { gross, net, covers, apc,
               by_daypart{}, by_channel{ dine_in, delivery, events },
               by_party_size{} }
  demand:    { reservations_booked, walk_ins, waitlist,
               no_shows, cancellations{ same_day, prior },
               forward_book_next_14d_covers }
  leakage:   { total, by_reason{ marketing, vip_comp, staff,
               platform_funded, recovery, error }, voids, wastage }
  beverage:  { attach_rate, net }
  guests:    { new_vs_repeat, nationality_mix{}, vip_notes[] }
  menu:      { top_sellers[], eighty_sixed[], stockouts[] }
  service:   [ { type, severity, revenue_impact, root_cause,
                 action, follow_up, repeat? } ]      # parsed from free-text notes
  service_pace: { wait_to_seat_min, time_to_first_order_min,
                 ticket_time_min, time_to_check_min,
                 late_arrivals, fast_service_score }             # V4
  delivery_economics: { orders, aov, commission, packaging,
                 refunds, contribution_margin_per_order,
                 app_rank, cuisine_search_rank, delivery_radius } # V4
  context:   { weather{}, holidays[], events[], payday_flag,
               visibility, extreme_heat_alert, exam_season_flag } # enriched
  benchmark: { expected_net, band_low, band_high, z_score,
               classification }                            # computed
  variance:  { vs_expected_net, bridge{ covers, apc, daypart_mix,
               channel_mix, reservation_no_show, menu_availability,
               leakage, delivery, external_context, residual } } # computed
  ai:        { facts, interpretation, context, actions[],
               confidence, hypotheses[] }                    # generated
}
A1

Band & classification logic

+

Robust to outliers (median + MAD, not mean + SD), with a small-sample fallback hierarchy so new venues don't produce nonsense.

for each (venue, weekday, daypart):
  samples = trailing comparable days      # target 8–12, min 6
  center  = median(samples)
  sigma   = 1.4826 × MAD(samples)        # robust std-dev
  band    = [center − 1.5σ, center + 1.5σ]
  z       = (actual − center) / sigma
  class   = |z|<1 Normal | 1–2 Watch | >2 Alert   (+ direction)

if len(samples) < 6:
  low_confidence = true;  widen band
  fallback: venue same-weekday → venue any-day scaled
            → analog venue → manual target
A3

Calendar-adjusted forecast

+

Per-day expected value, summed. Factors begin neutral and are learned from history — presented as estimates with priors, never asserted as truth.

Expected_day(d) = weekday_daypart_baseline(d)
                × month_seasonality_factor
                × holiday_factor(d) × event_factor(d)
                × weather_factor(d)          # only if forecast exists
                × forward_book_adjustment(d) # reservation-led venues

Forecast_month_end = Σ actual(elapsed) + Σ expected(remaining)
Pace = Σ actual(elapsed) / Σ expected(elapsed)

# Calendar Quality Score counts MARKET-CORRECT premium days:
#   Dubai → Thu/Fri/Sat  ·  Mumbai → Fri/Sat + social calendar
V1

SoBo 20 managed-vs-owned fee engine

+

Venue gross is nearly a vanity metric for a managed asset. Encode the contract and show two distinct lenses so a "−71%" venue day isn't misread as an owned-venue emergency.

# Encode the actual agreement, e.g.:
atelier_fee = base_fixed
            + pct_of_gross × venue_gross
            + incentive_rate × max(0, GOP − threshold)

# Dashboard shows both:
OPERATING CONCERN  →  venue health (client relationship, reputation)
ECONOMIC EXPOSURE  →  Atelier fee income (what hits AHH's P&L)

# A soft sales day may be near-neutral to Atelier if the fee is
# largely fixed. Track PR / celebrity value as a SEPARATE signal.
F3

Ingestion, validation & the data-trust layer

+

Free-text manager notes are your biggest source of mush — and a perfect bounded extraction task for an LLM (note in, typed fields out). Reconcile everything and surface trust, not just a "6/6 filed" count.

NORMALISE   each venue export → sales/demand/leakage block
EXTRACT     manager note → structured service[] records (LLM)
RECONCILE   sales vs service report · covers vs res+walk-ins
            · currency sanity · duplicate upload · nulls
EMIT        data_quality_flags[] → Data-Trust page:
            who filed · who's late · what didn't reconcile
            · estimated vs final · which source produced each metric
Future outputs

The wider catalogue — sequenced, not skipped.

Everything else the review surfaced, organised and tagged by what it depends on. These are future outputs, not omissions — each one is gated on a data source coming online. Filter by type.

readydaily feed available now staticone-time config feedneeds a new data feed buildneeds new infrastructure
This week

Where to start on Monday.

Atelier House HospitalityOperations Intelligence · Addendum The Data Supply Chain8 providers / 2 lanes

Intelligent output needs intelligent input.

The cockpit is only as sharp as what it's fed. This is the supply chain behind it — who reports each number, at what cadence, to what quality bar, and what to refuse to collect until it can be trusted.

Where does each number come from — and can we trust it? 2 lanes · 1 record
DAILY PROVIDERS GM · floor Reservations Kitchen PERIODIC PROVIDERS Finance Marketing Supply LANE A · DAILY OPERATIONAL covers · tables · turns · dayparts · 86s · bookings LANE B · PERIODIC ECONOMIC food cost · labour · wastage · spend · comps venue_day one record · per venue / day AI narrative
Two cadences, one record. Daily operational inputs drive tonight's narrative; periodic economic inputs answer what headquarters should change — both converge on the single fact record the AI reads.
Scroll
The upgrade

Four disciplines that turn raw reporting into input you can trust.

The first draft named the data. This version makes it dependable: a confidence tier on every field, a source-of-truth order so two teams never contradict each other, a freshness bar, and a request loop the AI can pull when something it needs is missing.

01

Confidence tiers

Every field is measured, derived, declared, or estimated. Only the first two are ever allowed to raise an alert.

02

Source of truth

When two teams report the same fact, a fixed precedence decides which wins — no silent contradictions in the record.

03

Freshness bar

Each lane has a filing deadline. A late or missing feed shows as low trust, never as a real change in the business.

04

Request loop

When the AI needs a field it doesn't have, it raises a data request back to the owning team instead of guessing.

The rule

Collect a field only if a named owner can report it the same way every period and its movement changes a decision. Everything else is a rumour with a number attached — and estimated data is worse than none, because the model will build a story on it.

Quality bar

Not all inputs are equal. Tag each by how it was produced.

A number counted at the till and a number a manager guessed after service are not the same kind of fact, and must never be treated as one. The tier a field carries decides whether it may move a forecast or trip an alert.

Measured

Counted at source

Covers, net sales, labour hours, cancellations. The ground truth.

▸ may drive alerts
Derived

Computed from measured

APC, prime-cost %, z-score, RevPASH. Only as sound as its inputs.

▸ may drive alerts
Declared

Set once, deliberately

Seats, ownership model, venue location, tourist reliance.

▸ static context only
Estimated

Inferred or guessed

Guest origin from a hunch, "felt busy", mood reads.

▸ never alerts · flagged
The nationality trap

Staff-estimated guest demographics are the classic error: generalized, unrepeatable, and worse than silence, because the model will narrate on them. Capture origin only where it is structural — a reservation's country code, a hotel-guest flag, a loyalty profile — mark it low-confidence, and never let it raise a flag. Otherwise, leave it out.

Cadence

Two lanes, not one feed.

The mistake is forcing everything onto the daily dashboard. Inputs split cleanly into two cadences with two jobs — and keeping them apart is what stops the dashboard lying about a venue because finance hasn't closed the month.

Two cadences · one record Lane A — Daily operational Filed every service by the venue · refreshes tonight covers · tables · turns · party mix · dayparts · 86s · reservations · walk-ins · no-shows → narrative + alerts both write to the same venue_day record — but a weekly number never goes on a daily tile Lane B — Periodic economic Closed weekly by finance & marketing · answers "what to change" food cost % · labour · prime cost · wastage · marketing spend · comps · supplier prices → HQ decisions + context
Lane B never appears as a daily tile. Instead it stands up its own weekly views and is injected as context into the daily story — "covers were down, and for context marketing spend here was paused this week."
Freshness bar

Each lane carries a filing deadline — Lane A by late morning after service, Lane B by the second working day after period close. Miss it and the trust layer marks the value estimated / stale, so a missing feed never masquerades as a real change.

Provider map

Who owns each input.

Eight functions, each with a bounded reporting job. Value and effort are on the cockpit's 1–5 scale; the lane and cadence tell you which pipeline it belongs to and how often it lands.

Lane A · daily operational Lane B · periodic economic Static · one-time
Source & integration map

Name the feeds, the cadence, and the role each source is allowed to play.

External and platform data should not all be treated equally. Weather and bookings can alter daily operating expectation; tourism is a slow prior; marketing attribution needs a source pipeline and holdout discipline before it becomes decision-grade.

Trust rule

Measured system feeds can move baselines. Slow public data modifies context. Manually estimated context only explains uncertainty. This prevents a tourism headline, a social impression, or a late aggregator report from triggering false daily alerts.

The high-leverage move

One comp number, two opposite meanings.

Today a comp is one undifferentiated figure buried in leakage — hiding both an operational loss to fix and a marketing investment to measure. The data already exists; someone comped the table on purpose. It just needs an owner and a code. This is the first thing I'd request.

Reclassify · leakage → owned 1 comp today: one number LOSS · reduce staff_error · service_recovery INVESTMENT · measure ROI influencer · journalist · PR · owner-VIP platform_funded → excluded from your margin Same number today — buried in leakage. Two owners, two questions tomorrow.
Marketing owns tagging its own comps. The same figure splits into a cost to reduce and a spend with an ROI — and it stitches operations, finance, and marketing into one picture.
Why first

It is nearly free — the information already exists — and it directly upgrades the leakage reason-codes (A5) while seeding the Marketing view. Highest leverage per unit of effort in the whole data programme.

Reconciliation

When two teams report the same fact, precedence decides.

Covers show up in the POS, in the reservation system, and in the GM's report — and they won't always match. Rather than average them or let the last upload win, fix a golden-record order per field. Disagreements then become a data-quality flag, not a silent error.

The payoff

Every value in the record carries its source, its confidence tier, and a reconciliation status. The trust layer (F3) can always show what is measured, what is estimated, and what two feeds disagree on — so no one debates whose number is right in the morning meeting.

Ingestible formats

Six templates, ready to distribute.

Minimum-viable field sets — start smaller, not larger; a team fills five fields forever and abandons twenty in a week. Each maps to a path in the daily fact record. Amounts always carry the venue's own currency and are never summed across markets. Expand any template for its schema.

Rollout

Get compliance by starting small.

Ask each team for a handful of fields, not a data project. The first phase needs no new systems and immediately sharpens the bands, the variance bridge, and RevPASH.

AThis week · free

Daily, no new systems

  • Property Static venue profile
  • GM Daily venue report
  • Res Booked · walk-in · cancels · no-shows · forward book
BNext · weekly

Stand up the economics

  • Mktg Comp-tagging (highest leverage)
  • Fin Food cost % · labour · prime cost
  • Kitchen Wastage log
CGated

When the system exists

  • Item margin — needs recipe costing
  • Theoretical food cost — needs inventory
  • Attribution — needs a booking-source pipeline
How it plugs in

New Operations Economics and Marketing views (weekly, clearly cadence-labelled); finance and marketing figures injected as context into the daily narrative; and the static profile becomes the venue personality the AI loads before reading any day. Nothing here is new architecture — it is the same fact record, filled from more owners.

To finalise what's automatic vs manual, four answers
Q1

Reservation system?

SevenRooms / OpenTable / Zomato / none — decides whether the reservation template is an export or a manual form.

Q2

POS exports?

Does it break out item-level sales and daypart revenue? Decides menu engineering, dayparts, and RevPASH.

Q3

Inventory / costing?

Any recipe-costing or inventory software? Decides theoretical food cost and true item margin.

Q4

Finance cadence?

Does finance close weekly or monthly? Weekly makes Lane B dramatically more useful.

Atelier House HospitalityOperations Intelligence · v3 Data Meaning & Analytics PlaybookInterpretation · Context · AI Memory

Teach the cockpit what the data actually means.

This view is the bridge between raw restaurant reporting and intelligent action. It ranks the highest-quality data, explains what each metric proves or does not prove, shows how calendar shape changes expected revenue, and gives AI agents a repeatable summary contract.

The dashboard should not only show numbers — it should explain the business. data → meaning → action → memory
TRUSTED DATA POS · reservations · leakage · service notes MEANING volume vs check · calendar vs controllable ACTION manager task · owner decision · alert MEMORY learns or retires evaluation loop: was the explanation right?
The additional layer is not more decoration. It gives operators and AI agents a shared language for evidence, interpretation, context, confidence, and follow-up.
Scroll
The purpose

Separate reliable facts from useful context, then turn both into decisions.

Restaurant data has a hierarchy. A POS cover count, a reservation cancellation, and a manager's impression of guest mood should not carry the same weight. This view makes those distinctions explicit so the dashboard can be trusted by operators, owners, and AI agents.

1
Trust first

Measured and reconciled fields drive alerts. Estimated or qualitative fields add context but cannot trigger panic.

2
Meaning second

Every metric should answer a management question: demand, check quality, conversion, leakage, execution, or external drag.

3
Action third

A number that does not change staffing, reservations, marketing, menu, service, or ownership decisions belongs below the fold.

4
Memory last

The AI should write what it learned, test whether it was right, and retire weak hypotheses instead of accumulating noise.

Step 01

Classify the data

Measured, derived, declared, or estimated. The confidence tier determines how much the value can influence the summary.

Step 02

Explain the driver

Was the variance covers, APC, mix, leakage, reservations, menu availability, service, calendar, weather, or city context?

Step 03

Assign the decision

Route the insight to the correct owner: GM, reservations, kitchen, marketing, finance, ownership, or the data-quality owner.

Step 04

Write memory

Save the interpretation, confidence, missing fields, action, and hypothesis so tomorrow's summary can improve.

Highest-quality data

The data ladder: what to trust most, and why it matters.

These are ranked by reliability, explanatory power, actionability, and strategic value. The top rows are not always the most exciting, but they are the hardest to argue with and the most useful for daily decisions.

Operating rule

Measured and derived data can trigger alerts. Declared data shapes interpretation. Estimated data can only add color. This protects the system from building confident stories on impressions, incomplete reports, or late feeds.

Metric meaning

Every metric needs a management interpretation.

A restaurant dashboard should never stop at the number. Each metric should say what it tells us, what it does not prove, and what action it should trigger. Filter the dictionary by decision area.

Review cadence

Daily, weekly, monthly, and forward views are different jobs.

Month-to-date is useful, but restaurants are not linear. The cockpit should help management move between operating exceptions, weekly patterns, calendar-adjusted ownership reads, and forward revenue risk.

Calendar effects

Month shape changes expected revenue before operations do anything.

Do not judge a month by simple days-elapsed pace. Judge it by the expected value of each elapsed and remaining trading day, adjusted for venue, market, premium nights, holidays, events, weather, tourism, mobility, and reservation book.

Expected revenue logic
expected_day_revenue = same_weekday_daypart_baseline
                     × market_premium_day_factor
                     × holiday_or_long_weekend_factor
                     × weather_and_mobility_factor
                     × event_and_tourism_factor
                     × forward_reservation_book_factor
                     × venue_specific_modifier

calendar_adjusted_MTD = Σ expected value of elapsed days
forecast_month_end    = Σ actual elapsed + Σ expected remaining

Never read AED and INR as one operating total.
Never treat a managed venue's gross sales as Atelier's economic exposure.
Venue-specific meaning

Per-venue panels: the same KPI means different things in each restaurant.

The global metric dictionary is not enough. Each venue needs its own signal map, trigger logic, data requirements, and AI interpretation rule. This closes the largest coverage gap: metrics existed globally, but not mapped deeply enough to each restaurant.

Delivery economics

Delivery is not seat economics. It needs its own unit model.

For Mohalla Cloud and Mohalla d3, gross delivery revenue can hide weak contribution after commissions, packaging, refunds, prep-time failures, and ranking loss. The cockpit should read delivery as a funnel and a unit-economics waterfall.

Per-order contribution waterfall

Delivery growth funnel

Operating rule

Do not celebrate delivery sales until true contribution is known. Orders, AOV, app visibility, prep reliability, refunds, packaging and platform commission should sit beside revenue for every delivery-led brand.

Service pace

Service timing links experience, table productivity, and revenue.

Speed is not about rushing luxury service. It is about knowing whether the guest was seated, greeted, ordered, served, and closed at the right pace for the venue and occasion. This is especially important for Tezukuri's busy downtown guests and for RevPASH-driven capacity management.

Why it matters

When sales miss, service pace helps distinguish weak demand from slow throughput. A full room with slow checks and poor table resets is a capacity problem; empty tables with clean service pace is a demand problem.

Schema patches

Patch the fact record so the AI can explain the business more accurately.

The existing canonical record is strong. These additions make the variance bridge more complete and give delivery, service pace, local demand, and managed-venue compliance a place to live.

Source map

What to import, where from, and how much to trust it.

Named sources prevent vague integration requests. They also force the cockpit to distinguish daily operating signals from slow macro context and experimental attribution feeds.

Strategic frontier

Once the data constraint is solved, the portfolio becomes a compounding intelligence asset.

This is the next-generation opportunity map: not more tiles, but a sequence of domains that move from descriptive reporting toward prescriptive and eventually human-supervised autonomous decisions.

01

Descriptive

What happened: sales, covers, APC, leakage, bookings.

02

Diagnostic

Why it happened: bridge, context, service, menu and reservation drivers.

03

Predictive

What is likely: forward book, demand, prep, labour, cancellation risk.

04

Prescriptive

What to do: reconfirm, staff, prep, market, price, fix, follow up.

05

Autonomous

Low-risk routines executed with human supervision and scored hit-rate.

Brand focus matrix

Not every restaurant needs every frontier at once. Sequence investment by the economic question each brand lives or dies on.

Guardrails

What not to build yet, even if the metric sounds smart.

More data can make the cockpit worse when the source is weak, the cadence is wrong, or the metric encourages false confidence. These items should be gated, not placed on the daily dashboard.

AI agent playbook

Give the model a contract, not a vague request to summarize.

The AI should narrate deterministic metrics, not invent them. It should separate fact, interpretation, context, action, confidence, missing data, and memory. It should also track whether yesterday's explanation was later confirmed.

AI

Required daily summary contract

+
Facts:
  - net sales, covers, APC, channel/daypart mix, leakage, classification
Interpretation:
  - primary driver: covers / APC / mix / leakage / reservation / menu / service / context
Context:
  - weekday, calendar shape, weather, holiday/event, booking book, venue lens
Actions:
  - 1 to 3 owner-routed actions with urgency
Confidence:
  - high / medium / low, with missing data named
Memory write:
  - what was learned, what hypothesis changed, what should be checked next time
MEM

Daily memory object

+
daily_memory = {
  venue_id,
  date,
  classification,
  primary_variance_driver,
  calendar_context,
  external_context,
  service_or_menu_notes,
  actions_recommended,
  missing_data,
  confidence,
  hypotheses_created_or_updated,
  next_check_date
}
Analytics backlog

A large idea bank, organized by decision altitude.

This is the long-form backlog of broad, micro, macro, and governance ideas. Keep it visible, but gate each item on whether the underlying data source exists and whether the metric would change a real decision.