Europe & France Unrest Tracker: Autonomous AI OSINT Pipeline & Live Geospatial Web App
Author: Ancheng (Maximus) Deng
Last Updated: November 13, 2026
Live Published Web App: Europe & France Unrest & Riot Tracker (Google Sites Full-Page Embed)
Google Sites Editor: Europe & France Unrest & Riot Tracker (Site Editor)
Live Backend Database: France Riot Tracker (Google Sheets Database)
1. Executive Summary
The Europe & France Unrest & Riot Tracker is an end-to-end, zero-cost Open-Source Intelligence (OSINT) web application and autonomous AI data pipeline built to monitor, verify, geocode, and visualize civil unrest, labor strikes, transit shutdowns, curfews, and security alerts across France and 7+ European countries in real time.
Combining a single-page interactive geospatial dashboard (hosted on Google Sites), a serverless cloud spreadsheet backend (Google Sheets), and an autonomous twice-daily AI research agent (powered by Gemini Scheduled Actions), the project transforms scattered multi-language police decrees, ministry communiqués, transit alerts, and wire reports into a structured, source-grounded public safety tool. As of November 13, 2026, the database tracks 134 verified incident records (INC-001–INC-134) and 125 national and regional statistical indicators across France, Italy, Belgium, Portugal, Spain, Albania, and Austria.
2. Background & Personal Motivation
2.1 The Spark: Preparing for NeurIPS 2026 & Conference Travel Concerns
The idea for this project came from a very practical, personal concern. While preparing presentation materials to attend NeurIPS 2026 (where our team's paper, "MAKE: A Multi-Agent Framework for Iterative Evaluation and Improvement of Business Requirements Documents", was accepted to the SLMs for Agentic Systems Workshop) and planning upcoming international conference travel—including evaluating European transit hubs and Paris conference events—France was suddenly rocked by its most intense wave of social unrest in years.
What began in mid-September 2026 as high school (lycée) and university walkouts in Créteil over teacher shortages and the Parcoursup admissions platform rapidly snowballed into a nationwide cost-of-living and anti-austerity movement:
- On October 17, 2026, 550,000 demonstrators marched across France, accompanied by barricades, commercial looting in central Paris (Place de la République, Les Halles, Boulevard Voltaire), the torching of Limoges Town Hall (Hôtel de Ville), and 1,000 injured police officers (The Guardian, Wikipedia – 2026 French Student Protests).
- Within days, copycat youth blockades, housing encampments, and general strikes spread across Italy, Belgium, Spain, Portugal, Albania, Germany, the Netherlands, and Denmark (Al Jazeera ACLED Mapping, Fortune).
2.2 The Information Gap for Travelers & Researchers
When trying to assess real-world safety and transit reliability for Paris and European travel, I ran into three major pain points with traditional news coverage:
- Fragmented, Multi-Language Operational Data: Crucial street-level details—such as which specific Paris Metro stations RATP is closing at 11:00 AM, which arrondissements have prefectural route bans or night curfews, or which RER/TGV lines are cut to 1-in-3 trains—are buried inside French-language prefectural decrees, Bonjour RATP bulletins, and local municipal notices (Sortiraparis).
- Lack of Geospatial Context: Reading that a march is rerouted from "Place de la Bastille to Place de la Nation via Boulevard Voltaire" or "Panthéon to Place d'Italie" doesn't immediately tell a visitor whether their hotel, conference venue, or train station (Gare du Nord, Gare de Lyon, Châtelet) sits inside a high-risk police cordon.
- High-Noise Social Media vs. Slow Official Tallies: Viral social media clips often lack timestamps or locations, while official Interior Ministry arrest and turnout tallies arrive hours after disruptions have already begun.
I wanted a single, self-updating dashboard that would automatically scan official European authorities every 12 hours, verify every incident with a clickable primary source URL, plot the exact coordinates on an interactive map, and keep a clean historical ledger—without requiring manual daily data entry.
3. System Architecture & Implementation Details
The project is designed around a "Serverless Vibe-Coding + Autonomous AI Agent" architecture that costs $0/month to host and maintain.
| Architecture Layer | Technology / Platform | Role in the Pipeline |
|---|---|---|
| 1. Autonomous Ingestion & Research Agent | Gemini 3.8 Flash + Scheduled Actions (0 9,21 * * *) | Executes twice-daily web searches across European news, police prefectures, embassies, and transit operators; browses full primary articles; extracts coordinates, severity, arrests/injuries, and curfew status. |
| 2. Cloud Database & Headless CMS | Google Sheets (France Riot Tracker) | Stores normalized relational data across two tabs (Incidents_Database and National_Statistics); exposes a live, public read-only CSV / Google Visualization (gviz/tq) API endpoint. |
| 3. Frontend Web Application | HTML5, Tailwind/Custom CSS, Vanilla JS, Leaflet.js | Renders the interactive map, severity-coded pins, KPI cards, search/filter controls, and live data table; fetches fresh rows directly from the Google Sheet on load or manual refresh. |
| 4. Public Web Hosting | Google Sites Full-Page Embed | Hosts the single-file web application publicly with zero server maintenance or cloud hosting fees. |
3.1 Database Schema Design (France Riot Tracker Google Sheet)
To ensure seamless synchronization between the AI agent and the web frontend, the France Riot Tracker Google Sheet enforces a strict two-tab schema:
- Tab 1: Incidents_Database (16 Columns)
- Incident_ID: Unique sequential identifier (INC-001 through INC-134).
- Date: ISO date string (YYYY-MM-DD).
- City & Region: Municipality, department/arrondissement, and country (e.g., Paris | Île-de-France, France or Barcelona | Catalonia, Spain).
- Location_Specific: Exact landmark, square, high school, or transit hub (e.g., Place de la Nation, Lycée Gaston-Bachelard, Passeig de Gràcia).
- Latitude & Longitude: Decimal WGS84 coordinates for Leaflet map plotting.
- Incident_Type: Concise operational classification (e.g., RATP Closes 33 Metro/RER Stations, Police Fire Tear Gas After Housing Rallies).
- Severity: Tri-level risk rating (Critical, High, Moderate).
- Source_Category: Distinguishes Official Police / Interior Ministry from Social Media / Public Report.
- Source_Platform_Or_Agency: Issuing authority or wire agency (e.g., Paris Police Prefecture / Bonjour RATP, Mossos d'Esquadra / Reuters).
- Description: Detailed, fact-checked narrative with specific line numbers, turnout counts, and operational impacts.
- Reported_Arrests & Reported_Injuries: Verified numeric counts for aggregation.
- Curfew_Status: Active prefectural ban, curfew window, or transit lockdown status.
- Source_URL: Direct, clickable deep link to the primary source article or official bulletin.
- Tab 2: National_Statistics (5 Columns)
- Metric, Value, Source_Agency, Date_Reported, and Reference_URL—capturing macro-level indicators such as ACLED's 31-country event dataset, Interior Ministry vs. union turnout comparisons, cumulative European arrests (7,648+), and macroeconomic drivers (French debt-to-GDP trajectory, OECD tax wedge, and Spain's housing deficit).
3.2 Live Frontend-to-Sheet Synchronization Mechanics
- The Google Sheet is shared with Anyone with the link: Viewer permissions.
- When a user opens or refreshes the published Google Sites web app, the client-side JavaScript queries the live Google Sheets export endpoint, parses the 16-column incident records and 5-column national statistics ledger, dynamically updates the Leaflet map markers and KPI counters, and falls back gracefully to a bundled baseline snapshot if offline.
4. Data Sources & Twice-Daily Refresh Schedule
4.1 Automated Refresh Schedule (0 9,21 * * *)
The tracker is powered by an automated Gemini scheduled task ("Update Europe riot tracker") that runs twice daily around 9:00 AM PDT and 9:00 PM PDT (corresponding to 6:00 PM CET at the close of European afternoon marches and 6:00 AM CET after overnight clashes and morning transit forecasts are published).
On every 12-hour cycle, the agent:
- Scans the last 12 hours of multi-lingual reporting across France, Italy, Belgium, Spain, Portugal, Albania, Austria, Germany, the Netherlands, Denmark, and Greece.
- Browses primary source URLs in full to verify exact street locations, station lists, arrest/injury figures, and prefectural orders (never extrapolating from headlines alone).
- Audits the existing Incidents_Database and National_Statistics tabs in the France Riot Tracker Sheet to prevent duplicate entries.
- Appends the newly verified rows directly to the Google Sheet and delivers a cited Markdown digest in chat.
4.2 Multi-Tier Source Verification Hierarchy
Every row in the tracker is grounded in at least one verified URL from a three-tier source hierarchy:
- Tier 1 — Official Government, Judicial, Police & Diplomatic Authorities:
- French Ministry of the Interior (Laurent Nuñez), Paris Police Prefecture (Préfecture de Police), Ministry of National Education (Édouard Geffray), Ministry of Justice (Gérald Darmanin), and the Paris Administrative Court (Sortiraparis Court Ruling).
- Diplomatic missions including the U.S. Embassy & Consulates in France, U.S. Embassy in Spain, U.S. Consulate General Frankfurt, U.S. Embassy Budapest, and the Philippine Department of Migrant Workers (DMW).
- European national authorities including Catalonia's Mossos d'Esquadra and Generalitat (Catalan News), Italian Interior Ministry (Channel News Asia), Portugal's IGAI watchdog (Business Today), and Albanian State Police (Tirana Times).
- Tier 2 — Transit, Aviation, Maritime & Energy Operators:
- Bonjour RATP, SNCF / Transilien, French Civil Aviation Authority (DGAC), Spain's Renfe & airport operator AENA (El País English), Spanish grid operator Red Eléctrica (CNN), and Inchcape Shipping Services.
- Tier 3 — Conflict Research Datasets, Wire Agencies & Real-Time Strike Monitors:
- ACLED (Armed Conflict Location & Event Data) via Al Jazeera, AFP, Reuters, Associated Press, TIME, Public Sénat, Blick, SafeAbroad, Manifs en direct, StrikeTracker, GasBu, and official union portals (CGT État, CGT Services Publics).
5. Website Features & Visual Walkthrough
5.1 Live KPI Telemetry Header & Sync Controls
- Real-Time Aggregated Counters: Displays total verified incidents (134), cumulative European arrests (7,648+), security forces deployed (70,500 across Europe, including 70,000 in France), and active countries affected (31 in ACLED tracking; 7+ in detailed incident logs).
- Live Sync Status Badge & Manual Refresh Button: Shows the latest Google Sheet synchronization timestamp and allows users to trigger an instant client-side re-fetch from the live spreadsheet.
5.2 Interactive Geospatial Map (Leaflet.js)
- Severity-Coded Pins: Plots every incident across Paris arrondissements, French departments, and European capitals (Madrid, Barcelona, Rome, Milan, Tirana, Brussels, Lisbon, Amsterdam, Copenhagen, Berlin, Frankfurt, Athens) with color-coded markers for Critical (arson, riots, acid/gasoline attacks, mass arrests), High (tear-gas dispersals, major transit lockdowns, general strikes), and Moderate (peaceful marches, diplomatic alerts).
- Rich Interactive Popups: Clicking any pin reveals the exact location, date, incident type, arrest/injury counts, curfew/security status, and a direct link to the primary source.
5.3 Multi-Faceted Filter Bar & Search Engine
- Instant Filtering by Country, City, Severity & Source Type: Users can isolate incidents by country (France, Spain, Italy, Germany, Netherlands, Portugal, Albania), filter strictly for Critical or High severity clashes, or toggle between Official Police / Interior Ministry announcements and Social Media / Public Reports.
- Keyword Search: Supports instant full-text filtering for specific Metro lines (Line 6, RER D, Châtelet), landmarks (Eiffel Tower, Louvre, Gran Vía), or unions (CGT, SEMAF, IG Metall).
5.4 National Statistics Ledger & Direct Source Grounding
- Macro & Operational Ledger: Dedicated view displaying the National_Statistics tab—tracking Saturday vs. weekday turnout trajectories, ACLED's 31-country breakdown, school property damage (€10M in Île-de-France), and upcoming European general strike dates.
- 100% Verifiable Citations: Every incident and statistical row includes a clickable [Source] hyperlink to the original government bulletin or news report.
6. Key Analytical Insights From the Tracker
Five data-backed findings from the tracker stand out:
- France's Two-Track Divergence (Declining Weekend Crowds vs. Record Weekday Strikes):
- Official Interior Ministry Saturday turnout declined steadily over four consecutive weekends: 550,000 (Oct 17) → 410,000 (Oct 24) → 320,000 (Oct 31) → 146,000 (Nov 7) (EU Today, Dawn / AFP).
- Conversely, weekday union-led mobilization peaked on Thursday, November 5, drawing 600,000 official demonstrators (1.6 million claimed by the CGT, including 350,000 in Paris), closing the Eiffel Tower, reducing nuclear electricity output, canceling 1 in 10 TGV trains, and forcing RATP to close 33 Paris Metro/RER stations (MCI Group, Bonjour RATP).
- Fewer School Blockades, Sharper Radical Violence:
- While blockaded French high schools dropped from 81 officially blockaded (~1,000 disrupted) on Nov 5 to 49 of 3,700 (1.3%) on Nov 10, violence intensified: 24 CRS riot officers were sprayed with phosphoric acid in Toulouse (ActuRadar), Île-de-France logged €10 million in damage and ~100 firework mortar attacks across 468 high schools, and Meaux prosecutors opened an attempted homicide investigation on November 10 after a deputy mayor was doused with gasoline outside Lycée Gaston-Bachelard in Chelles (Blick / AFP).
- ACLED 31-Country Dataset Confirms Unprecedented Riot Ratio:
- Between September 15 and October 30, ACLED recorded 1,762 major demonstrations (100+ participants) across 31 European countries (1,395 peaceful protests and 367 riots). France accounted for 1,242 events (~66/day, more than triple its 5-year average of 20.5/day), with 24.2% classified as riots against a historical median of 1.9%, followed by Spain (173), Italy (160), Germany (70), Portugal (33), and Belgium (18) (Al Jazeera ACLED Mapping).
- Spain's First General Strike in 14 Years (Nov 11, 2026):
- Sparked by the eviction and death of 87-year-old Madrid pensioner Maricarmen Abascal and rents consuming 98.7% of average youth wages (driving youth emancipation down to a record-low 14.5%), roughly 4 million Spanish workers struck on November 11—cutting peak national power demand by 15.5%, drawing 120,000 marchers in Madrid and 57,000 in Barcelona, and resulting in 75+ arrests across 1,044 incidents and 10 smashed storefronts on Barcelona's Passeig de Gràcia (TIME, Catalan News).
- Upcoming Mid-to-Late November European Flashpoints:
- The tracker has already mapped 72 Yellow Vests "Act V" rallies across France (Nov 14) (GasBu), a French public- and private-sector strike (Nov 17) (CGT État), Lisbon student and CGTP marches on Parliament (Nov 18 & 21) (SafeAbroad), France's national retirees' march (Nov 19), Italy's 24-hour general strike and Europe-wide student strike (Nov 20–21) (Vivere in Italien), and Spain's rescheduled SEMAF rail strike (Nov 23) (StrikeTracker).
7. Target Audience & Practical Use Cases
- Academic Researchers & Conference Attendees (e.g., NeurIPS / EU Tech & Science Conferences):
- Quickly check whether hotels, conference centers, rail terminals (Gare du Nord, Gare de Lyon, Barcelona Sants, Madrid Atocha), or airport connections (RER B to CDG, Orly, Madrid-Barajas) are impacted by active strike notices or police perimeters.
- International Travelers, Expats & Overseas Workers:
- Consolidates U.S. Embassy, UK FCDO, and Philippine DMW security advisories (such as the November 10 advisory recommending 3-day emergency "go bags" in France) into an accessible visual map.
- Local Residents & Urban Commuters in Paris, Lyon, Madrid, Barcelona & Milan:
- Provides line-by-line Metro/RER station closures, prefectural march corridors (République–Nation, Panthéon–Place d'Italie), and minimum-service transit windows (25% peak-only caps in Catalonia).
- AI Engineers, Data Scientists & Vibe-Coding Creators:
- Serves as a practical blueprint for turning an LLM agent + scheduled cron job + Google Sheets into a production-ready, self-updating data product without writing complex backend infrastructure.
Try the live tracker: Europe & France Unrest Tracker — PAN-EUROPE LIVE
Leave A Comment