Atlas
Every headline happens somewhere. Follow it there.
Explore news on an interactive globe, investigate the evidence, and ask an AI research agent to help you understand what happened.
🧐 Inspiration
Every headline tells you that something happened. Understanding where it happened, who it affects, and what the evidence supports usually means opening a news site, a map, a dataset, and another search tab.
We wanted one screen where the news lives on the map. Somewhere you can fly from the whole planet into a city, follow a story through its sources and measurements, and ask a question without losing your place.
🤯 What it does
Atlas is a geographic news and evidence workspace for everyday citizens, journalists, community organizations, and investors.
Start with a headline, search a known place, click a marker, or ask Atlas to narrow the available reporting. Topic, event, publication-date, entity, and review-status filters keep the news feed and map connected.
Fly from the globe into local streets, switch between Map, Satellite, and Auto, and explore 3D buildings where height data is available. Source-backed locations retain their geographic precision; provisional provider locations have a distinct appearance and review label.
Our complete investigation follows Hurricane Helene in Asheville. Its Brief, Timeline, Evidence, and Sources tabs connect reporting about public impacts with 7,467 historical observations and aligned Landsat imagery from August 30 and October 9, 2024. Select river discharge or gage-height series, filter observation dates, inspect measurements, and overlay dated imagery with adjustable opacity. Missing readings remain gaps, and sources stay accessible.
The Gemini assistant is an agentic researcher. It chooses tools to search reporting, read available excerpts, inspect investigations, and compare observations, making follow-up calls before streaming an answer. Explicit commands can update filters, focus a known location, or open a timeline. Available source links let you continue into the evidence, and filter changes have Undo.
Optional global aircraft snapshots, searchable aircraft details, recent observed trails, and modelled wind add current geographic context with separate freshness and coverage indicators.
Choose a perspective to adjust suggested questions and brief-section order while retaining the same evidence. Save investigations locally and move between responsive panels without losing your conversation.
👷♂️ How we built it
Frontend: React, TypeScript, and Vite power the workspace. Mapbox GL JS renders the globe, streets, satellite imagery, and overlays in one engine. Zustand manages browser state; TanStack Query manages fetched records. Shared runtime schemas validate the frontend/backend interface.
Backend: Node.js and Fastify serve validated APIs backed by parameterized database queries. GDELT, NASA RSS, GDACS, and USGS adapters support ingestion with deduplication, provenance, and retry backoff. AirLabs supplies global aircraft snapshots, ADSB.lol supports regional coverage, and Open-Meteo supplies wind estimates.
🤖 Gemini: We use the official Google Gen AI SDK with an allowlisted tool loop. Tools such as search_news, get_article, get_investigation, and compare_observations return compact, paginated evidence within explicit context and execution budgets. Manual controls and assistant research share the same retrieval functions. Workspace actions require explicit instructions and validation before application; available citations resolve to stored sources. Retrieved text is treated as evidence, never as instructions.
🐯 Tiger Data: One Tiger Cloud PostgreSQL database connects articles, locations, sources, investigations, and evidence. TimescaleDB stores the observation series. The timeline displays raw measurements with units, timestamps, and qualifiers preserved; backend comparisons calculate differences between compatible returned endpoints.
☁️ Vultr: Atlas runs on a Vultr VM at atlas-news.wiki. Caddy serves the frontend over HTTPS and proxies /api to Fastify. Database and Gemini credentials stay server-side.
🤦♂️ Challenges we ran into
- Research context: Thousands of measurements cannot fit into every prompt. Bounded tools retrieve relevant pages, cache repeated reads, and preserve essential qualifications.
- Changing workspace state: A user can select another story while an answer streams. Cancellation and context checks prevent obsolete responses from applying actions.
- Geographic and temporal precision: City extents, facility pins, publication dates, and observation times have different meanings. We preserve those distinctions throughout the interface.
- Map style changes: Switching basemaps replaces custom layers. We restore news, evidence, aircraft, and wind without losing selection or camera position.
- Provider limits: Shared caches, request coalescing, backoff, visibility-aware polling, and local expiry keep optional layers bounded and their freshness visible.
😊 Accomplishments that we're proud of
- A complete sourced investigation connecting reporting, geography, historical measurements, and dated imagery.
- An agentic assistant that researches evidence and navigates the workspace through validated commands.
- Globe-to-street exploration, global aircraft snapshots, and wind context in one map engine.
- Audience preferences, local saves, and a responsive interface with visible coverage and limitations.
- A public HTTPS deployment on Vultr with a running API and verified database readiness.
🧠 What we learned
Useful geographic AI depends on how evidence reaches the model. Small research tools and explicit action validation make the experience manageable. Shared contracts keep the interface consistent, while preserving missing values, dates, and location precision helps users interpret what they find.
🤑 What's next for Atlas
We want to put more reporting on the globe through reviewed investigations, broader verified location coverage, semantic indexing, and shareable research. GDACS and current USGS ingestion support is built; hosted activation and scheduled-refresh verification are next. A future Toronto investigation could connect neighbourhood development, transit access, and community infrastructure.
Built With
- airlabs
- caddy
- fastify
- gemini
- mapbox
- node.js
- pgvector
- postgresql
- react
- tiger-data
- timescaledb
- typescript
- vite
- vultr

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