Inspiration

News is everywhere, but understanding it is another matter. Most news is built around headlines, articles and endless feeds. They tell us what happened, but leave us to piece together why it matters, how different people see it, and what we can learn from it.

I grew up around stories told at night, sometimes true, often exaggerated, always vivid, and each one ended with a lesson that stayed with you. A good tale makes complicated ideas memorable. It carries context, perspective and wisdom, and it invites questions rather than simply delivering information. The Igbo say "Ilu bu mman ndi Igbo ji eri okwu": proverbs are the oil with which words are eaten.

Those stories were also heard together. Today the news arrives as notifications, usually to one person on one screen, and for families spread across Lagos, London, Houston and Toronto, something quiet disappears with that: hearing the world together, and talking about it afterwards.

Earlier this year I explored this idea in a web prototype for the Gemini 3 Hackathon: paste a news link, get a story back. But a story is meant to be heard, in a room, by everyone at once. Storytelling has always been conversational, so Alexa+ felt like its natural home, and I started again from scratch, voice first.

What it does

Greeo is an Alexa+ add-on that retells the day's news as short spoken tales in the spirit of African oral storytelling, woven with real proverbs from a cited collection. Instead of reading the news aloud, it tells a story, then lets listeners explore the truth behind it.

  • "Greeo, what's happening today?" Greeo offers the day's stories. A tale is told in short beats, in a light, balanced or serious telling.
  • Story story. An optional opening from the call and response that starts folktales across much of Nigeria: Greeo calls "Story story!", the room answers "Story!", and the tale begins.
  • The truth behind the tale, one question away, in any order, then "continue" to pick the tale up again:
    • Reflection: what the story might mean.
    • Proverbs: each one's culture, original wording, meaning and source.
    • Facts: the evidence behind the story, each linked to the reporting.
    • Context: background, causes and consequences.
    • Perspectives: different supported views on the event.
    • Sources: who reported it, so listeners can trace the information.
  • It remembers. "Save this" and, the next morning, "What was I listening to?" Greeo keeps what each listener heard and saved, and where they stopped.
  • Cards for screens. Every answer has an MCP Apps card on Echo Show devices with the exact text, so the words can be read as well as heard.

The goal is not to replace journalism or blur the line between storytelling and fact. Narrative should make the news easier to understand without changing what is true: a telling may colour a fact the way a storyteller does, but never change a name, number, date or outcome.

How I built it

The core idea is to separate preparing the content from the live conversation.

Stories are prepared before anyone listens. Twice an hour, a Celery pipeline reads new articles from BBC News, Al Jazeera, The Guardian and DW, respecting robots.txt and storing only the headline, link and a short snippet. On Amazon Bedrock it:

  1. establishes the facts, context and perspectives, each linked to its evidence (Qwen3 235B);
  2. chooses proverbs by meaning from a curated, cited collection (Qwen3 reranks the candidates);
  3. writes each telling (Kimi K2.5);
  4. checks every telling with rules and an editor model, revises it at most once, and publishes it only if it passes.

Proverbs are never written by AI. The writer only places a marker such as {{P1}}; server code inserts the proverb's exact text from the collection, with its culture and source. When no proverb genuinely fits, the tale goes on without one rather than inventing one.

A self-hosted MCP server for Alexa+. Greeo exposes the prepared stories through an MCP server (spec 2025-11-25 over Streamable HTTP) with 14 focused tools and six MCP Apps cards. No model runs while someone is listening, so every tool answers in milliseconds. Every reply is plain text written to be spoken: at most 75 words, no technical words. Memory needs account linking; the listener's identity always comes from the token, never from a tool argument.

A simulator that plays Alexa+. Without access to the Alexa+ developer preview, I built an Echo Show simulator in Angular that hosts the MCP server the way Alexa+ would. A Strands Agents agent on Bedrock chooses the tools, Amazon Polly gives Greeo its voice, and a Live activity card beside the device shows every API call, agent decision and MCP call as it happens.

Hosted on AWS. One EC2 instance, with an IAM role limited to Bedrock and Polly, runs the whole stack in Docker Compose (Django, the MCP server, Celery, PostgreSQL, Redis) behind Caddy with automatic HTTPS.

Tested. Over 320 backend tests and 57 frontend tests (the backend tests never reach AWS), plus a smoke test against the real MCP server.

Challenges I ran into

Balancing storytelling with factual accuracy. This was the most important challenge. A compelling story needs pacing, character and feeling; news demands precision. I kept the narrative separate from the evidence: facts, context, perspectives and sources stay distinct and checkable, and every telling is checked against its facts before it can be published.

Preserving cultural authenticity. African storytelling traditions are rich and diverse, and I didn't want to reduce them to decorative phrases. Models readily invent proverbs that sound real, so a model never writes one: proverbs come only from a cited collection, each with its culture and source, and cultural attribution comes only through the proverb.

Designing for conversation, not screens. A news app can show many articles and buttons at once; a voice experience can't. I had to think hard about reply length, pacing, how listeners move between layers, and how to answer follow-ups without overwhelming them.

Gaps in the docs and SDKs. The Alexa+ docs disagree on the MCP protocol version, don't say what an MCP server receives with account linking, and don't say whether tool text is spoken verbatim. The MCP Python SDK sends raw exception text to the client, which a voice device would read aloud. On AWS, Anthropic models on Bedrock failed with an unexplained Marketplace error, and Polly's neural voices weren't offered in my region. Each is in my friction log with the workaround I used.

Accomplishments that I'm proud of

  • A complete voice-first experience, working end to end on a live hosted site: tale, proverb, facts, other views, memory and "continue".
  • Proverbs that are always real and always cited, by design rather than by hope.
  • The Live activity card: anyone can watch the agent choose a tool and the MCP server answer, in real time.
  • Story story: a small piece of how stories have always started at home, now opening the news.

What I learned

The most interesting uses of AI are not always about generating more content. Sometimes they help people understand existing information better. Moving every model call out of the listening path, and making the curated collection the only source of proverbs, made Greeo faster, cheaper and more trustworthy at the same time.

I also learned how much discipline it takes to make a voice-first experience feel simple, and to treat MCP Apps cards as the place for exact text, because on Alexa+ the spoken reply is Alexa's to phrase.

What's next for Greeo for Alexa+

  • Certify it as a real Alexa+ add-on once the developer preview opens.
  • Family households: one shared history, so whoever is in the room can say "continue".
  • A larger collection of verified proverbs, more languages, and more sources, especially African newsrooms.
  • Ways for listeners to follow the subjects they care about.

The ambition is simple: make understanding the world feel less like consuming a feed and more like a story we hear together.

What's new since the Gemini prototype

The Gemini 3 prototype was a web page: paste a link, get a story. Greeo for Alexa+ is a clean rebuild started during this hackathon, with no prototype code reused. New in this build: the MCP server and MCP Apps cards; the voice-first design with the truth behind each tale one question away; stories prepared ahead from news feeds; proverbs inserted by code from a cited collection; the fact checks and editor model; per-listener memory; Story story; the Echo Show simulator with the Live activity card; and Amazon Bedrock, Strands Agents and Amazon Polly in place of Gemini.

Disclosure

Greeo normally serves only proverbs with two independent citations. For the demo, it also serves a single-source collection (594 proverbs in 15 languages from africanproverbs.com) behind a switch that is off by default; citations are never removed, permission has been requested, and the collection will be removed after judging.

Built With

Share this project:

Updates

Submission history