Spaces:
Sleeping
Sleeping
A newer version of the Gradio SDK is available:
6.5.1
Restaurant Intelligence Agent - Planning Flow
π UNIVERSAL SYSTEM - Works with ANY Restaurant
CRITICAL: This agent is designed to work with ANY OpenTable restaurant URL without modification.
- β NOT hardcoded for specific restaurants
- β Discovers menu items dynamically from reviews
- β Discovers relevant aspects dynamically
- β Adapts to restaurant type automatically (fine dining, casual, fast food, etc.)
Examples of restaurants this works with:
- Japanese (Miku) β
- Italian (any pasta place) β
- American (burgers, steaks) β
- Fast food (McDonald's competitor) β
- Coffee shops β
- ANY restaurant on OpenTable β
π― High-Level Overview
This shows how the agent works from start to finish for ANY restaurant:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β USER INPUT β
β Paste ANY OpenTable URL: β
β β’ https://opentable.ca/r/ANY-RESTAURANT β
β β’ Agent doesn't need to know restaurant in advance β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AGENT PLANNING PHASE β
β β’ Agent receives the URL (any restaurant) β
β β’ Agent thinks about what needs to be done β
β β’ Agent creates a UNIVERSAL step-by-step plan β
β β
β Universal Plan (works for ALL restaurants): β
β Step 1: Scrape reviews from URL β
β Step 2: Discover menu items (extracts from reviews) β
β Step 3: Discover aspects (learns what matters here) β
β Step 4: Analyze sentiment β
β Step 5: Detect any problems β
β Step 6: Generate insights β
β Step 7: Save report to Google Drive β
β Step 8: Send alerts if problems found β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AGENT EXECUTION PHASE β
β β’ Agent executes each step β
β β’ ADAPTS to whatever it discovers β
β β’ No assumptions about restaurant type β
β β
β Example 1 - Japanese Restaurant: β
β β Discovered: sushi, sashimi, tempura β
β β Aspects: presentation, freshness, authenticity β
β β
β Example 2 - Italian Restaurant: β
β β Discovered: pasta, pizza, risotto β
β β Aspects: sauce quality, portion size, authenticity β
β β
β Example 3 - Fast Food: β
β β Discovered: burgers, fries, shakes β
β β Aspects: speed, value, consistency β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β OUTPUTS (Custom per Restaurant) β
β β’ PDF Report (customized to that restaurant) β
β β’ Slack Alert (if issues detected) β
β β’ Q&A Interface (ask questions about reviews) β
β β’ Visualizations (based on discovered items/aspects) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ How the Agent "Thinks" (Works for ANY Restaurant)
Step 1: Analyze the Input (Universal)
Example 1: User provides Japanese restaurant URL
Agent's thoughts:
"I received: https://opentable.ca/r/some-sushi-place
What I know:
- This is an OpenTable URL
- I need to analyze customer reviews
What I DON'T know (will discover):
- Restaurant type (Japanese? Italian? American?)
- Menu items (sushi? pasta? burgers?)
- What customers care about (presentation? speed? value?)
My approach:
1. Get the data first
2. Let the REVIEWS tell me what matters
3. Don't assume anything"
Example 2: User provides Italian restaurant URL
Agent's thoughts:
"I received: https://opentable.ca/r/some-italian-place
Same approach - I don't assume:
- Menu could be pizza, pasta, seafood, or all
- Customers might care about: sauce, portions, wine, authenticity
- I'll discover everything from the reviews"
Example 3: User provides fast food URL
Agent's thoughts:
"I received: https://opentable.ca/r/some-burger-chain
Different restaurant type, same approach:
- Menu likely: burgers, fries, drinks
- Customers probably care about: speed, value, consistency
- But I won't assume - I'll discover from reviews"
Step 2: Create Universal Plan
The agent creates THE SAME PLAN for every restaurant:
# This plan works for Japanese, Italian, Mexican, Fast Food, ANY type:
plan = [
{
"step": 1,
"action": "scrape_reviews",
"params": {"url": user_provided_url}, # ANY URL works
"reason": "I need review data before I can analyze anything"
},
{
"step": 2,
"action": "discover_menu_items",
"params": {"reviews": "scraped_data"},
"reason": "I don't know what's on the menu - customers will tell me in reviews"
# Will find: sushi OR pasta OR burgers (whatever is mentioned)
},
{
"step": 3,
"action": "discover_aspects",
"params": {"reviews": "scraped_data"},
"reason": "I need to learn what matters to THIS restaurant's customers"
# Might find: "presentation" OR "portion size" OR "speed" (depends on restaurant)
},
{
"step": 4,
"action": "analyze_sentiment",
"params": {"reviews": "scraped_data"},
"reason": "Universal - every restaurant needs sentiment analysis"
},
# ... remaining steps are also universal
]
π Example: Agent Handles Different Restaurant Types
Scenario A: Japanese Fine Dining
[10:00:00] Received URL: https://opentable.ca/r/sushi-restaurant
[10:00:01] Creating universal analysis plan (8 steps)
[10:00:06] STEP 2 COMPLETE: Discovered menu items
Found: salmon sushi (89 mentions), miso soup (67 mentions), tempura (45 mentions)
[10:00:50] STEP 3 COMPLETE: Discovered aspects customers care about
Aspects: presentation, freshness, authenticity, service attentiveness
[10:01:30] Agent adapted to: Fine dining Japanese restaurant
Scenario B: Italian Casual Dining
[10:00:00] Received URL: https://opentable.ca/r/italian-bistro
[10:00:01] Creating universal analysis plan (8 steps)
[10:00:06] STEP 2 COMPLETE: Discovered menu items
Found: carbonara (112 mentions), margherita pizza (89 mentions), tiramisu (56 mentions)
[10:00:50] STEP 3 COMPLETE: Discovered aspects customers care about
Aspects: sauce quality, portion size, value for money, wine selection
[10:01:30] Agent adapted to: Casual Italian restaurant
Scenario C: Fast Casual (Burgers)
[10:00:00] Received URL: https://opentable.ca/r/burger-joint
[10:00:01] Creating universal analysis plan (8 steps)
[10:00:06] STEP 2 COMPLETE: Discovered menu items
Found: cheeseburger (156 mentions), fries (134 mentions), milkshake (67 mentions)
[10:00:50] STEP 3 COMPLETE: Discovered aspects customers care about
Aspects: speed of service, value, consistency, cleanliness
[10:01:30] Agent adapted to: Fast casual burger restaurant
π Why This Is TRULY Universal
β Bad Approach (What we're NOT doing):
# Hardcoded - only works for one restaurant
menu_items = ["salmon roll", "tuna sashimi", "miso soup"] # Japanese only!
aspects = ["food quality", "service", "ambience"] # Generic, misses specifics
# This breaks when you analyze an Italian or Mexican restaurant
β Our Approach (What we ARE doing):
# Dynamic - works for ANY restaurant
menu_items = discover_from_reviews(reviews) # Finds whatever customers mention
aspects = discover_from_reviews(reviews) # Learns what matters HERE
# Examples of what it discovers:
# Japanese: menu_items = ["sushi", "sashimi"], aspects = ["freshness", "presentation"]
# Italian: menu_items = ["pasta", "pizza"], aspects = ["sauce", "portions"]
# Mexican: menu_items = ["tacos", "burritos"], aspects = ["spice level", "authenticity"]
π― Key Principles (Universal Design)
- NEVER assume restaurant type - Let reviews tell us
- NEVER hardcode menu items - Discover from customer mentions
- NEVER use generic aspects - Learn what THIS restaurant's customers care about
- ALWAYS adapt - Japanese needs different analysis than fast food
- ONE codebase - Same code handles ALL restaurant types