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.
- App: Live App Link
- Demo Video: Watch on Google Drive
- 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.
- Uses embeddings (
text-embedding-005). - Finds restaurants based on meaning, not just exact keywords.
- Returns a similarity score for each result.
- Displays generated SQL queries directly in the UI.
- Improves transparency and simplifies debugging.
- Clean, responsive interface.
- Dynamic result cards.
- Interactive search suggestions.
Frontend (HTML + JS) → Flask Backend (API) → Gemini API → SQL Generation → AlloyDB (PostgreSQL) → Results returned to UI
- 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
.
├── 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
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'
- 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
- SQL queries are generated via AI → must be validated before execution.
- Only
SELECTqueries should be allowed (recommended improvement).
- Add query validation for security
- Add user feedback (thumbs up / down)
- Improve UI with loading skeletons
- Add location-based filtering
- Cache Gemini responses for performance
Built as part of Google Gen AI Academy APAC — Track 3 (Cohort-1)
Focus: - AI-ready databases
- Natural language data access
- AlloyDB + Gemini integration



