ClawCierge ๐ฆ๐ฝ๏ธ
April 6, 2026 ยท View on GitHub
ClawCierge ๐ฆ๐ฝ๏ธ
Finds and books restaurants worldwide.
Israel via direct API ยท Europe & NYC via browser handoff ยท Michelin + Time Out recommendations baked in ยท Personal Google Maps saves always surfaced first.
Platform Coverage
| Region | Platform | Method |
|---|---|---|
| ๐ฎ๐ฑ Israel | Ontopo + Tabit | Direct API |
| ๐ท๐ด Romania / Bucharest | Bookingham | Browser handoff (primary) |
| ๐ท๐ด Romania / Bucharest | OpenTable | Browser handoff (fallback, thin) |
| ๐ซ๐ท๐ฎ๐น๐ช๐ธ Europe | TheFork | Browser handoff |
| ๐บ๐ธ NYC | OpenTable + Resy | Browser handoff |
| ๐ Worldwide | Michelin Guide | Direct API (Algolia) |
TheFork note: TheFork does not support Romania โ any Bucharest query silently redirects to Paris (verified 2026-03-21). Use Bookingham for Romania.
Features
- Declarative city registry โ adding a new city is a data change only (
city_registry.py). No code changes needed for common platforms. - Personal saves first โ automatically checks your Google Maps "Want to Go" list (
wanttogo_by_city.json) before any community/editorial source. Your saves are alwayskai_pick โญ. - Multi-platform routing โ detects the right booking system per city automatically
- Michelin filter โ Bib Gourmand + Selected only; stars excluded by default (see Michelin note below)
- Curated lists โ TLV, NYC, Barcelona, Bucharest, Marseille, Genova, Messina, Valletta and more
- No CC stored โ payment always via browser handoff, never raw card data in code
- Israel-first โ Ontopo covers ~1,000 IL restaurants; Tabit covers the rest
Supported Cities
| City | Country | Platforms | Michelin | Notes |
|---|---|---|---|---|
| Tel Aviv | ๐ฎ๐ฑ IL | Ontopo, Tabit | โ Not indexed | Maps curated list + Time Out IL |
| New York | ๐บ๐ธ US | Resy, OpenTable | โ | Full Michelin + curated 64-place list |
| Barcelona | ๐ช๐ธ ES | TheFork | โ | Michelin + Bib Gourmand |
| Bucharest | ๐ท๐ด RO | Bookingham, OpenTable | โ Not indexed | Community curated + your Maps saves |
| Marseille | ๐ซ๐ท FR | TheFork | โ | Curated list |
| Genova | ๐ฎ๐น IT | TheFork | โ | Curated list |
| Messina | ๐ฎ๐น IT | TheFork | โ | Curated list |
| Valletta | ๐ฒ๐น MT | Mozrest | โ | TheFork thin; Mozrest primary |
Bucharest
Bucharest has dedicated support with a locally-curated restaurant list:
Booking: Bookingham.ro (dominant local reservation platform) โ OpenTable fallback
Curated picks (community-researched + personal Maps saves โญ):
- NOUA โ best restaurant in Bucharest, modern Romanian, tasting menu (~โฌ75)
- Kaiamo โญ, Vacamuuu โญ, Osho โญ, Nor Sky โญ, Kupaj Gourmet โญ โ personal saves
- Kane, deSoi, Ierbar, La Hambar, Lacrimi ศi Sfinศi, Caru' cu Bere, Hanu' lui Manuc
- Le Bistrot Franรงais โ signed by 2-Michelin-star chef Tom Meyer
- Eggcetera โญ โ breakfast (4.8 rating)
Michelin: Romania is not in the Michelin Guide. No stars, no Bib Gourmand.
Personal Maps Integration
ClawCierge automatically surfaces places from your Google Maps "Want to Go" list before any editorial source:
memory/places/wanttogo_by_city.json โ indexed by city (17 cities, 465 restaurants)
memory/places/bucharest.json โ city-specific parsed saves
memory/places/athens.json
memory/places/barcelona.json
Personal saves are marked kai_pick: True and appear first in all curated lists. Community/Reddit research supplements โ it never replaces.
Run python3 personal-data/parsers/parse_wanttogo.py to refresh the index from a new wanttogo.txt export.
Setup
pip install requests
export RESERVATION_EMAIL="your@email.com"
export RESERVATION_PHONE="+1234567890"
export GOOGLE_MAPS_API_KEY="your-key" # optional
Quick Start
from unified import search_and_format
# Tel Aviv
results = search_and_format("tel_aviv", date="2026-04-01", time="20:00", party_size=2)
# Bucharest
results = search_and_format("bucharest", date="2026-03-27", time="19:30", party_size=2)
print(results)
Architecture
search_and_format()
โโโ city_registry.py โ declarative per-city config (platforms, Michelin, timezone, aliases)
โโโ maps.py โ curated lists (personal Maps saves first, community research second)
โ โโโ wanttogo_by_city.json โ auto-loaded, highest signal source
โโโ recommender.py โ Michelin Algolia + Time Out (indexed countries only)
โโโ ontopo.py โ Israel direct API (Ontopo)
โโโ tabit.py โ Israel direct API (Tabit)
โโโ bookingham.py โ Romania browser handoff (Bookingham.ro)
โโโ thefork.py โ Europe browser handoff (NOT for Romania โ redirects to Paris)
โโโ opentable.py โ NYC + worldwide browser handoff
Important Notes
- Tabit
check_availability()creates a real ~15 min hold โ always calldelete_temp_reservation()on cancel - Ontopo
availability_searchis read-only โ safe to call freely - Michelin doesn't cover Israel or Romania โ fallback to curated Maps lists + Time Out
- TheFork doesn't support Romania โ Bucharest queries redirect to Paris; use Bookingham
- OpenTable worldwide โ US cities use
metroId; international cities use term-based search
OpenTable Metro IDs (US)
| City | metroId |
|---|---|
| New York | 4 |
| Chicago | 2 |
| Los Angeles | 3 |
| San Francisco | 5 |
| Boston | 6 |
| Washington DC | 7 |
| Miami | 8 |
International cities (including Bucharest) use term-based search: ?term=restaurant+{city}.
License
MIT ยฉ Yonatan Hyatt