AI-powered food tour planner using LangChain DeepAgents, Google Maps API, and Tavily research.
- Interactive Map Interface: Click to add search points and visualize coverage areas
- Smart Search: Scan neighborhoods with multiple overlapping search radii for complete coverage
- AI Planning: Use natural language prompts to let AI plan personalized food tours
- Lightweight Data Collection: Efficient API usage with minimal requests
- Beautiful Dashboards: Auto-generated HTML reports with establishment details and research findings
- Flexible Export: Preview results and select only the establishments you want before detailed export
The project uses a multi-agent architecture powered by LangChain DeepAgents:
- Scan Manager (Node.js): Web UI and basic scan functionality
- Dashboard Server (Node.js): Serves generated HTML tour reports
- DeepAgent API (Python): Coordinates AI agents for intelligent tour planning
- Restaurant Finder Agent: Searches and evaluates food establishments
- Neighborhood Researcher Agent: Analyzes local culture and food trends
- Dashboard Creator Agent: Generates beautiful HTML reports
- Node.js >= 18.0.0
- Python >= 3.9
- npm >= 9.0.0
-
Google Maps API Key (Get it here)
- Enable: Places API, Geocoding API, Maps JavaScript API
-
Tavily API Key (Get it here)
- For neighborhood research and web data
-
Anthropic API Key (Get it here) OR OpenAI API Key (Get it here)
- For AI agent reasoning
- Clone the repository:
git clone https://github.com/muratcankoylan/deepagent-food-tours.git
cd deepagent-food-tours- Install Node.js dependencies:
npm install- Install Python dependencies:
pip3 install -r requirements.txt- Create
.envfile from template:
cp .env.example .env- Edit
.envand add your API keys:
GOOGLE_MAPS_API_KEY=your_actual_key_here
TAVILY_API_KEY=your_actual_key_here
ANTHROPIC_API_KEY=your_actual_key_here # or OPENAI_API_KEYRun all three services at once:
./start.shThis will start:
- Scan Manager UI: http://localhost:3001
- Dashboard Server: http://localhost:3002
- DeepAgent API: http://localhost:5001
If you prefer to run services individually:
# Terminal 1: Scan Manager
npm start
# Terminal 2: Dashboard Server
npm run dashboard-server
# Terminal 3: DeepAgent API
npm run deepagent-api- Open http://localhost:3001
- Click on the map to add search points
- Configure radius and categories
- Click "Create Scan Task"
- Wait for scanning to complete
- Click "View Results & Export"
- Select establishments and export
- Open http://localhost:3001
- Click on the map to add search points for the neighborhood
- Enter an AI prompt like:
- "I want a fun evening exploring local food"
- "Plan a romantic dinner date in this area"
- "Find the best brunch spots for a Sunday morning"
- Click "Create Scan Task"
- Wait 1-2 minutes for the AI to plan your tour
- Click "View AI Dashboard" to see the generated tour report
deepagent-food-tours/
├── src/
│ ├── services/
│ │ ├── places.js # Google Places API wrapper
│ │ ├── neighborhood-analyzer.js # Multi-point scan logic
│ │ └── geographic-sorter.js # Route optimization
│ ├── agents/
│ │ ├── food_tour_agent.py # Main DeepAgent
│ │ └── tools/
│ │ ├── places_lightweight.py # Lightweight Places API
│ │ ├── tavily_research.py # Neighborhood research
│ │ └── dashboard_generator.py # HTML report generator
│ ├── scan-manager.js # Web UI backend
│ ├── dashboard-server.js # Dashboard hosting
│ └── deepagent-api.py # Python API bridge
├── public/
│ └── index.html # Web UI frontend
├── dashboards/ # Generated HTML reports
├── output/ # Export JSON files
├── package.json
├── requirements.txt
├── start.sh
└── .env.example
- User adds search points on the map
- System performs circular searches at each point
- Automatic deduplication removes overlapping results
- User previews results and selects items for detailed export
- Full details fetched only for selected items (saves API calls)
- User provides location and natural language prompt
- DeepAgent creates task breakdown
- Restaurant Finder agent searches for relevant establishments
- Neighborhood Researcher agent analyzes the area
- Dashboard Creator agent generates an HTML report
- User views the complete tour plan at http://localhost:3002
If you see "address already in use" errors:
# Kill processes on ports 3001, 3002, 5001
lsof -ti:3001,3002,5001 | xargs kill -9Make sure you're in the project root when running:
cd /path/to/deepagent-food-tours
python3 src/deepagent-api.pyCheck your .env file has all required keys:
cat .envFor large neighborhoods, increase the timeout in src/scan-manager.js (currently 5 minutes).
Contributions welcome. Please open an issue first to discuss proposed changes.
MIT
- Built with LangChain DeepAgents
- Uses Google Maps Platform APIs
- Powered by Tavily Research API
Feel free to use this as a template for your own DeepAgent projects.







