Inspiration
Apsora Brief was inspired by the Artemis missions and humanity's renewed push to the stars — because the more we launch, the more crowded low Earth orbit becomes, and a single untracked collision can trigger a cascade of debris that closes off space for generations. We built Apsora Brief to put real-time collision intelligence in the hands of the people responsible for preventing that future, turning raw orbital screening data into instant, actionable briefings so that the path back to the Moon — and beyond — stays open.
What it does
Apsora Brief pulls live conjunction screening data from SOCRATES/CelesTrak — the same source used by real space operators — and automatically ranks every close-approach event by risk using miss distance, collision probability, relative speed, and TLE data freshness. It then calls Claude to generate a plain-language situational brief that an operator can read in 30 seconds and act on. Every tracked satellite's orbit is rendered in a real-time 3D Cesium globe with confidence-colored trajectory lines, and a TCA playback scrubber lets you step through the exact geometry of closest approach, minute by minute.
How we built it
The backend is a FastAPI service in Python that fetches and parses SOCRATES data, runs SGP4 orbital propagation on every tracked satellite to generate position tracks, scores and ranks conjunction events, and calls the Anthropic Claude API to produce the AI brief. The frontend is a Next.js 15 app with a React dashboard that streams event data from the backend, renders orbit polylines and moving satellite markers on a CesiumJS WebGL globe, and wires a real-time playback timeline centered on each event's Time of Closest Approach. Everything communicates over a clean REST API with parallel data fetching and in-memory caching so the UI stays fast.
Challenges we ran into
Getting SGP4 orbital propagation to produce visually correct results on a 3D globe was the hardest technical problem — ECI (Earth-Centered Inertial) coordinates from the propagator have to be rotated into ECEF (Earth-Centered Earth-Fixed) using Greenwich Mean Sidereal Time, and any error in that math puts satellites in the wrong hemisphere. We also had to solve a subtle time-window mismatch: the general orbit tracks cover the next 90 minutes from now, but the Time of Closest Approach for a given event might be days away — so pair markers and TCA rings were floating in space with no matching trajectory visible until we added TCA-centered pair track windows. Making the Cesium globe fill its container correctly also required diagnosing a missing CSS import that left the canvas sized at initialization and never resized, even as the flex layout resolved around it.
Accomplishments that we're proud of
We're proud that the full pipeline — from live SOCRATES scrape to ranked event list to AI brief to 3D orbit visualization — actually works end to end in real time. The TCA playback mode is something we're especially happy with: selecting a conjunction event locks the globe into a ±45-minute window centered on closest approach, the scrubber steps through 91 propagated positions for both satellites, and hitting "Go to TCA" snaps the camera to within a second of the true closest approach. We're also proud of the confidence color system — track colors, markers, and TCA rings all reflect the same data-quality signal shown in the risk panel, so the visual and the analysis always agree.
What we learned
We learned just how much complexity lives inside what looks like a simple "show me where the satellites are" problem — coordinate frame transforms, sidereal time calculations, orbital propagation edge cases, and canvas lifecycle management in a dynamically-loaded WebGL context all had to be solved correctly or the globe silently showed wrong results. We also learned that the hardest part of building for real operators isn't the algorithm, it's the clarity: an AI brief that says "high risk — consider maneuver" is only useful if the operator can immediately see why, which is what drove every design decision in the dashboard.
What's next for Apsora Brief
We want to add maneuver planning support — given a conjunction event, calculate the delta-V required for an avoidance burn and show the post-maneuver trajectory on the globe. We also want to integrate Space-Track authenticated feeds for higher-fidelity TLE data, add email and SMS alerting for events that cross critical risk thresholds, and build a historical archive so operators can replay past events and audit past decisions. Longer term, we'd like to support cislunar tracking as Artemis missions generate a new class of high-energy conjunction scenarios that current LEO tools weren't designed for.
Built With
- anthropic-claude-api-(claude-sonnet-4-6)
- beautifulsoup4
- celestrak-gp-api
- celestrak-socrates-api
- cesium.js
- claudecode
- codex
- eslint
- fastapi
- jina.ai-proxy
- next.js-15
- pandas
- postcss
- pydantic
- python
- python-dotenv
- react-19
- recharts
- requests
- sgp4
- tailwind-css
- typescript
- uvicorn
- vscode
Log in or sign up for Devpost to join the conversation.