ClawCierge ๐Ÿฆž๐Ÿฝ๏ธ

April 6, 2026 ยท View on GitHub

ClawCierge โ€” Restaurant Search & Booking

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.

Python License: MIT OpenClaw Skill


Platform Coverage

RegionPlatformMethod
๐Ÿ‡ฎ๐Ÿ‡ฑ IsraelOntopo + TabitDirect API
๐Ÿ‡ท๐Ÿ‡ด Romania / BucharestBookinghamBrowser handoff (primary)
๐Ÿ‡ท๐Ÿ‡ด Romania / BucharestOpenTableBrowser handoff (fallback, thin)
๐Ÿ‡ซ๐Ÿ‡ท๐Ÿ‡ฎ๐Ÿ‡น๐Ÿ‡ช๐Ÿ‡ธ EuropeTheForkBrowser handoff
๐Ÿ‡บ๐Ÿ‡ธ NYCOpenTable + ResyBrowser handoff
๐ŸŒ WorldwideMichelin GuideDirect 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 always kai_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

CityCountryPlatformsMichelinNotes
Tel Aviv๐Ÿ‡ฎ๐Ÿ‡ฑ ILOntopo, TabitโŒ Not indexedMaps curated list + Time Out IL
New York๐Ÿ‡บ๐Ÿ‡ธ USResy, OpenTableโœ…Full Michelin + curated 64-place list
Barcelona๐Ÿ‡ช๐Ÿ‡ธ ESTheForkโœ…Michelin + Bib Gourmand
Bucharest๐Ÿ‡ท๐Ÿ‡ด ROBookingham, OpenTableโŒ Not indexedCommunity curated + your Maps saves
Marseille๐Ÿ‡ซ๐Ÿ‡ท FRTheForkโœ…Curated list
Genova๐Ÿ‡ฎ๐Ÿ‡น ITTheForkโœ…Curated list
Messina๐Ÿ‡ฎ๐Ÿ‡น ITTheForkโœ…Curated list
Valletta๐Ÿ‡ฒ๐Ÿ‡น MTMozrestโŒ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 call delete_temp_reservation() on cancel
  • Ontopo availability_search is 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)

CitymetroId
New York4
Chicago2
Los Angeles3
San Francisco5
Boston6
Washington DC7
Miami8

International cities (including Bucharest) use term-based search: ?term=restaurant+{city}.


License

MIT ยฉ Yonatan Hyatt