AfterHours — Some Signals Should Never Be Heard.
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine
What I Built
AfterHours is an AI-powered haunted shortwave radio mystery game inspired by the theme "Ghost in the Machine."
Imagine switching on an old radio late at night. Between the static and interference, you begin hearing strange broadcasts. At first, they sound like ordinary weather reports and emergency announcements. But as you tune into different frequencies, the transmissions begin contradicting one another.
Something happened in the fictional town of Blackwood in 1988. And someone—or something—is trying to tell you the truth.
In AfterHours, players become radio investigators. They manually tune across frequencies, detect signals, lock onto hidden transmissions, collect evidence and piece together the mystery behind the disappearance of Blackwood.
The investigation features four radio stations:
- 88.1 MHz — Blackwood Weather: An ordinary weather report with an unsettling explanation for a mysterious incident.
- 91.7 MHz — Civil Defense: An emergency evacuation transmission that contradicts the first broadcast.
- 103.4 MHz — Police Dispatch: Evidence suggesting that the authorities knew more than they admitted.
- 107.9 MHz — Station Zero: A hidden transmission that reveals the truth behind Blackwood's disappearance.
Once all the clues are discovered, players must make a decision that determines one of two possible endings.
I interpreted "Ghost in the Machine" as the idea that technology can become a vessel for something mysterious. In AfterHours, an ordinary radio becomes the medium through which a forgotten story tries to reach the living.
Demo
]
The demo showcases:
- The cinematic opening screen.
- Frequency tuning and signal detection.
- Discovering and locking onto hidden transmissions.
- Collecting clues and uncovering the mystery.
- Experiencing the two different endings.
Code
GitHub Repository:
https://github.com/nikkisbhandari123-coder/AfterHours
The project is open source. Contributions and suggestions are welcome!
How I Built It
AfterHours is built using Python and Streamlit, with a focus on local AI inference and open-source technology.
Technology Stack:
- Python: Core game logic, mystery progression, signal detection and ending management.
- Streamlit: Interactive radio interface and game experience.
- Gemma 3 4B: Open-weight language model used through Ollama for generating atmospheric radio fragments, mysterious whispers and ambient transmissions.
- Ollama: Runs the language model locally, allowing AI inference without depending on a hosted language-model API.
- Custom CSS: Vintage shortwave radio aesthetics, CRT effects, scanlines, static-inspired visuals and cinematic backgrounds.
- Procedural Audio: Pure Python audio generation for radio static, interference, tuning sounds and carrier-lock effects.
- ElevenLabs: Optional text-to-speech narration for radio broadcasts.
One important design decision was separating AI-generated atmosphere from the actual mystery.
The canonical broadcasts, clues, investigation progression and endings are controlled by Python. Gemma generates atmospheric content, but it cannot invent canonical evidence, change story facts or determine the player's ending.
This keeps the mystery consistent while still allowing AI to make the radio experience feel unpredictable.
The application also includes fallback mechanisms so the core experience remains available when Ollama or ElevenLabs is unavailable.
Why Does Open Innovation Matter?
Open innovation made it possible to experiment with AI without making the entire project dependent on a closed API.
Using Gemma through Ollama allowed me to explore local inference and integrate an open-weight model directly into the game.
It also gave me more control over how AI interacts with the application. Rather than allowing the model to control the entire story, I could use it for creative atmospheric generation while keeping the important game mechanics deterministic and reliable.
Open-source tools made experimentation more accessible, gave me control over the development process and helped me understand how different components of an AI-powered application work together.
For a project built around mysterious signals and hidden communication, the ability to run AI locally felt especially fitting.
My Agent Session
[Add your DevRelay agent session link here, if available.]
I used AI coding assistance during development to help implement and test different parts of the application, including frequency detection, story progression, AI integration and procedural audio.
The Spirit of It
The most interesting part of AfterHours is the moment when the player realizes that the broadcasts are not independent.
A weather report mentions a mudslide. A civil defense transmission describes an armed evacuation. A police dispatch reveals that the evacuation was planned before the supposed disaster.
The radio slowly stops feeling like a machine receiving random signals.
It starts feeling like something is trying to tell you what really happened.
And when Station Zero finally appears, the player has to decide whether the truth should be broadcast to the world or buried forever.
Some signals should never be heard. But some secrets refuse to stay silent.
Prize Categories
[Select the applicable partner prize categories from the official challenge page. Potentially relevant areas include open-weight AI and local inference, depending on the published eligibility criteria.]




Top comments (0)