Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Overview & Restaurant Universe

Goal of this chapter: Understand why this system exists, how data travels from database to dashboard, and get a clear picture of the full restaurant universe at Hungry Hub.


1. Why Do We Need Restaurant Prioritization?

Hungry Hub connects thousands of hungry diners with top restaurants in Thailand. Every week, our marketing team has budgets and slots to promote partner restaurants across several channels:

  • Facebook & Instagram Ads
  • Influencer (KOL) Video Reviews & Posts
  • Mobile App Push Notifications
  • Email Newsletters & App Banners

The Challenge

Without data-driven scoring, marketing decisions face two major traps:

  1. The “Squeaky Wheel” Trap: Marketing slots go to restaurant owners who ask the loudest, even if their deals don’t convert well.
  2. Hidden Gems Get Ignored: High-converting, beloved restaurants with great customer reviews miss out on promotions simply because no one noticed them.

Restaurant Prioritization solves this by mathematically answering: “Which restaurants will deliver the highest return if we promote them this week, and which ones need help before they leave our platform?”


2. Understanding the Restaurant Universe (7,400+ Restaurants)

One common point of confusion is how many restaurants Hungry Hub actually tracks.

Older project drafts mentioned roughly 2,700 restaurants (which was a temporary sample from an early Bangkok test). In reality, our production database tracks over 7,400 restaurants across various regions and statuses.

Here is how the numbers break down:

graph TD
    A["Total ClickHouse Universe<br/><b>7,403 Restaurants</b><br/>(Every restaurant in hh_power_bi.combined_rankings)"] --> B["Platform Bookable<br/><b>2,775 Restaurants</b><br/>(Live & accepting bookings across all cities)"]
    A --> C["Inactive / Offboarded / Regional<br/><b>~4,628 Restaurants</b><br/>(Monitored for re-activation & account outreach)"]
    B --> D["Bangkok Bookable Core<br/><b>1,898 Restaurants</b><br/>(Highest GMV density & daily marketing focus)"]
    B --> E["Other Provinces & International<br/><b>877 Restaurants</b><br/>(Phuket, Pattaya, Chiang Mai, etc.)"]

Breakdown of the 3 Key Counts:

  1. 7,403 Total Universe: Every restaurant ID that exists in our ClickHouse serving table (hh_power_bi.combined_rankings). This includes active restaurants, newly signed venues, and inactive or archived partner accounts.
  2. 2,775 Bookable Platform-Wide: Restaurants that are currently live, active, and can be booked by users on the Hungry Hub mobile app or website right now.
  3. 1,898 Bangkok Bookable (Core Group): Active bookable restaurants located in Bangkok. This group generates the majority of weekly transactions and forms the primary target for everyday paid ads and influencer campaigns.

Note

By default, the marketing dashboard filters for Bookable restaurants so you only spend ad money on venues users can actually book today. However, account managers can turn off this filter to find churned restaurants that could be re-activated.


3. The 5-Stage System Pipeline

The entire system runs automatically on a scheduled cadence through 5 clear stages:

flowchart LR
    S1["1. Data Ingestion<br/>(ClickHouse)"] --> S2["2. Feature Building<br/>(80 Clean Signals)"]
    S2 --> S3["3. Machine Learning<br/>(LightGBM core_v2)"]
    S3 --> S4["4. Segmentation &<br/>Ranking Logic"]
    S4 --> S5["5. Dashboard &<br/>Action Delivery"]
  1. Data Ingestion (ClickHouse): Reads verified booking sales, covers (guest count), customer reviews, past ad spend, and influencer activity.
  2. Feature Building (80 Clean Signals): Calculates weekly trends, rolling moving averages, and promotional exposure while strictly preventing future data leakage.
  3. Machine Learning (core_v2): LightGBM predicts each restaurant’s baseline sales potential and flags whether past promotions actually created positive lift.
  4. Segmentation & Scoring: Combines prediction scores and recent marketing history into 4 clear business quadrants plus smart badges (e.g., Hidden Gem, At Risk).
  5. Dashboard Delivery: Publishes the processed results into our ClickHouse production table via an atomic swap and displays them on the interactive Streamlit dashboard.

4. Summary of the 4 Main Dashboard Pages

The final results are presented on a Streamlit web application divided into 4 intuitive tabs:

Page NameWho Uses It?Primary Purpose
1. Restaurant RankingsMarketers & LeadsThe master table. Browse restaurants sorted by Marketing Priority, filter by cuisine/location, and download Excel/CSV lists for weekly ad campaigns.
2. Restaurant Deep DiveAccount ManagersSearch a specific restaurant. See its 12-month sales trend, guest reviews, marketing history, and AI-predicted sales trajectory.
3. Marketing SimulatorCampaign Planners“What-if” sandbox. Test what happens to total bookings and revenue if marketing spend is shifted from one group of restaurants to another.
4. Operations & SystemData & DevOps EngineersReal-time monitoring of model freshness, data pipeline health, memory usage, and execution logs.

5. Next Steps

To see how the 4 business segments and priority scores are calculated, proceed to 02. Business Context & Strategy.