Kit Schnelle
← back to index
─ ACTIVE / GEOINT

OSINT Geolocation Engine

Multi-signal pipeline that estimates the geographic origin of a photograph from EXIF metadata and visual content. When EXIF GPS is present and consistent with terrain, the engine returns coordinates directly. When metadata has been stripped or spoofed, independent visual signals (signage, scene type, shadow geometry, road topology, satellite tile correlation) get fused into a ranked candidate list.

─ DEMO
pre-computed pipeline outputs
Test Cases
3 samples
Input
JPEG
[demo image: Intact EXIF]
iPhone photo with full EXIF metadata. Pipeline short-circuits at intake with confidence 1.00.
[ok]Pipeline Output
short-circuit @ intake
Candidates
30.4299, -97.7004exif_gps1.00
Extracted Metadata
timestamp2020-11-24T21:44:40
deviceApple iPhone 11 Pro Max
altitude249.3 m
bearing209.2°
software14.1
Geolocation
30.4299, -97.7004
loading map...
─ ARCHITECTURE
Pipeline Modules
10 total
intakeEXIF metadata + altitude consistency check
DONE
ocrText extraction → geocoding
WIP
sceneBiome / architecture classification (CLIP)
PLANNED
shadowSolar inverse solving from shadow azimuth
PLANNED
tile_fetcher + feature_matchSatellite tile retrieval and correlation
PLANNED
road_matchOSM road bearing histogram matching
PLANNED
env_featuresEnvironmental priors (scope TBD)
PLANNED
candidate_searchCandidate generation and pruning
PLANNED
fusionMulti-signal weighted clustering
PLANNED
─ STACK
Implemented
  • Python 3.10+, pytest
  • exifread, Pillow, requests
  • FastAPI (orchestrator scaffolding)
  • Open-Elevation (terrain validation)
Planned
  • HuggingFace transformers (CLIP)
  • EasyOCR
  • OSMnx + NetworkX
  • OpenCV (tile correlation)
  • Folium (output visualization)
─ KNOWN LIMITATIONS

Heuristic confidence. Confidence values are rule-based, not calibrated against a labeled benchmark. Treat them as ordinal rankings.

EXIF is editable. The altitude check catches one specific spoofing pattern. A spoofer who picks plausible coordinates AND a plausible altitude will still get 1.00 from intake.

External API dependency. Altitude validation depends on Open-Elevation. When unreachable, the check passes through silently — a spoofed altitude could slip through during an outage.

No ground-truth eval yet. Visual modules will need benchmarking against a labeled image dataset. Accuracy claims are speculative until then.