Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🍽️ Austin Eats — AI Restaurant Search

AI-powered restaurant discovery app built using Google Gemini + AlloyDB. This project enables users to search restaurants using natural language or semantic search, powered by embeddings.


Live Demo


Features

Natural Language Search

  • Users can type queries like "cheap tacos" or "best Japanese restaurants" or "high rating restaurants".
  • Google Gemini converts the query into SQL.
  • SQL is executed on AlloyDB in real time.

Semantic Search (Vector Search)

  • Uses embeddings (text-embedding-005).
  • Finds restaurants based on meaning, not just exact keywords.
  • Returns a similarity score for each result.

Explainable AI

  • Displays generated SQL queries directly in the UI.
  • Improves transparency and simplifies debugging.

Modern UI

  • Clean, responsive interface.
  • Dynamic result cards.
  • Interactive search suggestions.

Architecture

System Flow

Frontend (HTML + JS) → Flask Backend (API) → Gemini API → SQL Generation → AlloyDB (PostgreSQL) → Results returned to UI

Use Case Diagram

Use Case Diagram


Screenshots

Screenshot 1
Screenshot 2
Screenshot 3


Tech Stack

  • Frontend: HTML, CSS, JavaScript
  • Backend: Flask (Python)
  • Database: AlloyDB (PostgreSQL)
  • AI Models: Gemini (NL → SQL), text-embedding-005 (semantic search)
  • ORM / DB: SQLAlchemy
  • Deployment: Google Cloud Run
  • Containerization: Docker

📁 Project Structure

.
├── app.py
├── templates/
│   └── index.html
├── assets/
│   ├── usecase_diagram.png
│   └── screenshots/
│       ├── image_2026-03-27_17-26-45.png
│       ├── image_2026-03-27_17-36-25.png
│       └── image_2026-03-27_17-21-25.png
├── requirements.txt
├── Dockerfile
└── README.md

Cloud Deployment (Google Cloud Run)

The application is designed to run in Google Cloud due to AlloyDB private networking and Gemini API integration. Example deployment command:

gcloud beta run deploy restaurant-ai-finder \
  --source . \
  --region=us-central1 \
  --network=easy-alloydb-vpc \
  --subnet=easy-alloydb-subnet \
  --vpc-egress=all-traffic \
  --allow-unauthenticated \
  --clear-base-image \
  --set-env-vars GEMINI_API_KEY='YOUR_GEMINI_API_KEY',DATABASE_URL='YOUR_ALLOYDB_CONNECTION_STRING'

API Endpoints

  • Get All Restaurants: GET /api/restaurants
  • Natural Language Search: GET /api/search?query=your_query
  • Semantic Search: GET /api/semantic-search?query=your_query
  • Health Check: GET /health

Safety Considerations

  • SQL queries are generated via AI → must be validated before execution.
  • Only SELECT queries should be allowed (recommended improvement).

Future Improvements

  1. Add query validation for security
  2. Add user feedback (thumbs up / down)
  3. Improve UI with loading skeletons
  4. Add location-based filtering
  5. Cache Gemini responses for performance

Hackathon Context

Built as part of Google Gen AI Academy APAC — Track 3 (Cohort-1)

Focus: - AI-ready databases

  • Natural language data access
  • AlloyDB + Gemini integration

About

AI-powered restaurant discovery platform using Flask and AlloyDB AI. Features custom NL-to-SQL logic via Gemini API and semantic vector search for localized Austin dining

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages