Pick any level. Lower levels show only options inside your selection.
Clear filters
At-a-glance
Total tables
—
Total covers
—
Mean sentiment
—
Tables with red flags
—
Returning rate
—
Pairing take-rate
—
Add-ons captured
—
Sentiment distribution
Overall-experience score (1–5): 5 delighted, no real complaint · 4 enjoyed overall but a genuine issue was raised (often minor/handled) · 3 mixed — a notable problem dampened it · 2 dissatisfied overall · 1 serious failure. Click any bar to see the tables in that bucket.
Diverging view: positive mentions stretch right (teal), negative mentions stretch left (red). Hover for counts.
MonthCompared with the previous month and the same month in other years — figures from the published monthly sale reports (Monthly_Sales tab, POS basis, paid checks only).
Loading monthly data…
Guest mix
Covers by Origin
Country of Residence
Occasion mix
100% captured in source.
Returning covers by nationality
Sorted by absolute count.
Sentiment by origin
Sorted by number of covers. Hover for additional information.
Dish-level signal
Favourite mentions by menu course
Top dishes — loved vs disliked (canonical)
Per-dish polarity: praise right, critique left. Sorted by total mention volume.
Why dishes get disliked
Each disliked dish, sorted by how often it’s flagged, with the specific reason(s) — bigger chip = more guests said it — and whether the dislikes skew to a nationality. “Aversion” = personal preference (e.g. durian), usually resolved with the eggplant swap.
Pairing & beverages
Pairing breakdown
Tables that took a pairing, by type and glass count. Click any segment to read the reviews.
Beverage & add-on adoption
Share of tables that engaged each upsell. Click any bar to read the reviews.
Pairing-related red flags
Red flags
Red Flags
Multi-visit guests
Guests appearing more than once in the filtered window.
Industry guests in the period
F&B professionals — feedback weighted higher.
Google Reviews
Total reviews loaded
—
Mean star rating
—
Rated 4 and above
—
Rated 3 and below
—
Star rating distribution
Click any bar to jump to the review reader filtered to that rating.
Ratings by dimension
Sub-ratings extracted from reviews that include them.
Dishes praised by Google reviewers
Dishes specifically named in 4–5★ reviews. Click a bar to read those reviews.
Specific issues raised
Each card is one reviewer's complaint with full detail. Sorted most recent first.
Review reader
Pick a star rating to read every review in that bucket. Most recent first.
Sales & covers
Loading POS data from the Sheet…
Paid covers
—
Revenue
—
Spend / cover
—
Pairing take-rate
—
Add-on attach
—
Wine bottles
—
Revenue mix
Paid revenue by category (POS).
Pairings — paid
Glasses sold by type.
Add-ons — % of covers
Share of paid covers that included each add-on — the chance a given guest buys it.
Top cocktails & signature drinks
Signature bar drinks by glasses sold.
Wines sold
Every wine sold this month — (G) glasses, (B) bottles. Scroll for the full list.
Comped covers & cost
Covers given free (mostly media). Cost = food cost of those covers, not menu value.
Costs —
What changed —
Largest movers, in baht. Red grew, teal shrank. Click a bar to drill into that line. Depreciation excluded (non-cash).
Drill-down — the P&L, line by line
Same structure as the accountant's P&L. Click a section to expand its lines, then "view entries" for the actual GL transactions. Sections show % of total cost; lines show % of their section.
6-month heatmap — where is the unusual month?
Each row colours its own hottest months — size of the line doesn't matter. Variable lines are heat-mapped on % of that month's revenue (so a quiet month with high spend lights up); fixed and discretionary on the raw amount. Click a hot cell to see its GL entries.
Cost vs revenue — was it the business, or the cost?
Pick any line. Bars are the cost, the line is revenue. If the cost moves with revenue it's behaving like a variable cost; if it moves on its own, something changed. Hover for % of revenue.
Payments to question
Automatically flagged from the GL: payments of ฿20k+ to individuals (no company, no VAT invoice), exactly-round amounts of ฿10k+ in accounts where odd numbers are expected, vague descriptions, possible duplicates, and ฿50k+ one-offs. A flag is a question to ask, not an accusation. Once a payment is explained, hit ✓ Mark as OK — it moves to the Reviewed list and stays hidden on this browser. Use ↩ Restore to bring one back.