← Back to Portfolio
Full-Stack · Production · 2025

CrisisScope

Humanitarian Crisis Data Platform

End-to-end humanitarian crisis data platform — NLP-powered incident extraction, multi-source data integration, interactive dual-timeline visualization, and structured evidence archival across 6 data domains. No third-party data warehouse. Every pipeline built from scratch.

NLP Extraction Dual-Timeline Engine Multi-source Integration GDPR-Ready Leaflet Maps 195KB Custom JS
6 Structured Data Domains
35+ REST Endpoints Across 5 Modules
14,370+ Incident Records — NLP-Coded & Verified
3+ Languages via Dynamic Translation
End-to-End Pipeline

Built In-House, Every Stage

From raw news ingestion to structured JSON storage to interactive visualization — no third-party data warehouse or BI platform involved.

01
Collection

Flask + BeautifulSoup · Batch URL processing · Multi-source feeds

02
Extraction

NLP · spaCy NER · Offline SQLite queue · Zero data loss

03
Structuring

JSON / CSV schemas · Classification taxonomy · Source verification

04
Analysis

Statistical aggregation · Trend detection · Severity scoring

05
Visualization

Dual-timeline · Leaflet maps · Interactive charts · CSV export

Data Architecture

6 Structured Data Domains

Each domain features a custom schema supporting filtering, geographic mapping, temporal indexing, and CSV export — no external database engine.

IncidentRecord

Timestamped crisis events with location, type classification, casualty figures, and source attribution.

CasualtyData

Structured casualty records with demographic breakdown, verification status, and family-level detail.

InfrastructureEvent

Attacks on protected sites — medical, educational, religious, water, and food infrastructure.

HumanitarianIndicator

Nutrition, displacement, aid access, and economic indicators with trend analysis and threshold alerts.

HistoricalRecord

Longitudinal event records spanning decades — normalized schema for cross-era comparative analysis.

DocumentBundle

Full evidence export per incident — structured JSON bundle with all linked records, sources, and metadata.

Platform Capabilities

From NLP Extraction to Geographic Visualization

🧠

NLP Incident Extraction

Analysts submit raw news article URLs; Flask parses content, runs spaCy NER entity recognition, and maps events to the incident taxonomy. Offline SQLite queue ensures zero data loss during connectivity gaps.

Flask + Python spaCy NER SQLite offline queue
📅

Dual-Timeline Engine

62 KB hand-built timeline manager renders historical records spanning decades and current incident streams simultaneously. Three view modes — Timeline, Map, and List — with CSV-powered data loading and advanced filtering.

62KB custom JS CSV-powered 3 view modes
🗺️

Geographic Incident Mapping

Incidents plotted on interactive Leaflet maps with type-coded markers, zoom-level filtering, and click-through modals showing full incident detail with source attribution.

Leaflet.js GeoJSON Cluster markers
🌐

Multi-Language Support

Dynamic JSON translation system with language detection and RTL-ready fallback. Supports 3+ locales for international humanitarian monitoring teams.

Dynamic JSON i18n RTL fallback 3+ locales
📦

Evidence Bundle Export

Full evidence export per incident — structured JSON bundle with all linked records, sources, and metadata. CSV export pipeline for all domains with one-click backup creation.

JSON bundle CSV export One-click backup
🔒

GDPR-Compliant Archival

No personally identifiable data stored without consent. Source verification and attribution tracking on every record. OMOP CDM-compatible schema for analytics-database integration.

No PII without consent Source attribution OMOP CDM-ready
Standards & Data Governance

Data Integrity · GDPR-Ready · Evidence Chain

Every record carries a verified source chain — no anonymous data ingestion.

Multi-source data integration — news, NGO reports, institutional feeds ✓ Implemented
Source verification & attribution tracking on every record ✓ Enforced
GDPR-compliant — no personally identifiable data stored without consent ✓ Compliant
Offline-capable SQLite extraction queue — zero data loss on connectivity loss ✓ Implemented
Structured incident taxonomy — 12 event types, hierarchical classification ✓ Defined
Full evidence bundle export (JSON) — per-incident, on-demand ✓ On-demand
CSV export pipeline — all domains, download & backup creation ✓ Implemented
Multi-language support — dynamic JSON translation, 3+ locales ✓ Active
GitHub Pages auto-detection & dynamic path resolution ✓ Implemented
OMOP CDM-compatible schema design — analytics-database ready ◎ Ready
Technology Stack

195 KB of Custom JS — No Framework

Built from scratch across 8 layers.

// Data Collection
Flask + PythonBeautifulSoupBatch URL Processor
// NLP / AI
spaCyNER PipelineConfidence Scoring
// Storage
SQLiteJSONCSV
// Visualization
Leaflet.jsD3GeoJSON
// Frontend
Vanilla JS ES662KB Timeline Engine67KB Map Engine
// i18n
Dynamic JSON TranslationRTL SupportLanguage Detection
// Deployment
GitHub PagesCNAMECI-ready
// Styling
CSS VariablesResponsiveDual Theme
195KB
of custom JS — no React, no framework
6 Active
data domains — 23+ sub-pages in roadmap
v1.3.0
Active · last push April 2026
Get in Touch

Interested in CrisisScope?

Whether you're an NGO, research institution, or journalist looking for structured humanitarian data tooling — let's talk.

// LinkedIn
Connect with me
// Location
Frankfurt / Munich, Germany