Jose
Escobar
I build end-to-end geospatial intelligence systems — from raw
satellite and sensor data to automated pipelines, spatial databases,
and decision-ready outputs.
Industrial Engineering foundation + data engineering and systems
design background, applied to satellite imagery analysis, spatial data
engineering, computer vision on aerial datasets, and environmental
intelligence platforms. Grounded in real remote sensing datasets —
Hansen GFC, Sentinel-2, MODIS, LiDAR, thermal infrared — with every
sprint documented and publicly verifiable.
What I Deliver
Satellite imagery, LiDAR, thermal, and sensor datasets from GEE, Sentinel-2, MODIS, Hansen GFC, and WDPA. CRS transforms, raster/vector handling, real public datasets.
Spectral indices, land cover classification, object detection, anomaly scoring, change detection. Python pipelines: rasterio, GeoPandas, YOLOv8, GEE. Every sprint documented and verifiable.
PostGIS spatial schemas, GIST indexes, ST_Within / ST_Intersects SQL, Supabase live backends. Queryable infrastructure, not static notebooks.
Interactive web maps (Leaflet.js), severity dashboards, automated reports, CSV exports. Decision-ready outputs — not just data, but answers.
The differentiator: Most geospatial engineers process data. Most data engineers don't understand geography. The intersection — spatial databases, satellite pipelines, and automated intelligence systems built with engineering rigor — is where this profile sits. Every sprint in this portfolio is a live, verifiable system, not a notebook exercise.
Capabilities
Environmental Intelligence Systems
End-to-end geospatial platforms combining satellite imagery, spatial databases, and live web maps. Built and deployed: Amazon deforestation monitoring platform — Hansen GFC real loss events, WDPA protected area boundaries, PostGIS spatial intersection queries, live Supabase backend, Leaflet.js frontend.
Live in ProductionSpatial Data Engineering
PostgreSQL + PostGIS schema design, GIST spatial indexes, ST_Within / ST_Intersects queries, GeoPandas-to-database pipelines, Supabase REST API deployment. Spatial ETL from GEE, MODIS, Hansen GFC, and WDPA into production-grade queryable databases.
Production ReadySatellite Imagery & Remote Sensing
Sentinel-2 multispectral analysis (NDVI / NDWI / NDRE / SAVI), Google Earth Engine Python API, MODIS land cover classification, Random Forest on GEE infrastructure, raster processing with rasterio and stackstac. Real datasets, real coordinates, real findings.
Production ReadyComputer Vision & Anomaly Detection
YOLOv8 fine-tuning on domain-specific aerial imagery (solar panel fault detection, 7 classes, T4 GPU training). Thermal inspection pipelines: 20,000+ infrared images, 85th-percentile hotspot detection, severity scoring dashboard with ironbow colorization and live CSV export.
Production ReadyAutomated Data Pipelines
End-to-end ETL systems in Python — from raw satellite, sensor, and aerial inputs to structured spatial outputs. Telemetry parsing, scoring models, anomaly detection, and operational reporting. Demonstrable across 12 documented sprints.
Production ReadyUAV Data Systems
Where the pipeline methodology was built: PX4/SITL mission simulation, MAVLink telemetry analysis, failsafe validation, photogrammetry and orthomosaic generation via WebODM, LiDAR point cloud processing (DTM/DSM, structure detection). Applied now at satellite and environmental scale.
Methodological FoundationTechnical Stack
Projects
Geospatial Intelligence Portfolio
Twelve documented sprints spanning satellite imagery pipelines, spatial databases, computer vision on aerial datasets, LiDAR terrain analysis, hydrological simulation, and environmental intelligence platforms. From GEE land cover classification to live PostGIS systems querying real Hansen GFC, MODIS, and WDPA data. Every sprint deployed, verifiable, and linked below.
Hydrological Terrain Simulation Engine
Python CLI that turns any US elevation model into a full flood simulation — Green-Ampt rainfall-runoff on real SSURGO soil data, Muskingum-Cunge channel routing, HAND-based flood mapping. Found and root-caused nondeterministic output in third-party terrain-conditioning tools, replaced it with a deterministic pipeline, and added a permanent reproducibility gate. Validated on two physiographically opposite US regions — coastal Houston and the Arkansas Ozarks — with zero code changes.
Structural Triage Engine
Offline-first Python CLI that ingests any post-disaster airborne LiDAR point cloud and outputs a self-contained inspection priority map and optimized GPX field route. Four geometric indicators per building — vertical entropy, density irregularity, roof planarity, point deficit — ranked by percentile. Validated on Haiti 2010 and Kumamoto 2016. One command, no internet required at runtime.
Mekong Delta Agricultural Intelligence Platform
Live agricultural monitoring platform — 5 Sentinel-2 spectral band toggles (True Color, NDVI, NDWI, NDRE, False Color NIR) served as 23,245 XYZ tiles from GitHub Pages. 499 parcels and 4,981 spectral observations from a live PostGIS database on Supabase. Temporal NDVI/NDWI chart per parcel click. Rice paddy flood cycle confirmed in NDWI data across 4 rice seasons. COG files on AWS S3.
Celeritas
Full-stack logistics matching platform coordinating suppliers, drivers, and clients with order assignment and status tracking. Backend logic for multi-entity workflow management, dispatching, and supply chain visibility. Foundation project from the IT diploma — demonstrates systems design and pipeline thinking applied to real operational data.
Geospatial Intelligence Portfolio
Standalone Python CLI that ingests any US DEM GeoTIFF and outputs an animated flood simulation, PDF drainage report, GIS-ready basin data, and per-building flood exposure — no manual GIS work. Pipeline: NHD/SSURGO/NOAA Atlas 14 data acquisition, stream-burned terrain conditioning, D8 flow routing, drainage-area-threshold sub-basin delineation, Green-Ampt infiltration (real SSURGO soil parameters, cross-validated against SCS Curve Number), Muskingum-Cunge kinematic wave routing through DEM-derived compound channels, HAND-based flood mapping. Found that repeated runs on an identical DEM produced different basin summaries; localized the fault by hashing every pipeline intermediate across runs to the terrain-conditioning stage. Root cause: two WhiteboxTools operations (depression breaching, flat resolution) break ties non-deterministically on flat terrain, shifting drainage divides between identical runs. Replaced conditioning with deterministic priority-flood filling (pysheds) and added a permanent reproducibility gate — two runs, byte-identical basin summaries, or the test fails. The fix exposed a second design flaw: the stream-delineation threshold was a fraction of the DEM's own peak flow accumulation, making basin count hostage to whatever the largest stream happened to carry. Redesigned it as an absolute drainage-area parameter (km², user-configurable), independent of conditioning method or DEM extent. Validated generalization on a second, physiographically opposite region — Arkansas Ozarks vs. coastal Houston — same command, zero code changes: the engine correctly resolved a region-specific 8.4in design storm (vs. 17.7in for the Gulf Coast) and the opposite drainage topology, one nested 33 sq mi watershed instead of 163 independent coastal catchments.
VIEW REPOSITORY →Standalone Python CLI engine that ingests any post-event airborne LiDAR point cloud (.laz), computes four geometric indicators per building footprint, ranks structures by anomaly score, and outputs a self-contained interactive HTML platform and an optimized GPX inspection route — with no internet connection required at runtime. Engine indicators: Vertical Distribution Entropy (40%) measuring debris-filled structural void collapse signature; Point Density Irregularity (30%) measuring chaotic debris scatter patterns; Roof Planarity RMSE (20%) measuring deformed roof geometry via least-squares plane fitting; Point Count Deficit (10%) measuring return shortfall vs expected intact-roof density. Percentile-based tier assignment — Critical, High, Moderate, Low — answers which buildings are most anomalous relative to neighbors in the scan. GPX inspection route uses nearest-neighbor optimization within each tier: Critical buildings first, minimum travel distance. Validated on two independent post-disaster datasets: Haiti 2010 M7.0 earthquake (17.9M points, EPSG:32618, informal concrete block construction) and Kumamoto 2016 M7.0 earthquake (8M points, EPSG:2444, Japanese wood frame construction). Same codebase, different countries, different CRS, different construction typologies. Published as open-source repository with research-level README documenting physics reasoning, known limitations, and full CLI reference.
VIEW REPOSITORY →Live agricultural monitoring platform for the Mekong Delta — one of the most intensively farmed river systems on earth. Exported 5 Sentinel-2 SR Harmonized composites from Google Earth Engine (Nov 2022–Apr 2023) with SCL cloud masking and fallback composite: True Color, NDVI, NDWI, NDRE, False Color NIR. Converted to Cloud Optimized GeoTIFF via GDAL, then to 23,245 XYZ tiles (zoom 7–13, JPEG) using gdal2tiles — served from GitHub Pages for instant band switching with no download wait. COG files hosted on AWS S3 (us-east-1). PostGIS schema on Supabase: 499 agricultural parcels across 13 Vietnamese provinces + Kandal and Prey Veng (Cambodia), 4,981 spectral observations across 4 rice seasons. Key finding: rice paddy flood cycle confirmed in NDWI data — December peak (0.464), May (0.324), September (0.185) matching the real Mekong three-crop calendar. Platform features: 5 Sentinel-2 band toggles, live parcel data from Supabase REST API, temporal NDVI/NDWI line chart per parcel click, land use and country filters, flood detection overlay, band color legends, click-to-detail sidebar.
LAUNCH PLATFORM →Production-grade geospatial intelligence platform tracking real Amazon deforestation. Exported 1,121 real forest loss pixels from Google Earth Engine (Hansen GFC v1.11) across Para, Amazonas, Mato Grosso and Rondônia (2001–2023). Loss drivers derived from MODIS MCD12Q1 post-loss land cover — published proxy methodology used by INPE and Global Forest Watch, not synthetic classification: Forest Degradation (569), Cattle Ranching (541), Fire (5), Agriculture (4), Mining (2). Protected area boundaries from WDPA v2024 (370 registered areas: indigenous territories, national parks, extractive reserves). Schema: PostgreSQL 17 + PostGIS 3.6 with GIST spatial indexes, migrated to Supabase for live hosting. Key finding: 66 confirmed deforestation violations inside registered protected areas detected via ST_Within() spatial intersection. Deployed as a live interactive web map — Leaflet.js frontend fetching real PostGIS data from Supabase REST API. Filter by year, driver, violations. Click any point for full event details. Every data point verifiable against original public sources.
LAUNCH PLATFORM →Fine-tuned YOLOv8n on the Solar Panel Fault Detection dataset (2,763 RGB images, 7 fault classes: Bird Drop, Defective, Dust, Dusty, Non Defective, Physical Damage, Snow). Transfer learning from COCO-pretrained weights on Tesla T4 GPU via Google Colab — 50 epochs, batch 16, imgsz 640. Overall mAP50: 0.321. Strongest class: Defective (0.640 mAP50). Weakest: Physical Damage (0.097) and Bird Drop (0.149) — attributed to high intra-class visual variability and limited per-class sample count. Training curves confirm clean convergence with no overfitting. Inference demonstrated on held-out test set with per-detection confidence scores. This sprint establishes the object localization layer missing from Sprint 05B — detecting and bounding individual panels in RGB imagery, complementing the thermal severity scoring pipeline.
VIEW ANALYSIS →Queried 462 real Sentinel-2 L2A images over Jalisco, México via Google Earth Engine Python API. Built a median composite from scenes with less than 10% cloud cover across 6 spectral bands (Blue, Green, Red, NIR, SWIR1, SWIR2). Defined 5 land cover classes — Water, Forest, Agriculture, Urban, Bare Soil — with 25 georeferenced training points over known locations (Lago de Chapala, Guadalajara, Sierra Madre, Los Altos, northern dry zones). Trained a Random Forest classifier (100 trees) directly on GEE infrastructure. Classification map confirms correct spatial distribution: Lago de Chapala isolated as water, Guadalajara metropolitan area as urban, Sierra Madre footprint as forest. Exported classified GeoTIFF and RGB composite to Google Drive. Interactive map rendered via geemap/ipyleaflet.
VIEW ANALYSIS →Processed a real classified LiDAR point cloud (2,515,216 points, EPSG:26912) sourced from USGS / OpenTopography. Separated ground (836,431 pts) from non-ground returns, then rasterized both to 1m/px grids via binned statistics: DTM (mean ground elevation) and DSM (max surface elevation). Filled DTM occlusion gaps beneath the structure footprint via nearest-neighbor interpolation, then computed a normalized height model (DSM − DTM) to isolate above-ground structures independent of terrain slope. Dual-threshold structure detection at 2m (vegetation + structures, 3.08 ha) and 10m (building-scale only, 1.64 ha) — capturing the Capitol dome at 75.9m height above local terrain. Exported DTM, DSM, and height-model as georeferenced GeoTIFFs. Same DSM/DTM-differencing method transfers directly to mining stockpile volumetrics and transmission-corridor clearance analysis.
VIEW ANALYSIS →Extended Sprint 05A toward a decision-ready triage tool. Built a per-panel severity scoring formula combining four signals: temperature delta above healthy baseline, hotspot area percentage, thermal gradient irregularity, and a domain-reasoned defect-class risk weight — output is a 0–100 severity score per image, bucketed into Critical / Moderate / Monitor / Healthy tiers. Applied across all 20,000 images: 403 Critical, 3,700 Moderate, 5,897 Monitor, 10,000 Healthy. Exported results to JSON and built a static interactive dashboard — ironbow thermal colorization, live filtering by tier and defect class, paginated card grid, detail modal with full stats on click, and CSV export of any active filter. Honest scope: severity classification demonstrated on a public benchmark dataset (InfraredSolarModules · ICLR 2020). Spatial/array-position layer pending real client-provided GPS or flight metadata — architecture for this is planned in the PostGIS sprint.
LAUNCH DASHBOARD →Ingested the InfraredSolarModules dataset (ICLR 2020) — 20,000 real thermal drone images of solar panels across 12 defect classes. Built a full inspection pipeline in Python: loaded and parsed JSON metadata, extracted thermal statistics (mean intensity, std deviation, thermal gradient) per image, and computed class-level profiles across all 20,000 samples. Hotspot detection implemented via 85th-percentile threshold with red overlay mask. Key findings: Hot-Spot-Multi ranked highest mean intensity (183.6 vs 150.9 baseline, +32.7 delta); Cracking scored highest thermal gradient (8.61) — most irregular heat distribution, consistent with structural fracture signature. Generated 4 publication-quality outputs: class distribution chart, 12-class sample grid, hotspot detection panels, and final dark-mode inspection map. Full pipeline documented via Jupyter notebook.
VIEW ANALYSIS →Connected to Microsoft Planetary Computer API (pystac-client + stackstac) and queried Sentinel-2 L2A imagery over an agricultural region in Jalisco, Mexico. Selected the cleanest scene available (0.002% cloud cover, 2024-05-26). Stacked 5 spectral bands (B03, B04, B05, B08, B11) at 10m/px across ~245 km² in EPSG:32614. Calculated four vegetation indices from real satellite data: NDVI (mean 0.186, max 0.837), NDWI water stress (mean −0.254), NDRE chlorophyll via red edge band (mean 0.117, max 0.761), and SAVI soil-adjusted (mean 0.279, L=0.5). 5.2% of valid pixels classified as healthy vegetation (NDVI > 0.4). Generated a 5-panel publication-quality map with false color composite (NIR/Red/Green). Full pipeline documented via Jupyter notebook.
VIEW ANALYSIS →Processed a real 77-image aerial dataset (Valley Parkway Connector, Ohio) through a full photogrammetry pipeline using WebODM + OpenDroneMap. Generated a georeferenced orthomosaic (EPSG:32617, 0.08 m/px, 4457×3355 px) covering 4.64 ha. Extracted GPS coordinates from EXIF metadata, plotted image capture positions and altitude profile. Computed NDVI from RGB+NIR bands via rasterio: mean NDVI 0.382, 73.4% healthy vegetation. All outputs documented via pyulog + Jupyter pipeline.
VIEW ANALYSIS →
Executed a battery failsafe validation test in PX4 SITL / jMAVSim.
Vehicle was running an autonomous mission when battery failure was
injected at t=33.2s via
failure battery off
command. Flight controller triggered a 5-second loiter hold
(nav_state=4) before transitioning to Auto Land (nav_state=18).
Vehicle executed a controlled descent and landed at t=65.3s.
Battery drained from 100% to 0%. Full nav_state timeline and
battery drain extracted from
log_0_2026-6-11-14-25-29.ulg
and documented via pyulog + Jupyter pipeline.
Executed a GPS loss failsafe validation test in PX4 SITL /
jMAVSim. Vehicle was running an autonomous mission when GPS
failure was injected at t=30.0s via
failure gps off
command. EKF immediately lost valid position estimate, switching
to fake_pos dead reckoning. Flight controller transitioned from
nav_state=3 (Auto Mission) to nav_state=12 (Descend / Blind Land)
with zero reaction lag. Vehicle executed a controlled descent and
landed at t=72.2s. Full nav_state timeline and EKF behavior
extracted from
log_0_2026-6-11-13-47-44.ulg
and documented via pyulog + Jupyter pipeline.
Executed a failsafe validation test in PX4 SITL / jMAVSim. Vehicle
was running an autonomous mission (42 waypoints) when a simulated
signal loss was introduced at t=268.5s. The flight controller
correctly detected the loss, transitioned from nav_state=3 (Auto
Mission) to nav_state=5 (RTL), and executed an autonomous
return-to-launch without manual input. Signal restored at
t=332.9s. Total flight time: 5.6 min. Failsafe trigger, RTL
trajectory, and nav_state transitions extracted from
log_0_2026-6-6-22-21-20.ulg
and documented via pyulog + Jupyter pipeline.
Executed a full grid survey mission in PX4 SITL / jMAVSim.
Mission: GRID_01 — autonomous photogrammetric mapping pattern at
80m AGL. Total distance covered: 1,115.2m. Max speed: ~5.0 m/s.
Upon completing the final waypoint, the vehicle entered Safe
Recovery autonomously, returned to Home, and executed a precision
vertical landing without manual input. No GPS or compass errors
logged. Telemetry extracted from
log_0_2026-6-7-21-00-04.ulg
and processed via pyulog + Jupyter pipeline.
Executed a dual-pass survey mission in PX4 SITL / jMAVSim — two
overlapping transect patterns over the same area, simulating
high-density photogrammetric coverage for infrastructure
inspection. Total flight time: 12.6 min. Mission items: 58.
Altitude held stable throughout both passes. Telemetry extracted
from
log_5_2026-6-5-18-26-47.ulg
and processed via pyulog + Jupyter pipeline.
Installed and configured PX4 SITL from source on macOS arm64.
Resolved Python dependency conflicts (kconfiglib, jsonschema,
empy, lxml) inside an isolated venv. Fixed jMAVSim Java
compilation error by installing OpenJDK 17 via Homebrew and
forcing a clean rebuild. Connected QGroundControl via UDP port
14550. Validated the full stack with arm → takeoff → hover → land
sequence. Log file generated and saved as evidence (.ulg).
Experience
- Built 12 production-grade geospatial systems spanning environmental monitoring, satellite imagery analysis, spatial databases, hydrological simulation, and computer vision — each documented, deployed, and publicly verifiable at goheist01.github.io/jose-escobar-cv
- Deployed live Amazon Deforestation Intelligence Platform: 1,121 real Hansen GFC loss events, 370 WDPA protected area boundaries, PostGIS spatial database on Supabase, Leaflet.js interactive frontend. 66 confirmed protected area violations via ST_Within() spatial intersection.
- Fine-tuned YOLOv8 on 2,763 aerial solar panel images for fault detection across 7 classes; built thermal severity scoring pipeline across 20,000+ infrared images with live triage dashboard and CSV export.
- Designed and delivered production websites and brand identity work for paid small-business clients in Greece and Canada — managing requirements, timelines, and direct client communication end-to-end.
- Managed full order lifecycle in a high-volume environment — intake, scheduling, fulfilment, and quality control under tight deadlines. Developed the operational discipline and client communication standards that underpin all professional delivery work.
- Identified and fixed workflow gaps between customer intake and production execution, reducing rework and delays through process redesign.
- Implemented inventory tracking and reporting practices to maintain stock accuracy and production continuity.
- Managed client relationships and order pipelines from enquiry through resolution, building documentation standards that reduced manual work.
- Supported sales reporting with structured data practices — early foundation for operational data work.
- Coordinated multi-location deliveries and built reporting practices to improve stock visibility across distribution sites.
- Hands-on logistics execution in a fast-paced environment — understanding the real cost of poor data in physical operations.
Education
Operations systems, process engineering, logistics, quality management, and industrial automation. The analytical foundation for everything else.
Databases, data pipelines, and software systems design. Converted Industrial Engineering analytical thinking into working code. Foundation for the 9-sprint geospatial intelligence portfolio built in parallel.
Direction
valuable enough
to work from anywhere.
- The goal: Building toward the top tier of geospatial intelligence and automation — not to be tied to one place, but to be valuable enough to work from anywhere. Expertise that travels: deep enough to be the best option in the room, portable enough to never need permission to be there.
- Now: Closing first remote contracts in environmental monitoring, satellite analysis, and spatial data engineering. Every sprint is a live deliverable, not a notebook. The portfolio is the proof.
- Next: Deepen the spatial database and ML layers across more verticals — agriculture, urban intelligence, infrastructure monitoring. Build repeatable systems, not one-off analyses.
- The bet: The intersection of geospatial engineering, applied ML, and automated spatial pipelines is where value concentrates — and where Industrial Engineering systems thinking applied to satellite and sensor data creates a genuinely distinct profile.
Contact
Open to employment, contracting, and international collaboration.
Open to remote contracts, employment, and international collaboration. Target sectors: environmental monitoring, satellite intelligence, precision agriculture, and spatial data engineering.