Inspiration

 Food discovery is broken. You search "vegan burger near me" and you get a list of restaurant names — not answers. You still don't know if a place actually has a vegan patty or if the only vegan thing on the menu is a side salad. You end up  opening five websites, half of which are outdated or broken, and by the time you figure it out you've wasted ten minutes and you're even hungrier.

 We wanted to build a food search engine that actually reads the menu for you. One that understands dietary restrictions, price, and location at the dish level — not just the restaurant level.

What it does

 Tantalus is an AI-powered food discovery platform. Users search in natural language — "gluten-free pizza in Chapinero" or "vegan ramen under $20 downtown" — and the app returns real results from real menus.

 For any restaurant it hasn't seen before, Tantalus automatically kicks off a background enrichment pipeline: it scrapes the restaurant's website, pulls Google reviews, and if the menu is buried inside a JavaScript app or a PDF, Amazon Nova  Premier reads it visually — just like a human would. That data lands in a per-restaurant Bedrock Knowledge Base, indexed and ready for semantic search.

 Once a restaurant is enriched, users can open an AI chat and ask follow-up questions — "do they do takeout?", "what's the most popular dish?" — and get answers sourced directly from that restaurant's actual menu and reviews, with citations.

 # How we built it

 The entire stack is serverless on AWS:

 - Frontend: React + TypeScript + Vite, deployed on S3 + CloudFront  - Backend: Five right-sized Python Lambda functions (API, Search Agent, Menu Processing, Review Analysis, Enrichment) behind API Gateway  - AI Search: A Strands-powered agent queries Google Places and internal DynamoDB tables in parallel, deduplicates results, and applies dietary/price/distance filters  - Vision AI: Amazon Nova Premier reads menus from images, PDFs, and JavaScript-rendered pages — extracting items, prices, and dietary attributes without any human labeling  - RAG: Amazon Bedrock Knowledge Bases + OpenSearch Serverless power per-restaurant semantic search so there's zero cross-contamination between restaurants  - Infrastructure: Fully defined in AWS CDK — one cdk deploy stands up the whole system

 Challenges we ran into

 Menus are a mess. Restaurants store them in PDFs, images, JavaScript-rendered pages, and third-party delivery apps — none of which a standard scraper can handle. Getting Nova to reliably extract structured data from visual menus took  significant prompt engineering and iteration.

 Per-restaurant knowledge base isolation. Keeping each restaurant's data cleanly separated in Bedrock — so a RAG query about one restaurant never bleeds into another — required careful KB architecture and indexing strategy.

 Async enrichment at scale. Triggering background enrichment on first search, tracking enrichment state, handling partial failures, and making sure the same restaurant isn't enriched twice required a robust state machine in DynamoDB.

 Accomplishments that we're proud of

 - Amazon Nova Premier doing real visual menu extraction — it reads menus the way a person would, handling formats that break every traditional parser  - A fully serverless, zero-ops architecture that can scale from zero with no infrastructure to manage  - Natural language search that returns dish-level results, not just restaurant names  - Per-restaurant RAG with citation support — the AI doesn't hallucinate, it quotes the source

 What we learned

 Amazon Nova's multimodal capabilities are genuinely powerful for unstructured document understanding. Menus were our hardest data problem, and Nova solved it in a way that would have taken months with traditional OCR + parsing pipelines.

 We also learned that building for real-world data messiness — broken websites, missing menus, inconsistent formats — is the actual engineering challenge. The AI is the easy part once the data pipeline is solid.

 What's next for Tantalus

 Amazon Nova will be central to everything ahead. We want to expand its role beyond menu extraction into full conversational food discovery — understanding complex, multi-turn queries like "something warm, not too spicy, good for a first date,    under $30" — using Nova's reasoning capabilities to match dishes to intent, not just keywords.

 On the enrichment side, we plan to use Nova's vision capabilities to automatically detect when a menu has changed from a photo and trigger re-enrichment, keeping the knowledge base fresh without any manual effort.

 We're also expanding to restaurant portals, so owners can upload menus directly and use Nova to automatically generate dish descriptions, tag allergens, and suggest pricing based on comparable items.

 ---  A huge thank you to Slalom for the support, resources, and encouragement that made Tantalus possible. This project wouldn't exist without the investment Slalom puts into its people and their ideas.

Built With

  • bedrock
  • bedrock-knowledge-base
  • dynamodb
  • lambda
  • s3
Share this project:

Updates