A diner's teardown · reservations & private events
I've eaten at Meteora. The live-fire format, the room, the service: it's genuinely one of the best rooms in LA, and the Michelin star is earned. This isn't that kind of review.
I build agent-ready commerce for a living, so afterward I looked at meteora.la the way a hesitant first-time guest, or increasingly, their AI assistant, actually experiences it: trying to book a table, trying to book a buyout, and trying to just get someone on the phone. Four things are quietly costing bookings. None of them require a rebuild.
The short version
The regular table booking works fine. But your highest-margin path, private events and buyouts, is the least legible thing on the site, the phone number silently fails on mobile, and an AI trying to book "a Michelin tasting in LA Friday for two" would find almost nothing to reason from on meteora.la itself.
No jargon. The room and the star are earned; every fix below is about not losing a booking your site is already so close to winning. Here is what each one is worth.
A buyout is your biggest single check, but the button sends planners to a form branded for another restaurant where they have to self-sort; a dedicated door keeps those high-value leads instead of losing the ones who bail rather than guess.
The tap-to-call link is broken by a stray character, so on a phone it goes nowhere; a two-character fix turns the same-day change or party-of-eight question into a kept table instead of a lost one.
Your own site can't state a price, a dietary policy, or be read as a restaurant by an assistant, so the booking agent goes elsewhere, and elsewhere might book them somewhere that can answer; making it legible puts you in the answer.
Every path hands off to OpenTable, whose bot-defense turned away even a real browser this session; carrying your own machine-readable availability means an AI reservation agent can still find you when that door won't open.
What's happening
What happens: The homepage has a "PRIVATE DINING" section with its own RESERVE button, the same word used three other times on the page for a normal dinner reservation. Click it, though, and it leaves meteora.la entirely for vespertine.tripleseat.com, a form titled "Vespertine – Event Request" that opens with: "Please fill out the following form and specify your interest in either Vespertine, Meteora, or Destroyer." Further down, there's a free-text box asking "Which location (Destroyer, Meteora, or Vespertine) are you inquiring about?"
Why it costs revenue: a buyout inquiry is your highest-margin conversion, bigger than any single tasting menu check, and the whole point of a form like this is to make the coordinator's life easy. Right now a corporate planner or a bride researching three Jordan Kahn restaurants at once has to self-sort into the right building on a form branded for a different one. Some of those leads land on the wrong venue's desk; some people just bail rather than guess.
What happens: "323-402-4311" is on every page, styled as a normal tap-to-call link. But the underlying HTML wraps it in curly typographic quotes instead of straight ones, so the browser doesn't see a phone number at all.
<!-- what's actually in the page source --> <a href="“tel:323-402-4311”">323-402-4311</a> // what the phone's browser resolves that to, on tap: a.href → "https://meteora.la/%E2%80%9Ctel:323-402-4311%E2%80%9D" // a 404 on your own domain — not a phone call
Why it costs bookings: this is the number a guest calls for exactly the moments your site can't handle itself: a same-day change, a dietary question for a party of eight, a "can you actually fit us in tonight." On mobile, tapping it does nothing useful. It's a two-character fix (curly quotes → straight quotes, or drop them) that currently sends every one of those calls nowhere.
What happens: meteora.la's own structured data has zero restaurant-specific markup: no Restaurant, Menu, or ReservationAction schema.org type (schema.org = the invisible labels search engines and AIs read), just generic WordPress/SEO boilerplate (WebPage, WebSite, BreadcrumbList). There's no llms.txt (the file AI assistants read first) (404). And the menu page, to its credit, real crawlable text, not a locked PDF, never states a price, never mentions a dietary or allergy policy, and never explains the rule that the tasting format actually requires: full party participation (everyone at the table gets the same tasting menu).
$ curl -s https://meteora.la/llms.txt 404 $ grep '"@type"' meteora.la homepage structured data WebPage, WebSite, BreadcrumbList, ListItem, ImageObject, SearchAction, ReadAction, EntryPoint, PropertyValueSpecification // no Restaurant · no Menu · no ReservationAction · no priceRange $ grep -i '$|dietary|allerg|vegetarian|cancel' meteora.la/menu/ 0 matches // price and dietary policy live nowhere on the site itself
Why it matters now, not eventually: the $115 four-course / $165 six-course pricing is real and easy to find, but only on third-party listing pages, never on meteora.la. When someone (or their assistant) asks "what does a tasting at Meteora cost, and can you do a vegetarian substitution," your own site can't answer either question. The guest, or the agent acting for them, has to go elsewhere to find out, and "elsewhere" might just book them somewhere that can answer.
What happens: All four "RESERVE" buttons that do work send the guest straight to OpenTable, normal for fine dining, and not a criticism on its own. But it means meteora.la itself can never answer "are you free Friday for two," because it holds none of that data. Worth knowing: OpenTable's own bot-defense turned away this session outright (an Akamai "Access Denied," even from a real, human-driven Chrome browser), which is a signal that if an AI travel or reservation agent tries to check availability the same way a person's browser would, it may get walled off before it ever sees a table.
Why it's worth watching: this one isn't Meteora's fault: it's OpenTable's infrastructure. But it means the fallback for finding #3 (an agent reasoning from your own site) isn't optional forever. If meteora.la doesn't carry its own bookable signal, and the booking partner's front door is hard for automated visitors to get through, both the human-friction and the agent-friction paths point at the same fix.
What's already working: worth saying out loud
Also noticed, lower priority: the site footer still reads "copyright 2022–2024", a small tell that the marketing site gets set up once and not revisited. And meteora.la sends no baseline security headers (HSTS, CSP, X-Frame-Options), worth a look whenever the DNS/CDN config is next touched, not urgent.
What better could feel like
I mocked up the fix in Meteora's own palette and typography: one door for a table, a visibly different one for private events, and a working demo of an assistant booking "a Michelin tasting in LA Friday for two" using data your site doesn't expose yet.
See the fix + the agent demo →Not proposing a rebuild. The smart first move is small:
Happy to walk through any of this, or just hand it to whoever manages the site. I'm bringing this because the room and the food already earned the star: the booking path should work as hard as the kitchen does.