What this dashboard is for
The GM Copilot dashboard is the weekly review for a General Manager. It opens with the three big numbers from last week vs the week before, then walks down a chain of "if it moved, here's why" charts that try to attribute the change to specific drivers (orders vs ticket size, menu mix, a big day, a hot item, a new launch).
Open it once a week — usually Monday morning — to understand what happened last week and what to do this week.
What "last week" means
Almost every card on the dashboard is anchored to last week (the most recent complete week, Monday-to-Sunday) compared against either the week before that or the previous 12 weeks' average. The relevant baseline is called out on each chart.
Week boundaries follow Postgres's default (date_trunc('week', "orderDate")), which starts on Monday. All time-of-day logic uses Bangkok time.
1. Revenue vs Last Week
The big revenue number for last week, with the % change vs the week before. Up arrow / down arrow tells you direction at a glance.
2. Orders vs Last Week
Same idea, for order count.
3. Avg Order Value vs Last Week
And for average order value. Together these three KPIs are the "headline" — if last week was good or bad, which of the three drove it.
4. Last Week vs Last 12 Weeks
A combo chart showing each of the last 13 weeks' revenue as bars, with a flat reference line drawn at the average of the previous 12 weeks (excluding last week itself).
Reading it: the bar at the far right is last week. If it's well above the flat line, you over-performed your recent norm; if well below, you under-performed.
How it's calculated: revenue per week from closed orders. The reference line is the simple average of weekly revenues from the 14-weeks-ago boundary up to 2 weeks ago (so it represents your typical week without last week in the calculation).
5. Weekly vs Last 12 Weeks Average (%)
The same comparison, but expressed as a percentage difference per week (so +10% = a week that was 10% above the 12-week average). Bars are coloured by whether the week beat the average ("Better") or fell short ("Worse").
Reading it: the trend of the % bars is more informative than any single bar. A long run of negative bars getting steadily worse is a trend; a single negative bar after a string of positives is noise.
6. How much of the WoW was driven by # Orders vs Order Value?
A small waterfall that decomposes the week-over-week revenue change (last week vs the week before) into two contributions: the part driven by changes in # orders and the part driven by changes in AOV. Together they sum to the total WoW % change.
How it's calculated: the split is proportional to each effect's contribution to the overall change. Concretely:
Orders WoW = (LW orders − LLW orders) ÷ LLW orders
Basket (AOV) WoW = (LW basket − LLW basket) ÷ LLW basket
# Orders share of revenue WoW = Orders WoW ÷ (Orders WoW + Basket WoW) × Rev WoW
AOV share of revenue WoW = Basket WoW ÷ (Orders WoW + Basket WoW) × Rev WoW
("LLW" = last-last-week, two weeks ago.)
7. Was it driven by any particular part of the Menu?
Bars showing each menu's contribution to the WoW revenue change. If Food was up sharply but Drinks was flat, the bar for Food will be much taller. Used to localise the cause — was the move broad-based or driven by one section of the menu?
8. Was it unusually large orders?
A table of every cheque from last week whose total was more than 1.5 standard deviations above the outlet's average cheque. Use it to spot a private dinner, a large delivery order, or a corporate event that pushed last week's number up.
How it's calculated: the standard deviation and average are computed across the outlet's entire order history. Any order above (average + 1.5 × SD) qualifies as "unusually large" and is listed.
9. Was it a special day this week?
One bar per day in last week, compared against the same weekday averaged over the previous 8 weeks. A spike on one day (Tuesday up 80%, the rest flat) tells you the week's move was concentrated.
10. Was it any Menu Items with unusually high sales?
Items whose last-week quantity was more than 2 standard deviations above the same item's weekly average. Columns: item, average weekly quantity, last week's quantity, last week's revenue, and how many SDs above the average it landed.
How it's calculated: for every item, we compute its average weekly quantity and the standard deviation across all weeks it has sold. Items whose last-week quantity exceeds (average + 2 × SD) appear in the table, sorted by how extreme the deviation was. Items that have only sold for one or two weeks are excluded (the SD wouldn't be meaningful).
11. Was it any of the new Menu Items added in the last month?
Items that had their first sale within the last 4 weeks, with the quantity and revenue they contributed last week. Useful if you're trying to figure out whether a recent menu addition is the reason the numbers moved.
12. Monthly Projection based on performance so far
For the current calendar month: where the month is expected to land if the daily pace so far continues for the remaining days. The bar shows actual revenue to date and a "Projected" segment showing the remainder.
How it's calculated: (revenue so far) × (days in month ÷ days elapsed) − revenue so far = projected remainder. It's a simple linear extrapolation that assumes the rest of the month behaves like the days already trade.
How the numbers are defined
Status filters — closed orders only (
status = 'complete') for revenue and order counts; confirmed items (order_items.status = 'confirmed') for item-level tables. Items with nomenuItemIdare excluded from item tables.Week boundaries — Postgres
date_trunc('week', ...)(Monday-to-Sunday).Date field —
orderDateon most cards (different from the rest of the Insights 2.0 dashboards which usually usereportingDate). For outlets with late-night service that means timezone-sensitive cheques after midnight land on the actual calendar date, not the business day.Timezone — Asia/Bangkok.
Baselines — the "Last 12 Weeks" reference excludes last week itself (so the comparison isn't blunted by including the week you're judging).
Filters
Outlet ID — pinned to your outlet when the dashboard is embedded in the Papaya merchant portal.
There is no user-controlled date filter — the dashboard is always anchored to "last week" relative to today.
What this dashboard does NOT show
Live / today's data — use the Today dashboard.
Long historical trend — use Trends.
Channel-level deep dive — see Channels.
Industry benchmark — see Industry Comparison.
Margin / inventory impact — see the Inventory module.
Multi-outlet comparison — see Outlets or Group KPIs.












