CeliacBot

Inspiration

Having celiac disease, every time I want to eat out I have to investigate the different restaurant alternatives. Sometimes, the restaurant explicitly has celiac-safe options in the online menu. Most times, I have to dig into two-year-old Google Maps reviews and eventually call the restaurant, to finally hear that they don't know what celiac means, so then I have to investigate the next one, and so on.

If I decide to just follow the first review I find mentioning it's "gluten free," well, the other day I suffered from that. My friends and I had just finished playing a soccer match and wanted to go out for dinner. It was late; we were tired. "Let's go to In N Out," one suggested. I had to look for if it was safe for me, so I searched in Google Maps for comments. I quickly saw a comment mentioning they offered a gluten free option and decided to go for it. Bad mistake: at 4 AM I experienced issues on the bathroom.

In short, if I don't thoroughly investigate restaurants before eating there, I can get very sick because I have celiac disease (it's already happened), and investigating is a pretty tedious process.

What it does

It runs an AI agent that autonomously investigates for me on a given neighborhood, and shows me the distilled information right away. How safe is restaurant or cafe X? How do they prepare the food? Do they follow a proper cooking protocol to ensure food is actually safe for celiac diners?

Internally, it does the following:

A Claude-powered workflow runs in the background, managed with Orkes. It first checks Redis for fresh cached results. If fresh results already exist, it shows them immediately. Otherwise, it uses Browserbase to discover restaurants for an area query, or identify the right venue for a single-restaurant query, then gathers public evidence from menus, allergen pages, websites, reviews, and related sources while storing the findings in Redis.

Then Claude synthesizes only the stored evidence into cautious labels, summaries, missing protocol questions, and explanations.

For selected restaurants, a Deepgram voice agent can call the restaurant over phone outbound, ask celiac-relevant protocol questions, and store the recording, transcript, and structured answers. The agent uses Redis RAG to retrieve restaurant data for the conversation.

Apart from the research itself, Arize evaluates the quality of the evidence-to-label step, such as grounding and overclaim risk, and Sentry captures reliability issues in the web app.

Last but not least, the agent is listed in the Agentverse, for it's better not locked into a single web app.

Tech stack

  • Web app: Django, htmx, vanilla CSS, vanilla JavaScript
  • Hosting: VPS deployment at https://celiacbot.com, Caddy, WhiteNoise
  • Data layer: external Redis as the only datastore, cache layer, and evidence retrieval engine
  • Evidence gathering: Browserbase for restaurant discovery, restaurant identification, and public web evidence collection
  • LLM analysis: Claude API for evidence synthesis, cautious guidance/labeling, and call summarization
  • Embeddings / retrieval: OpenAI text-embedding-3-small for Redis-backed semantic retrieval
  • Workflows: Orkes local runtime / Agentspan-style workflow orchestration
  • Voice calls: Deepgram voice agent for the restaurant conversation, with Vapi only as outbound phone transport
  • Observability and evals: Sentry for web app reliability and Arize AX for evidence-to-label evals
  • Visual assets: Midjourney for logo / demo imagery
  • Distribution: Fetch.ai / Agentverse, plus SEO through SSR and a proper domain name.

How I built it

I applied the Ralph Wiggum technique based on The Ralph Playbook guide, using Codex as my AI agent.

More specifically, I basically did the following:

  1. Noted down my initial idea of the project.
  2. Wrapped my idea in a prompt for Codex to discuss it together and interview me, while taking notes during the session, and to later write specs defining the expected product behavior and certain expected implementation details such as the sponsor integrations. At the same time, I was setting up sponsor services accounts and installing their CLIs and skills.
  3. Asked Codex to set up the Ralph files based on The Playbook for me.
  4. Ran one iteration, tuned prompts/loop/specs/plan, and repeated until it was good enough to leave running for a while. I tuned Ralph as a guitar.
  5. Left Ralph running and went to have a 90-minute sleep cycle.
  6. Freshly, I reviewed work. It wasn't great, but it wasn't desastrous either. I re-aligned my mental model and the specs between each other, while I also some polished UI and copy issues.
  7. Left Ralph running again, while I wrote this document you are reading and then went to sleep a bit more.
  8. Woke up, did some QA, polished UI, prepared demo, and submitted.

Challenges we ran into

  • Hunger. This was yet another day I experienced the difficulties of having celiac disease, because when I arrived at lunch, there was no more gluten free food left, so I did not have lunch.
  • Lack of taste from AI agents. I had to constantly be on top of them because the UI and copy was horrible. They repeat themselves a lot; they are too wordy; they get mis-aligned after a while.

Accomplishments that we're proud of

This solves a very tedious problem I have every time I visit a new city.

What we learned

  • I learned more about the Ralph technique while doing this.
  • I reinfornced my intuition that Just Ralph It would be super useful.

What's next for CeliacBot

  • Keep iterating based on feedback from users other than me and from evals.
  • Think how to monetize it so it becomes self-sustainable.

Built With

  • anthropic-claude
  • arize
  • browserbase
  • deepgram
  • django
  • htmx
  • openai
  • openai-embeddings
  • orkes
  • redis
  • vapi
Share this project:

Updates