Predictive Geospatial Intelligence for Aadhaar Infrastructure
Team UIDAI_6757 - DRAM Analytical Framework Implementation
PROJECT DRISHTI is an advanced analytics dashboard that implements the DRAM (Demographic, Resource, Agent, Migration) Framework for strategic resource allocation in India's Aadhaar ecosystem.
The system analyzes three critical data streams:
- 🧒 Enrolment Data (0-5 years cohort)
- 📊 Demographic Updates (Adult population migrations)
- 🔐 Biometric Services (Children 5-17 requiring updates)
- Total Infant Enrolments: Tracking 0-5 years cohort
- Critical Migration Hotspots: Top 10% districts by adult update volume
- Projected Liability (2030): 5-year demand forecast
- Current Biometric Deficit: Active children backlog
- 🔴 Top 10 Migration Hotspots - Districts with highest adult demographic updates
- 🔵 Biometric Time-Bomb: 2030 Forecast - Infants who will need services in 5 years
- 🟢 Current Biometric Deficit - Children (5-17) requiring immediate attention
Intelligent recommendation engine that flags districts for:
- 🚐 M-Seva Mobile Van Deployment - For high migration stress areas
- 🏫 Vidya-Setu School Camps - For high future liability districts
State-level aggregation showing Migration Stress, Future Liability, and Current Load
The dashboard implements three core analytical metrics:
Migration_Stress = Σ(demo_age_17_)
Interpretation: High volume of adult demographic updates indicates migration inflow or population movement. Districts with top 10% values get flagged for mobile service units.
Future_Liability = Σ(age_0_5)
Interpretation: Infants (0-5 years) will require biometric enrolment when they turn 5. This predicts demand 5 years into the future.
Current_Load = Σ(bio_age_5_17)
Interpretation: Children aged 5-17 requiring biometric updates represent immediate operational demand.
The application ingests three datasets:
- Columns:
date,state,district,pincode,age_0_5,age_5_17,age_18_greater - Key Metric:
age_0_5→ Future Liability
- Columns:
date,state,district,pincode,demo_age_5_17,demo_age_17_ - Key Metric:
demo_age_17_→ Migration Stress
- Columns:
date,state,district,pincode,bio_age_5_17,bio_age_17_ - Key Metric:
bio_age_5_17→ Current Load
- Frontend: Streamlit 1.31.0
- Data Processing: Pandas 2.2.0, NumPy 1.26.3
- Visualizations: Plotly 5.18.0
- Python: 3.8+
- Auto-Discovery: Recursively scans data directories for CSV files
- Concatenation: Merges multiple CSV chunks per dataset type
- Aggregation: Groups by State and District
- Master Merge: Outer join across three datasets
- DRAM Calculations: Computes analytical metrics
- Recommendation Engine: Applies threshold-based rules
- Python 3.8 or higher
- pip (Python package manager)
- 2GB free disk space (for data files)
# Clone/download the project
cd project_drishti
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Extract data files to data/ directory
# Run the dashboard
streamlit run app.pyDetailed setup guide: See VS_CODE_SETUP_GUIDE.md
streamlit run app.pyAccess at: http://localhost:8501
Use the Sidebar Control Panel to:
- Select specific states
- Filter analytics by region
- Focus on high-priority areas
High Migration Stress Districts:
- Indicate population influx
- Require mobile service units
- Priority for M-Seva vans
High Future Liability Districts:
- Large infant populations
- Will need services in 5 years
- Plan Vidya-Setu school camps
High Current Load Districts:
- Immediate backlog of children 5-17
- Require urgent resource allocation
Trigger: District in top 10% Migration Stress
Rationale: Mobile units can serve migrant populations who may not have easy access to fixed centers.
Recommended Actions:
- Deploy mobile van within 30 days
- Schedule weekly visits
- Set up temporary registration camps
Trigger: District in top 20% Future Liability
Rationale: Proactive school-based camps can capture the 0-5 cohort as they enter primary education.
Recommended Actions:
- Partner with education department
- Schedule camps during enrollment season
- Prioritize government schools in rural areas
From the dashboard, you can derive insights like:
"Maharashtra - Mumbai shows 45,000+ adult demographic updates (Migration Stress), indicating high migration inflow. Recommend immediate M-Seva deployment."
"Uttar Pradesh - Varanasi has 12,000+ infants (Future Liability). Plan Vidya-Setu camps for 2027-2028 school year."
"Bihar - Patna has 18,000+ children 5-17 (Current Load). Urgent biometric update drives needed."
In app.py, adjust the percentile thresholds:
# Current: Top 10% for Migration Stress
migration_top_10_threshold = filtered_df['Migration_Stress'].quantile(0.90)
# Change to Top 5%:
migration_top_10_threshold = filtered_df['Migration_Stress'].quantile(0.95)Extend the DRAM framework by adding custom calculations:
# Example: Population Density Metric
master['Population_Density'] = (
master['age_0_5'] +
master['age_5_17'] +
master['age_18_greater']
) / master['pincode'].nunique()Update Plotly color scales in the chart sections:
# From Reds to Oranges
color_continuous_scale='Oranges'
# From Blues to Purples
color_continuous_scale='Purples'1. Dashboard won't load
- Check if virtual environment is activated
- Verify all dependencies are installed:
pip list
2. "No data found" error
- Ensure data files are in correct directories
- Check CSV file names match expected patterns
3. Charts not rendering
- Clear Streamlit cache:
streamlit cache clear - Restart the dashboard
4. Memory errors
- Large datasets may require chunking
- Consider data sampling for development
- Push code to GitHub
- Connect at share.streamlit.io
- Select repository and
app.py - Upload data files or use cloud storage
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8501
CMD ["streamlit", "run", "app.py", "--server.port=8501"]For large datasets (>10M rows):
- Enable caching: Already implemented via
@st.cache_data - Data sampling: Add sampling parameter for dev/testing
- Lazy loading: Load data only when needed
- Database backend: Consider PostgreSQL for production
Team UIDAI_6757 welcomes contributions!
- Add district-level drill-down
- Implement time-series forecasting
- Add export to PDF/Excel
- Integrate GIS mapping
- Real-time data refresh
This project is developed for UIDAI analytical purposes.
Team UIDAI_6757
- Lead Developer: Analytics Team
- Framework Design: DRAM Task Force
- Data Engineering: Integration Team
For technical support or questions:
- Check
VS_CODE_SETUP_GUIDE.mdfor setup issues - Review
app.pycode comments for logic details - Open an issue for bugs or feature requests
- Setup Guide:
VS_CODE_SETUP_GUIDE.md - Source Code:
app.py - Dependencies:
requirements.txt - Project Report: Reference the original PDF for DRAM framework details
Last Updated: January 2026
Version: 2.0
Status: Production Ready ✅
Powered by Advanced Analytics | Built with Streamlit