Atlas.AI is an AI-powered business location intelligence platform for Delhi, India. It combines interactive maps with conversational AI to help entrepreneurs find optimal locations for their businesses and discover market opportunities.
- Ask "Where should I open a cafe?" and get the top 3 best areas
- Scoring based on 11 criteria: footfall, rent, transit, parking, safety, and more
- Isochrone-based competitor and ecosystem analysis
- Complementary business mapping
- Ask "What business should I start in Hauz Khas?"
- Gap analysis to find underserved categories
- Complementary business recommendations
- Trend indicators (Emerging π± / Growing π / Saturated
β οΈ )
- Toggle on Deep Research for real-time web insights
- Pros, cons, and market analysis from current web data
- Powered by Tavily API with LLM summarization
- Markdown-formatted insights with source citations

- Color-coded POI markers by category
- Click areas to zoom and explore
- Layer controls for competitors, complementary businesses
- Isochrone visualization

- Natural language queries converted to SQL
- Query history with quick-recall
- Collapsible side panel for results
| Layer | Technology |
|---|---|
| Frontend | React 19, Vite, Tailwind CSS, MapLibre GL, react-markdown |
| Backend | FastAPI, Python 3.11+, uvicorn |
| AI/LLM | LangChain, Groq (openai/gpt-oss-120b) |
| Research | Tavily API (web search + insights) |
| Database | PostgreSQL 16 + PostGIS 3.4 |
| External APIs | LatLong.ai (geocoding, isochrones, POI) |
| Deployment | Docker, Docker Compose |
# Clone the repository
git clone https://github.com/Flameingmoy/Atlas.AI.git
cd Atlas.AI
# Create environment file with your API keys
cp .env.example .env
# Edit .env and add your API keys (see Environment Variables below)
# Start all services (PostGIS, Backend, Frontend)
docker compose up -d
# Seed the database (first time only)
docker compose exec backend python scripts/seed_db.py
# Access the application
# Frontend: http://localhost:8080
# Backend: http://localhost:8000
# PostGIS: localhost:5433# Backend
cd backend
pip install -r requirements.txt
cd ..
python scripts/seed_db.py
cd backend && uvicorn app.main:app --reload
# Frontend (in another terminal)
cd frontend
npm install
npm run dev- Open
http://localhost:8080 - Type: "Where should I open a gym?"
- View top 3 recommended areas with scores
- Click any area to zoom on map
- Type: "What business should I start in Connaught Place?"
- View gap opportunities and complementary suggestions
- Check trend indicator for market saturation
- Toggle ON the π Deep Research button
- Submit your query
- Wait for Tavily AI to search the web (~15-30 seconds)
- View real-time pros, cons, and market insights
Atlas.AI/
βββ backend/ # FastAPI backend
β βββ app/
β βββ api/routes.py # REST endpoints
β βββ core/db.py # PostGIS connection
β βββ models/schema.py # Pydantic models
β βββ services/
β βββ ai_agent.py # Chat agent with tools
β βββ business_location_agent.py # Location recommender agent
β βββ location_recommender.py # Scoring & ranking logic
β βββ area_business_analyzer.py # Gap & opportunity analysis
β βββ deep_research_agent.py # Tavily web research
β βββ text_to_sql_service.py # NL to SQL conversion
β βββ latlong_client.py # External API client
βββ frontend/ # React frontend
β βββ src/
β βββ App.jsx # Main app with chat UI
β βββ components/
β β βββ Map.jsx # MapLibre GL map
β β βββ LayerControl.jsx
β βββ services/api.js # Backend API client
βββ data/ # CSV data files
βββ scripts/ # Database seeding
βββ docs/ # Documentation
βββ docker-compose.yml # Container orchestration
- Overview - System architecture and core concepts
- Technical Design - Detailed design with diagrams
- Installation Guide - Docker and manual setup
- Database Seeding - Populate with sample data
- Map Configuration - Configure map tiles
- Database Schema - PostGIS tables and spatial queries
- REST API - Endpoint documentation
- Text-to-SQL - Natural language query system
- Development Guide - Contributing guidelines
- Migration Notes - Version history
| Variable | Description | Required |
|---|---|---|
GROQ_API_KEY |
Groq API key for LLM | β Yes |
LATLONG_TOKEN |
LatLong.ai API token | β Yes |
TAVILY_API_KEY |
Tavily API key for deep research | βͺ Optional |
DB_HOST |
PostGIS host | No (default: db) |
DB_PORT |
PostGIS port | No (default: 5432) |
DB_USER |
PostGIS user | No (default: atlas) |
DB_PASSWORD |
PostGIS password | No (default: atlas_secret) |
DB_NAME |
PostGIS database | No (default: atlas_db) |
- Groq: console.groq.com (free tier available)
- LatLong.ai: latlong.ai
- Tavily: tavily.com (free tier: 1000 searches/month)
Where should I open a cafe?
Best location for a gym in Delhi?
I want to start a clothing boutique
Where to open a dental clinic?
What business should I start in Hauz Khas?
Business opportunities in Connaught Place?
What should I open in Dwarka?
Recommend business for Greater Kailash
flowchart TB
subgraph Frontend["π₯οΈ Frontend (React 19)"]
UI[App.jsx<br/>Chat Interface]
Map[Map.jsx<br/>MapLibre GL]
API_Client[api.js<br/>Axios Client]
end
subgraph Backend["βοΈ Backend (FastAPI)"]
Routes[routes.py<br/>REST Endpoints]
subgraph Agents["π€ AI Agents"]
BLA[Business Location Agent<br/>Query Understanding]
LR[Location Recommender<br/>Area Scoring & Ranking]
ABA[Area Business Analyzer<br/>Gap & Opportunity Analysis]
DRA[Deep Research Agent<br/>Tavily Web Search]
T2S[Text-to-SQL Agent<br/>NL β SQL]
end
subgraph Services["π§ Services"]
LLC[LatLong Client<br/>Geocoding & Isochrones]
end
end
subgraph External["π External APIs"]
Groq[Groq Cloud<br/>openai/gpt-oss-120b]
Tavily[Tavily API<br/>Web Search]
LatLong[LatLong.ai<br/>Geocoding & POI]
end
subgraph Database["ποΈ Database"]
PostGIS[(PostgreSQL + PostGIS<br/>314K+ POIs)]
end
UI --> API_Client
Map --> API_Client
API_Client -->|HTTP| Routes
Routes --> BLA
Routes --> ABA
Routes --> T2S
BLA --> LR
LR --> DRA
ABA --> DRA
LR --> PostGIS
ABA --> PostGIS
T2S --> PostGIS
BLA --> Groq
ABA --> Groq
DRA --> Groq
DRA --> Tavily
T2S --> Groq
LR --> LLC
LLC --> LatLong
sequenceDiagram
participant U as User
participant F as Frontend
participant B as Backend
participant G as Groq LLM
participant T as Tavily
participant DB as PostGIS
U->>F: "Where should I open a cafe?"
F->>B: POST /api/recommend-location
B->>G: Extract business type
G-->>B: {type: "cafe", category: "Food & Beverages"}
B->>DB: Query area scores & POIs
DB-->>B: Top 10 areas with scores
alt Deep Research Enabled
B->>T: Search "cafe business Delhi [area]"
T-->>B: Web results & insights
B->>G: Summarize pros/cons
G-->>B: Structured insights
end
B-->>F: Top 3 recommendations + research
F-->>U: Display results on map & panel
flowchart LR
subgraph Input["π Input Data"]
CSV[Area Scores CSV<br/>11 Criteria per Area]
POI[POI Database<br/>314K+ Points]
end
subgraph Scoring["π― Composite Score"]
AS[Area Score<br/>Weighted by Category]
OS[Opportunity Score<br/>100 - Competition%]
ES[Ecosystem Score<br/>Complementary Businesses]
end
subgraph Output["π Output"]
Top3[Top 3 Areas<br/>Ranked by Score]
end
CSV --> AS
POI --> OS
POI --> ES
AS -->|40%| Top3
OS -->|35%| Top3
ES -->|25%| Top3
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.