Inspiration
We wanted to make history feel like it is unfolding, rather than something you only understand in hindsight. Flashback places users inside a historical timeline and lets them explore what was known at a particular moment. Our project focuses on the Chernobyl disaster, where the difference between what people knew then and what we know now matters.
What it does
Flashback lets users explore the Chernobyl disaster as a timeline. They can move the simulation clock and ask questions about what was known at that point in time. Gemini answers using only events unlocked by that time, cites the supporting sources, and indicates when the available history doesn't establish an answer. ElevenLabs then turns a briefing based on those same events into spoken audio.
How we built it
We connected a web frontend to a JavaScript historical engine and a Python-AI-Voice service. The historical engine retrieves events for the requested simulationTime; the Python service applies an additional time cutoff before sending eligible events to Gemini 3.5 Flash through Google Cloud Agent Platform. For spoken briefings, the service sends a script based on the same unlocked events to ElevenLabs and provides an audio URL.
Challenges we ran into
Connecting the JavaScript historical engine and Python AI service meant aligning their API routes, response formats, and simulationTime timestamp format. We also had to make sure future events never reach the model. Setting up provider access took iteration: we explored OpenRouter with Qwen 3.8 27B and Gemini through Google AI Studio before configuring Gemini through Google Cloud Agent Platform. Local testing also exposed the need for a shared, reachable MongoDB connection before the historical engine can serve events.
Accomplishments that we're proud of
We built safeguards at both the historical engine and AI-service layers so answers are based only on events available at the requested simulation time. The service can associate answers with citations from those events and handle cases where the outcome isn’t yet known. We also designed the spoken briefing flow to use that same time-gated context.
What we learned
We learned that reliable AI features depend on careful data handling and service integration, not just model prompts. Consistent UTC timestamps, clear API contracts, secure environment configuration, and validating model citations all matter. We also gained experience connecting services written in different languages and setting up cloud authentication. All in all, we all gained invaluable experience and grew together as team members and leaders within the roles we had chosen.
What's next for Flashback
Next, we’ll connect the historical engine to a shared MongoDB database and verify the full flow: event retrieval, cited Gemini answers, ElevenLabs audio playback, and the website experience. Then we plan to deploy the services publicly, connect a domain, expand the historical timeline and sources, and consider adding a subtle, optional radio effect to the voice briefings.
Built With
- css
- elevenlabs
- express.js
- gemini-api
- html
- javascript
- mongodb
- mongoose
- node.js
- python
- vite


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