Inspiration
One of our teammates visited their grandparents in china this winter and saw that much of the region had landslide warning signs. But all the signs don't actually tell you that there is a landslide happening or about to happen and hiring surveyors to come out can be very expensive.
What it does
TerraSight is an autonomous global landslide risk intelligence platform that provides real-time hazard assessment for any location on Earth. Users simply input coordinates and a radius, and our system automatically:
- Fetches 7-day historical rainfall data via Open-Meteo API
- Analyzes soil composition through ISRIC SoilGrids
- Detects urban infrastructure density using OpenStreetMap Overpass API
- Processes satellite imagery from Google Earth Engine (NDVI, soil moisture, burn scars)
- Applies a machine learning risk model that fuses geological history, precipitation memory, vegetation stability, and urban infrastructure factors
The platform generates a comprehensive risk score (0.0-1.0) with color-coded flow path visualizations on an interactive satellite map, empowering NGOs and government agencies to make data-driven decisions about disaster preparedness without expensive on-site surveys.
How we built it
Backend (Python + FastAPI):
- Orchestrated 5+ external APIs (Google Earth Engine, Open-Meteo, OpenStreetMap, ISRIC SoilGrids)
- Implemented a multi-factor risk fusion model with temporal rainfall memory
- Built GEE result caching (24-hour persistence) to prevent API timeouts
- Integrated global-land-mask to prevent ocean hallucinations
- Used Supabase for monitoring session persistence
Frontend (React + TypeScript + Vite):
- Interactive Leaflet maps with Esri satellite imagery base layer
- Real-time GeoJSON rendering for risk zones and flow paths
- Dynamic API response visualization with live JSON output
- Responsive UI with autonomous engine status indicators
Data Pipeline:
- NASA SMAP (Soil Moisture Active Passive) for saturation detection
- Sentinel-2 NDVI for vegetation root stability analysis
- MODIS burn scar detection for post-wildfire instability
- Historical geological data from nasa_glc.csv for baseline risk
Challenges we ran into
- Google Earth Engine Timeouts: GEE requests could take 10-20 seconds and occasionally timeout. We solved this by implementing a 24-hour caching system and optimizing our satellite query patterns.
- Cross-Platform Dependency Issues: The pywinpty package caused installation failures on macOS. We created platform-specific requirement files to handle OS-specific dependencies.
- Coordinate System Confusion: Initially struggled with Western Hemisphere longitude values (forgetting the negative sign), causing maps to show incorrect locations.
- API Rate Limiting: Balancing multiple external API calls (weather, soil, infrastructure, satellites) without hitting rate limits required careful request orchestration.
- Real-time Map Updates: Ensuring the Leaflet map properly refreshed with new GeoJSON data required forcing component re-mounts with dynamic keys and implementing proper state management.
- Environment Variable Management: Supabase authentication initially failed because our .env file was named env without the dot, causing environment variables not to load.
Accomplishments that we're proud of
- True Global Coverage: Our system works for ANY coordinates on Earth, automatically detecting and handling oceans, polar regions, forests, deserts, and urban areas.
- Zero Manual Input: Unlike traditional geological surveys that require manual site visits, TerraSight autonomously fetches all environmental variables in real-time.
- Multi-Satellite Fusion: Successfully integrated data from NASA, ESA, and commercial satellites into a single coherent risk model.
- Sub-20 Second Analysis: Despite processing 5+ API calls and satellite imagery, we deliver comprehensive risk assessments in under 20 seconds.
- Physics-Based + ML Hybrid: Combined machine learning with real physics (rainfall accumulation, vegetation root systems, soil saturation) for more accurate predictions than pure statistical models.
- Production-Ready Architecture: Built with proper error handling, caching, and API documentation (FastAPI auto-generates OpenAPI specs).
What we learned
- Satellite Data is Hard: Working with Google Earth Engine taught us about cloud cover filtering, temporal compositing, and the challenges of real-time earth observation.
- API Orchestration at Scale: Coordinating multiple external services with different rate limits, response times, and data formats requires careful architectural planning.
- Geospatial Data Complexities: Understanding coordinate systems, GeoJSON specifications, and map projections was more nuanced than expected.
- Trade-offs in Real-time Systems: Balancing accuracy vs. speed required strategic decisions about which data sources to cache and which to fetch live.
- User Experience in Technical Tools: Even for expert users (NGOs, agencies), the interface needs to clearly communicate what the system is doing during the 10-20 second GEE processing time.
- Importance of Validation: Building verification suites to test the entire pipeline helped catch integration bugs early.
What's next for TerraSight
Built With
- esri-arcgis-satellite-imagery
- fastapi
- folium
- geojson
- geopandas
- git
- global-land-mask
- google-earth-engine-(gee)
- ipyleaflet
- isric-soilgrids-api
- javascript-(es6+)
- leaflet.js
- modis-(burn-scar-detection)
- nasa-smap-(soil-moisture)
- numpy
- open-meteo-historical-weather-api
- openstreetmap-overpass-api
- pandas
- python
- rasterio
- react
- react-leaflet
- scikit-learn
- sentinel-2-(ndvi/vegetation)
- shapely
- supabase
- typescript
- uvicorn
- vite
Log in or sign up for Devpost to join the conversation.