Geo-Pulse

A weather radar for geopolitics

Inspiration

We live inside a constant scroll. Headlines refresh by the minute, alerts stack up, and global tension arrives fragmented into tweets, tickers, and breaking banners. Understanding what is actually happening in the world often requires hours of anxious digging, with very little sense of proportion.

For storms and hurricanes, we have weather radars.
For geopolitics, we had noise.

Geo-Pulse was born from a simple question:
What if you could take the planet’s geopolitical pulse in a single glance?

Instead of text-heavy feeds, we imagined a cinematic, situation-room style interface. Something closer to sci-fi than spreadsheets. A system that compresses millions of data points into visual intuition, letting patterns emerge instantly rather than hiding inside articles.

In short, we set out to build a Weather Radar for Geopolitics.

What it does

Geo-Pulse is a real-time, interactive intelligence dashboard that visualizes global sentiment and stability.

  • The Living Map
    A vector-based world map where countries are color-coded by current stability.
    Green signals relative positivity, red highlights conflict, and blue indicates neutrality.

  • AI-Driven Analysis
    Selecting a country triggers Google Gemini 3 Flash to scan live news headlines via Google Search. The system analyzes current socio-political conditions and produces a normalized Sentiment Score ranging from -1.0 to +1.0.

  • Conflict Tracking Layer
    An autonomous layer that detects and visualizes active war zones and civil unrest. Historical conflicts are filtered out so the focus remains on what is unfolding today.

  • Deep Insights
    Beyond a single score, Geo-Pulse provides:

    • 7-day predictive outlooks
    • Sector sentiment breakdowns (Economy vs Politics)
    • Environmental context such as Air Quality Index
  • Strategic Overlays
    Optional layers reveal strategic assets including Nuclear States, Space Ports, and AI Hubs. Each is animated with context-aware visuals like pulsing targets or rotating radiation symbols, turning raw data into immediate spatial awareness.

How we built it

Geo-Pulse is a modern Single Page Application designed for performance, scalability, and type safety.

  • Frontend
    Built with React 18 and TypeScript. Tailwind CSS powers the glassmorphism UI and layered animations.

  • The Map Engine
    D3.js handles all geospatial rendering. Instead of relying on off-the-shelf map libraries, D3 gave us low-level control to implement custom vector effects and the signature “Stellar Flow” ocean particle system.

  • The Brain (AI)
    Powered by the Google GenAI SDK using gemini-3-flash-preview.
    We enforced JSON Schema Mode to guarantee structured outputs and used Google Search Grounding so every analysis is anchored to current, verifiable events rather than model memory.

  • Database & Caching
    Firebase Firestore acts as a smart cache. A custom scheduler stores reports for 22 hours, reducing API usage and costs while still allowing users to force fresh analysis when needed.

  • Data Pipeline
    A custom SyncManager batches AI requests, manages concurrency, and introduces controlled delays to prevent rate-limit errors, allowing the system to scale to global coverage.

Challenges we ran into

  • Map Performance vs Visual Fidelity
    Rendering 200+ interactive SVG paths alongside animated particle systems caused lag on lower-end devices. We solved this using ResizeObserver throttling and vector-effect: non-scaling-stroke, offloading heavy calculations to the GPU.

  • AI Hallucinations vs Live Reality
    Early versions occasionally surfaced historical conflicts as active. Tight prompt engineering, explicit “current active status” constraints, and strict Google Search Grounding eliminated this issue.

  • API Rate Limits
    Global analysis hits quotas quickly. The SyncManager queue system batches requests and spaces them intelligently to stay within Requests-Per-Minute limits.

  • Data Normalization
    Different data sources reference countries inconsistently. A normalization layer maps GeoJSON features to canonical database keys, preventing duplication and drift.

Accomplishments we’re proud of

  • The Cinematic Feel
    Geo-Pulse doesn’t look like an admin dashboard. Breathing conflict zones, drifting ocean stars, and a subtle gyroscopic interface make the system feel alive.

  • Robust Error Handling
    A custom “System Critical Failure” screen captures React errors and provides copy-ready logs and diagnostics, turning crashes into actionable feedback.

  • The Conflict Layer
    Getting the AI to autonomously detect, verify, and map active conflicts without human curation was a major milestone in automated intelligence.

  • Smart Historical Archiving
    The Daily Archive system builds historical charts organically as the app runs, enabling trend analysis without relying on expensive historical data APIs.

What we learned

  • D3.js is powerful and unforgiving
    Mastery required deep understanding of projections, coordinate systems, and SVG internals.

  • Prompt engineering is logic design
    Reliable structured output demands strict schemas and clear negative constraints that define what the AI must not do.

  • Perceived performance matters
    Even when data takes seconds to load, terminal-style animations like “Triangulating Coordinates…” turn waiting into part of the experience.

What’s next for Geo-Pulse

  • Gemini Live Integration
    A voice-driven mode where users can speak directly to the map.
    “Geo-Pulse, show countries with high inflation and political instability.”

  • Timeline Replay
    Snapshot storage and time-lapse playback to watch conflicts emerge, spread, or resolve over months.

  • Economic Correlation Layers
    Overlaying live stock market and crypto data to visualize how geopolitical sentiment ripples through global finance.

  • Mobile App
    Porting the experience to React Native to bring the situation room into your pocket.

Built With

Share this project:

Updates

posted an update

There is currently a bug preventing country clicks on various browsers on Windows machines. Searching for a country still works. The fix will be released after the judging period due to an active code freeze.

Log in or sign up for Devpost to join the conversation.