Last updated 5 September 2026.
When you leave a rating or a comment, it is stored in a Google Firebase database and served to everyone who opens the site. Stored with it are the display name you chose, the dish or menu it is about, the week, the time you posted, and an anonymous ID for your browser (below).
"Public" here is stronger than "visible on the page". The database is readable by anyone on the internet with the site's address — that is how your browser reads it, and nothing stops someone reading it directly instead of through this page. So anyone can list every comment ever posted, including ones this site hides, and group them by the browser that wrote them. The site's own filtering makes the page tidy; it is not a lock.
Please do not post anything you would mind a stranger reading, and do not post other people's personal information. The display name is free text that nobody checks, so it is not proof of who wrote something — including when it looks like someone you know.
There is no login, no password and no email address. When the comment section loads, Firebase quietly issues your browser an anonymous ID: a random string with no name attached. The site uses it for exactly three things — showing you Edit and Delete on your own comments, keeping you to one rating per dish, and naming the folder a photo would upload into.
That ID belongs to one browser on one device. If you clear your site data, use a private window, switch browsers or switch devices, you get a new one, and there is no way to connect it to the old one. In practice that means:
A comment appears on the site immediately. Roughly every fifteen minutes, an automated job sends the pending comments to Google Gemini and asks it to flag anything abusive. What is sent is the comment text and the display name — not your anonymous ID, not the dish, not the rating. Google's own privacy policy and its API terms cover what Google does with it.
A comment the check flags is hidden from this site, and a short machine-written reason is stored on it. It is not deleted: it stays in the database, still readable directly, and the reason is readable too. Because the check runs after the fact and is a machine's judgement, expect both mistakes: something unpleasant may sit on the page for a while, and something harmless may vanish from it. There is also a small word filter in the page itself, which is easy to get around and is not the real check.
A few times a day, the week's comments are sent to Gemini and condensed into the summary behind the 📋 Weekly feedback summary button. The summary is asked for short direct quotes, so your words can appear in it word for word. Your display name and your anonymous ID are not sent for this and do not appear in it — the rating and the text do. In a very quiet week the comments are published as written, with no summarising at all.
The summary is published as a file on this site and kept permanently, one per week, and it is also committed to the project's source history. That has a consequence worth stating plainly: deleting a comment does not remove it from a summary that has already been published.
Attaching a photo to a comment is switched off at the moment, so nothing can be uploaded today. Photos attached before it was switched off are still shown. If it is switched back on, the terms are: an uploaded photo is public to anyone with its address, it is stored in a folder named after your anonymous ID, and there is no way to delete it — deleting the comment leaves the file behind. Only the maintainer can remove one.
The dish pictures the 🖼 button shows are a different thing entirely. They are search results from the web, not photos of the actual food, and they are often wrong.
Every comment of yours carries Edit and Delete, from the browser that posted it. Deleting removes the record from the database. To take back a rating you left without a comment, open the same rating form and click the lit star again — the stars clear and the rating is withdrawn.
Two things deletion cannot reach: a weekly summary that already quoted you, and the project's source history, both described above. If you need something removed that you can no longer reach yourself — because you changed device, or because it was published in a summary — use the 💡 Report bug or feature button and say so. The maintainer does it by hand. There is no automated request channel and nobody is on call.
Nothing here expires on its own. Comments, ratings and summaries stay until somebody removes them. The maintainer can also remove any comment, at any time, without notice.
Pressing 💡 Report bug or feature sends what you typed, plus your display name, to a small program run by this project. That program shows the text to Gemini for a short triage note, then files the text, your display name and the note into the project's issue tracker. The tracker is private — only the maintainer can read it — but it is a setting rather than a promise built into the code, so please do not put anything sensitive in the box. Nothing is sent until you press Submit.
There is no analytics on this site, no advertising, no tracking pixels, and it sets no cookies. The only thing kept in your browser's own storage is the display name you chose, plus whatever Firebase needs to remember your anonymous sign-in. What does leave your device:
Each of those companies keeps its own logs under its own policy, and this project has no say in that.
If you have a food allergy, do not rely on this site. The allergen lines are copied automatically from Caltech Dining's spreadsheets and are reproduced without being checked. They can be missing, out of date, or wrong, and the copying itself can misread a line. Ask the dining staff.
The menus come from Caltech Dining's published pages and change whenever the dining team changes them. The site can also fall behind: if the dining team moves a menu somewhere new, this site can keep showing an old one, or nothing, without saying so. Times, dishes and closures are not guaranteed.
Star ratings are opinions typed by whoever happened to be here, not a survey. There is nothing stopping one person rating from several browsers, so read the numbers loosely.
Anyone can post — being signed in happens automatically, so posting is open to whoever opens the page. Please keep it to comments about the food. No harassment, no abuse, nothing about identifiable staff or students that you would not say to them, no impersonating anyone, and nothing illegal. Do not try to overwhelm the site or scrape it at volume. Posting something means you are fine with it being published here and quoted in the weekly summary.
This is an independent student project. It is not affiliated with, endorsed by, or operated by the California Institute of Technology or Caltech Dining. Menu text and allergen information belong to Caltech Dining; it is reproduced here to be read, not claimed.
To report a mistake, ask for something to be removed, or raise anything on this page, use the 💡 Report bug or feature button on the front page. That is the only contact channel.
The site is provided as-is, with no warranty of any kind. It may be wrong, it may be down, and comments may be lost. To the extent the law allows, the authors are not liable for any loss arising from your use of it — including a missed meal, a menu that turned out to be wrong, or a reaction to a dish whose allergen line was incomplete.
If any of this changes, the date at the top changes with it.