Discord tags: @819noodles @fountainhed

Inspiration

We wanted to create a product that not only engages users, but give them knowledge and a sense of enjoyment while learning about space science. This landed us on lunarfeed.

What it does

lunarfeed take real-world news, research, and current events and transforms them into a 1950s radio news broadcast, with a AI-designed broadcaster (ElevenLabs) who's full of personality and facts.

Every real and recent news article enters our automation system and turned into a radio script (Gemini AI) and brought to life as an MP3 (ElevenLabs).

How we built it

Roles:

Frontend Engineer: Carlos Arevalo, AI Student at Miami Dade College

Backend Engineer: Adrianne Gonzalez, Software Engineering Student at Miami Dade College

Planning

  1. We designed and iterated on the voice character prompt that would be used in ElevenLabs to create the audio personality. We did so with Gemini AI.

Voice Character Prompt

Male voice, aged 40-60, with a classic American accent. Speaking as a 1950s radio news anchor reporting urgent breaking news. Vocal qualities: energetic, authoritative, optimistic, slightly brisk delivery, and impeccable diction. Emphasize punchy intonation, clipped pacing, and a touch of mid-century charisma. Record as if using a vintage studio microphone for some nostalgic resonance. The speaker should sound eager but professional, drawing listeners in with a sense of importance and optimism.

  1. Prompted and edited our voice character on ElevenLabs to generate the perfect voice and personality for this project.

  2. Created an AWS S3 Bucket for storage.

  3. Iterated on design direction in Figma Make and Design.

Backend

A Python backend automatically scrapes and aggregates space news from sources including Nasa.gov, Space.com, Universe Today, and SpaceNews.com, specifically collecting articles published within the last 24 hours. These are structured as NewsItem objects, holding their URL, Title, and Copy.

For each article found:

  • The Gemini API receives the NewsItem’s attributes along with a detailed prompt specifying the radio persona, instructing the model to write a spoken-only anchor script strictly based on the article’s factual content. Our prompt emphasizes to not include stage direction or formatting so natural speech can be produced.

  • The resulting script is sent to ElevenLabs, rendered using our voice character (designed on ElevenLabs with prompting), and returned as an audio episode informing the public of the news story.

  • Final audio files are uploaded to AWS S3, saved as Episodes.

Once all stories are processed, the backend updates a JSON manifest read by the frontend, listing all episode metadata.

lunarfeed brings together several APIs, including:

API Request
Gemini AI POST news item data and prompt for script generation
GET completed radio script.
ElevenLabs POST completed script for audio synthesis
GET downloadable episode audio file
AWS S3 PUT audio file (episode) into S3 bucket
GET episode and JSON manifest for frontend sync

Frontend

Frontend prototyping and scaffolding were designed in Figma Make and Design, using an iterative design process. Tailwind CSS and the Radix component library provided responsive, accessible styling, while color and spacing tokens ensured thematic consistency.

Development tools like Claude Code CLI paired with GitHub Issues facilitated continuous integration and efficient context/cost management for code iterations and version control.

The main radio module uses WaveSurf for audio visualization and unified component libraries for streamlined development. Branding and visual assets were generated with Gemini AI.

The application is deployed to production using Vercel.

Challenges we ran into

In the process of learning new technologies, we ran into bugs and learning curves.

Example:

  • File naming convention caused a folder to be created in place of an audio file causing skips in the playback. This was resolved with improving the python backend code to clean the strings before naming the files.

Accomplishments that we're proud of

Adrianne:

This is my first hackathon and I went into this with some doubt about my ability to get this project going, but the experience has taught me that I was ready for the challenge. I enjoyed every part of it.

Carlos:

In the process of experimenting with AI tools on this project, I tried a new method for context management using Github Issues to offload context which was pretty awesome.

What we learned

Adrianne:

APIs used to be a scary thought to me and now I have the confidence to jump into another project and really explore the world of APIs. Automation was also very enjoyable to code, which I realize now I want to do more of.

Carlos:

How to use new technologies and how to combine their unique capabilities to build something that we're proud of.

What's next for lunarfeed

We want to schedule lunarfeed to run on a consistent cadence, such as a daily web scrape for news articles and research just published.

We would also like to continue building features informed by tracking web traffic and user engagement.

Built With

Share this project:

Updates