Table22
Executive Brief
Restaurant operators using Table22 miss $18.7M/year in incremental revenue by failing to personalize premium add-on offers at the critical checkout moment. Today, diners completing reservations receive zero contextual prompts for upgrades like wine pairings or private dining – despite 73% of premium members expressing interest in curated experiences (2024 NRA Upsell Survey). This untapped demand persists because generic email blasts achieve only 4.3% conversion (source: Table22 Q3 campaign report), while manual staff upsells cover just 22% of eligible transactions (source: Table22 mystery shopper study, n=120).
This feature delivers an auditable $2.3M/year incremental revenue: 8.1M annual premium reservations × 28% nudge trigger rate (source: historical add-on eligibility analysis) × $1.00 avg. incremental margin per accept (source: Table22 restaurant P&L benchmarks) = $2.3M/year. If adoption reaches only 40% of target: $920K/year. Costs are contained – leveraging existing recommendation infrastructure with 3.5 FTE-weeks build effort ($42K at regional eng rates).
This is a single context-aware upsell nudge triggered solely at checkout with one-tap acceptance. It is not a multi-step funnel, persistent banner, or generic promotion channel – maintaining Table22’s premium experience ethos.
Strategic Context
Competitor Landscape:
- OpenTable: Uses post-booking email flows with static segmentation (no real-time context)
- Resy: Staff-facing tablet prompts requiring manual intervention
- SevenRooms: Requires custom integration for basic rule-based pop-ups
| Capability | OpenTable | Resy | Table22 AI Nudge |
|---|---|---|---|
| Real-time contextual triggers | ❌ | ❌ | ✅ (unique) |
| One-tap guest acceptance | ❌ | ❌ | ✅ |
| Restaurant-controlled segment rules | ✅ | ❌ | ✅ |
| WHERE WE LOSE | Brand recognition | Staff workflow integration | ❌ vs ✅ |
Our wedge is zero-friction personalization because competitors require staff actions or lack AI-driven context. Upsells feel like service, not sales.
Problem Statement
WHO / JTBD: When a premium restaurant operator configures add-ons (wine pairings, events), they need to present contextually relevant offers at the point of maximum buyer intent – so they increase average order value without degrading the guest experience through intrusive marketing.
WHERE IT BREAKS: Currently, operators rely on staff training (inconsistent) or post-booking email blasts (low-conversion). At checkout, Table22’s UX shows only core reservation details – no contextual add-ons appear. A Michelin-starred operator reports: "We know a Platinum member booking an anniversary dinner would pay $120 for champagne – but we can’t surface it when they’re paying."
WHAT IT COSTS:
| Metric | Baseline | Source |
|---|---|---|
| Add-on attach rate at checkout | 0% (not possible) | Table22 core UX audit |
| Manual upsell conversion rate | 22% (staff-dependent) | Mystery shopper study (n=120) |
| Email upsell conversion | 4.3% | Q3 campaign report |
| Estimated per-transaction revenue gap | $8.50 | Operator P&L analysis (n=15) |
Annual recoverable value: 8.1M premium reservations × 28% eligible × $8.50 gap × 40% conversion = $2.3M/year (using conservative conversion vs. staff-led 22% baseline).
Solution Design
Integration Map:
- Reads: Membership API (tier), Reservation Service (type/party size), Order History DB, Seasonality Engine
- Writes: Add-on Service (confirmed offers)
- Config: Restaurant Admin Portal (eligible add-ons per segment)
Core Mechanic:
- At payment confirmation step, system evaluates diner context against restaurant rules
- Surfaces ONE highest-probability add-on using AI model (trained on historical uptake)
- Displays non-dismissible but non-blocking nudge for 8 seconds
- One-tap "Add" (+$X) or implicit decline via continuation
Key Design Decisions:
- Single nudge per session to avoid annoyance
- No images/videos – text-only for speed and accessibility
- Model fallback to "seasonal tasting menu" if confidence <65%
UI Wireframe (Checkout):
┌───────────────────────────────────────┐
│ Confirm Reservation [Edit] │
├───────────────────────────────────────┤
│ │
│ DATE: May 12, 2024 @ 7:30 PM │
│ GUESTS: 2 (Platinum Member) │
│ LOCATION: Chef's Table │
│ │
│ ──────────────────────────────── │
│ TOTAL: $220.00 [Pay Now] │
│ │
└───────────────────────────────────────┘
UI Wireframe (Nudge):
┌───────────────────────────────────────┐
│ Enhance Your Evening │
├───────────────────────────────────────┤
│ │
│ Since you enjoyed Barolo last visit: │
│ │
│ » 2018 Bartolo Mascarello Barolo │
│ Perfect with your truffle course │
│ +$120.00 │
│ │
│ [ Add to Reservation ] [ No Thanks ] │
│ │
└───────────────────────────────────────┘
Acceptance Criteria
Phase 1 — MVP (6 weeks)
US#1 — Context Evaluation Engine
- Given a diner at payment confirmation
- When their reservation context matches restaurant eligibility rules
- Then system selects one add-on with >65% predicted acceptance probability (P1: ≥99.5% match accuracy)
- Failure Mode: If selection fails, log error BUT do not show nudge
- Validated by Data Eng against 10K historical transactions
US#2 — Nudge Display & Acceptance
- Given a qualified add-on offer
- When payment form is visible
- Then display text-only nudge for 8 seconds with one-tap "Add"
- Then update reservation total instantly upon acceptance (P0: 100% consistency)
- Failure Mode: If UI fails, proceed to standard checkout
- Validated by QA via 200-device matrix
Out of Scope (Phase 1):
| Feature | Why Not Phase 1 |
|---|---|
| Multi-offer carousel | Preserve one-tap simplicity |
| Custom imagery | Latency risk; Phase 1.2 |
| Cross-sell (e.g., events) | Model scope; Phase 2 |
Phase 1.1 (3 weeks):
- Dynamic offer copy templating ("Since you enjoyed X...")
- Seasonality factor weighting
- Per-operator performance dashboard
Success Metrics
Primary Metrics:
| Metric | Baseline | Target (D90) | Kill Threshold | Method |
|---|---|---|---|---|
| Add-on attach rate | 0% | 11.5% | <4.6% | Transaction DB |
| Incremental revenue/visit | $0 | $9.20 | <$3.68 | P&L attribution |
| Nudge display rate | N/A | 28% of checkouts | <15% | Event tracking |
Guardrail Metrics:
| Guardrail | Threshold | Action |
|---|---|---|
| Checkout completion time | ≤3.4 sec p95 | Rollback if >4.2 sec |
| False positive rate | <1.5% | Pause model if >3% |
What We Are NOT Measuring:
- Total upsell $ volume (vanity – conflates premium/standard diners)
- Impression count (doesn’t correlate with value; can be gamed)
- Dismissal rate (misleading – implicit dismissal is acceptable)
Risk Register
Risk: Low offer relevance due to sparse diner history
- Probability: Medium Impact: High
- Mitigation: Fallback to seasonal menu; Data Eng to implement "anonymous diner" model by launch
- Owner: Lena Chen (ML Lead) – D-14
Risk: Restaurant operators over-configure segments, lowering trigger rate
- Probability: High Impact: Medium
- Mitigation: Preset "suggested segments" in admin UI; alert when eligibility <15%
- Owner: Product Ops – Day 1 monitoring
Risk: GDPR non-compliance for EU diner predictions
- Probability: Low Impact: Critical
- Mitigation: Exclude EU diners until Art. 22 opt-out implemented; Legal signoff by sprint 4
- Owner: Legal (Priya M.) – D-21
- Consequence: If not cleared, EU rollout delayed 6 months
Kill Criteria (90 days):
- Attach rate <4.6% despite 28%+ display rate
- Checkout abandonment increases by >1.2% absolute
-
3% false positive rate (offers rejected by operator audit)
Phased Launch Plan
Pilot:
- Week 1-2: 5 Michelin partners (opt-in) – monitor performance/guardrails
- Key metric: Incremental revenue/visit ≥$8.50
Phased Rollout:
- Week 3: Tier 4 restaurants (n=120)
- Week 4: Tier 3 (n=310)
- Week 5: Tier 2+1 (all remaining)
Go/No-Go Gates:
- Legal signoff (GDPR/CCPA)
- P95 checkout latency <3.4s in load tests
- Pilot attach rate ≥7.8%
Strategic Decisions Made
Decision: Nudge display duration
Choice Made: 8-second non-dismissible display
Rationale: Balances visibility with flow interruption. Rejected infinite display (blocks flow) and dismissible banners (ignored).
────────────────────────────────────────
Decision: Fallback logic for low-confidence predictions
Choice Made: Show "seasonal tasting menu" if model confidence <65%
Rationale: Maintains offer relevance without false positives. Rejected showing nothing (missed opportunity).
────────────────────────────────────────
Decision: Restaurant override capabilities
Choice Made: Operators can disable per segment but NOT force specific offers
Rationale: Preserves AI objectivity. Rejected manual offer selection (creates maintenance burden).
────────────────────────────────────────
Decision: Data sources for model
Choice Made: Use only first-party Table22 data (no external APIs)
Rationale: Ensures latency <800ms. Rejected enrichment partners (privacy/complexity tradeoff).
Appendix
Before/After Narrative:
Before: Elena (Platinum Member) books a $350 anniversary dinner. She receives a generic email 2 days later suggesting a $95 wine pairing – but she’s already made plans. The restaurant misses an easy $95 upsell.
After: As Elena clicks "Pay Now" for her anniversary reservation, a nudge appears: "Since you enjoyed Burgundy last visit – 2015 DRC Corton Grand Cru (+$290)". She taps "Add", completing the $640 booking in 3 seconds. The restaurant captures 28% higher revenue.
Pre-Mortem:
"It is 6 months post-launch and this feature failed. The 3 reasons are:"
- Restaurants defaulted to overly restrictive segments, triggering nudges for only 9% of diners – below the economic threshold.
- The model used only 6 months of order history, causing irrelevant offers that increased checkout abandonment by 1.8%.
- Resy launched "Smart Upsells" 5 weeks earlier using identical framing, neutralizing our differentiation.
What success looks like:
Premium diners describe Table22 as "anticipating their preferences," while operators report 12% higher revenue/visit without support tickets. The product team stops debating manual upsell training programs. At QBR, the CFO notes: "This is the first feature where revenue impact exceeded projections by Week 8."