Empowering users to explore Overture Maps data through natural language using Large Language Models
While interactive dashboards are useful, they often fail to address the specific, nuanced questions individual users have about Overture's data. This project provides a flexible and user-driven method for data exploration by:
- Generating an LLM-ready context file - A comprehensive text document containing statistics, schema descriptions, and pre-written prompts
- Providing a web interface - Beautiful landing page for users to download and learn about the tool
- Collecting user feedback - Anonymous feedback system to continuously improve the experience
Users can simply download the context file, paste it into their preferred LLM (ChatGPT, Claude, Gemini, etc.), and immediately start exploring Overture Maps data through natural language queries.
- Comprehensive statistics for all 6 Overture themes (Addresses, Buildings, Places, Divisions, Transportation, Base)
- Natural language schema descriptions optimized for LLM understanding
- Pre-written prompts to guide data exploration
- Compact format (~22 KB, ~10K tokens) - fits in any LLM context window
- Professional landing page (docs/index.html) with:
- One-click file download
- Clear usage instructions
- Example queries
- Technical specifications
- Responsive design matching Overture Maps branding
- GitHub Pages ready for instant deployment
- Anonymous survey capturing user satisfaction and usability
- Smart trigger - Appears when users return after trying the tool (5 second delay)
- Flask API backend with SQLite database
- Admin dashboard with real-time statistics, charts, and CSV export
Ashwin-DaD/
├── README.md # This file
├── requirements.txt # Python dependencies for generator
│
├── generate_llm_context.py # Main script - generates LLM context file
├── analyze_metrics.py # Helper script for metrics analysis
├── README_generation_output.txt # Generated LLM-ready file (output)
│
├── Metrics/metrics/ # Overture metrics data (by release)
│ └── 2025-09-24.0/ # Latest release data
│ ├── addresses_*.csv
│ ├── buildings_*.csv
│ ├── places_*.csv
│ └── ...
│
└── docs/ # Web interface & feedback system
├── index.html # Landing page (GitHub Pages)
├── admin_dashboard.html # Feedback admin panel
│
├── feedback_api.py # Flask API for feedback
├── requirements.txt # API dependencies (Flask, CORS)
├── feedback.db # SQLite database (created on run)
│
├── start_feedback_server.sh # Quick start script (Mac/Linux)
├── start_feedback_server.bat # Quick start script (Windows)
│
├── README_FEEDBACK.md # Feedback system quick start
├── FEEDBACK_SETUP.md # Detailed setup guide
├── ARCHITECTURE.md # System architecture docs
Visit the live site: https://project-terraforma.github.io/Ashwin-DaD/
- Click "Generate & Download"
- Open the downloaded file
- Copy contents into your LLM (ChatGPT, Claude, etc.)
- Start asking questions!
# 1. Clone the repository
git clone https://github.com/project-terraforma/Ashwin-DaD.git
cd Ashwin-DaD
# 2. Install dependencies
pip install -r requirements.txt
# 3. Generate the LLM context file
python3 generate_llm_context.py
# 4. Use the generated file
# Copy README_generation_output.txt contents into your LLMOnce you load the context file into your LLM, you can ask questions like:
| Category | Example Question |
|---|---|
| Geographic | "Which countries have the highest concentration of Places data?" |
| Data Quality | "What proportion of places have high confidence scores (≥0.8)?" |
| Categories | "What are the top 10 most common building types globally?" |
| Comparisons | "How much data changed in this release vs the previous?" |
| Statistics | "What percentage of buildings are residential vs commercial?" |
| Sources | "Which data sources contribute most to the Places theme?" |
The LLM will use the statistics and schema information to provide accurate, data-driven answers.
# Install dependencies
pip install -r requirements.txt
# Run generator
python3 generate_llm_context.pyWhat it does:
- Analyzes all metrics CSV files from the latest release
- Extracts schema information and statistics
- Generates
README_generation_output.txt - Reports file size (~22 KB) and token count (~10K)
# Just open the HTML file
open docs/index.html
# Or serve with Python
cd docs
python3 -m http.server 8000
# Visit http://localhost:8000# Install API dependencies
cd docs
pip install -r requirements.txt
# Start Flask API (option 1: quick script)
./start_feedback_server.sh
# Start Flask API (option 2: manual)
python3 feedback_api.py
# Open admin dashboard
open admin_dashboard.htmlThe API runs on http://localhost:5001 and the dashboard shows real-time feedback statistics.
Already configured! Just push to GitHub:
git add .
git commit -m "Update site"
git push origin main
# Enable GitHub Pages:
# Settings → Pages → Source: main branch → /docs folder → SaveYour site will be live at: https://project-terraforma.github.io/Ashwin-DaD/
Why Vercel? No cold starts, instant response, 100% free.
# 1. Install Vercel CLI
npm install -g vercel
# 2. Login
vercel login
# 3. Deploy
cd docs
vercel --prod
# Your API is live at: https://ashwin-terraforma-d.vercel.app/apiAlternative deployment options:
- Railway.app (10-15 sec cold start)
- Render.com (30-60 sec cold start)
- Fly.io (5-10 sec cold start)
See DEPLOY_PRODUCTION.md for detailed instructions.
The feedback system captures anonymous user satisfaction and usability data.
- User downloads the LLM context file → timestamp stored
- User navigates away (switches tab/window) → flag set
- 5+ minutes pass → timer condition met
- User returns to page → survey modal appears
- User submits feedback → data stored in SQLite database
- Overall satisfaction (1-5 stars)
- Instruction clarity (1-5 scale)
- LLM provider used (dropdown)
- Did it answer questions? (Yes/Partially/No)
- What could be improved? (optional text)
- Share LLM conversation (optional text)
Option 1: Admin Dashboard (Recommended)
open docs/admin_dashboard.htmlOption 2: Direct Database
sqlite3 docs/feedback.db "SELECT * FROM feedback ORDER BY timestamp DESC;"See README_FEEDBACK.md for complete documentation.
To test the survey popup immediately:
// Open browser console (F12) and run:
localStorage.setItem('llm_explorer_downloaded', 'true');
localStorage.setItem('llm_explorer_download_time', Date.now() - (6 * 60 * 1000));
// Show modal immediately
showFeedbackModal();Or uncomment line 953 in docs/index.html to enable testing mode (shows after 2 seconds).
| Document | Description |
|---|---|
| README_FEEDBACK.md | Feedback system quick start guide |
| FEEDBACK_SETUP.md | Detailed feedback setup instructions |
| ARCHITECTURE.md | System architecture and data flow |
| DEPLOY_PRODUCTION.md | Production deployment guide |
| DEPLOY_NOW.md | Quick Vercel deployment |
| CLAUDE.md | Project context and requirements |
- Anonymous feedback collection - No PII collected
- CORS enabled for browser access
- Input validation on all API endpoints
- SQL injection prevention via parameterized queries
- Rate limiting ready (optional Flask-Limiter integration)
- LLM context file generation
- Web landing page
- Feedback survey system
- Flask API backend
- SQLite database
- Admin dashboard
- Production deployment (Vercel)
- GitHub Pages integration
- Email notifications for new feedback
- Sentiment analysis on text responses
- Multiple export formats (Excel, JSON, PDF)
- User segmentation analytics
- A/B testing for survey questions
- Real-time dashboard updates (WebSockets)
- Admin authentication
- Integration with analytics platforms
This is a personal project for Overture Maps Foundation. For questions or suggestions, please open an issue.
This project is part of the Overture Maps Foundation initiative.
- Overture Maps Foundation for providing comprehensive geospatial data
- GitHub Pages for free static hosting
Ashwin Prabou
- GitHub: @aprabou
Live Site: https://project-terraforma.github.io/Ashwin-DaD/
Last Updated: December 2025