Redis-powered restaurant discovery with intelligent dining assistance.
An AI-powered restaurant discovery platform that combines Redis's speed with LangGraph's intelligent workflow orchestration. Get personalized restaurant recommendations, smart dining suggestions, and lightning-fast responses through semantic caching.
- Node.js + Express (Backend API)
- Redis (Restaurant store, agentic AI memory, conversational history, and semantic caching with Redis LangCache)
- OpenAI API (GPT-4 for intelligent responses and embeddings for vector search)
- LangGraph (AI workflow orchestration)
- HTML + CSS + Vanilla JS (Frontend)
- Smart Restaurant Discovery: AI-powered assistant helps you find restaurants, discover cuisines, and manage your reservations. Both text and vector-based search across restaurants
- Dining Intelligence: Get restaurant recommendations with detailed information for any cuisine or occasion using RAG (Retrieval Augmented Generation)
- Demo Reservation System: Reservation management - add, view, and manage restaurant reservations (Simplified demo implementation, not a production-ready reservation system)
- Redis as memory layer: For fast data retrieval
- Vector Search: Find restaurants using AI-powered similarity search
- Semantic Cache: Similar queries return instantly using Redis LangCache
- LangGraph Workflows: AI agent routing, tool selection
- Multi-tool Agent: Restaurant tools, search tools, reservation tools, and knowledge tools
Follow the setup instructions below to get started.
- Redis: Use Redis Cloud (no installation required)
- Redis LangCache API: Get LangCache credentials
- OpenAI API Key: Create an API key
- Node.js (v18 or higher): Download & Install Node.js
-
Clone and setup
git clone <repository-url> cd relish npm install
-
Configure environment
cp .env.example .env # Edit .env with your Redis URL, OpenAI key, and LangCache credentials -
Load restaurant data
npm run load-restaurants
-
Start the server
npm start
-
Open your browser
http://localhost:3000
│
├── package.json
├── index.js
├── config.js
├── services/
│ ├── restaurants/ # Restaurant Business Component
│ │ ├── api/ # REST API endpoints
│ │ ├── domain/ # Business logic
│ │ └── data/ # Data access layer
│ ├── reservations/ # Reservation Business Component
│ │ ├── api/
│ │ ├── domain/
│ │ └── data/
│ ├── chat/ # Chat/Cache Business Component
│ │ ├── api/
│ │ ├── domain/
│ │ └── data/
│ ├── users/ # User Business Component
│ │ ├── domain/
│ │ └── data/
│ ├── ai/ # Agentic AI Layer
│ └── routes/
├── client/ # Frontend assets
├── views/ # HTML and Handlebars templates
├── scripts/ # Data loading scripts
└── README.md # This file
POST /api/chat- Main chat interface for AI restaurant assistantGET /api/restaurants/search- Search restaurants with text/vector similarityPOST /api/reservations/add- Add restaurant reservations (demo implementation)GET /api/reservations- View reservation history (demo implementation)DELETE /api/reservations- Cancel reservations (demo implementation)
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes following Conventional Commits (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Ashwin Hariharan - @booleanhunter
This project is licensed under the MIT License - see the LICENSE file for details.
If you find a bug or have a feature request, please open an issue in the repository.
