voice + swipe · the playbook and the engine

Ship a swipe feed people scroll with their ears.

A vertical, full-screen feed with a voice agent that narrates the card you're on — and shuts up the instant you swipe. Build a hands-free local guide, a shoppable reel, a narrated dashboard. The engine is open source. The year of gotchas that make it feel right is the kit.

MIT engine · free written teardown · kit $199 founding, opens Aug 1

the problem nobody tells you about

A swipe feed is the inverse of a normal voice assistant. There, the user speaks and waits. Here, the agent must narrate the on-screen card the instant it lands — and go silent the moment you swipe again.

Short hooks

Narrate in a 3–4 second hook, not a paragraph. A card that takes ten seconds to describe is a card the user already swiped past.

Hard interrupt

On swipe, cut the audio instantly and re-narrate the new card. A soft fade reads as the agent ignoring you.

~450ms debounce

A fast scroll fires a flood of updates. Un-debounced, they starve the user's turn — and the agent stops being able to hear you.

what you get

Not a concept. A product you can swipe.

These are real frames from a feed running in production — the same engine you get free, the same voice tuning the kit teaches.

A vertical feed card showing a real news item with a photo and category chips
01 — the feed

A vertical feed that feels native.

100dvh cards, snap-scroll, orientation-aware framing, preloaded neighbors. The whole feed engine is 316 lines with zero domain logic — point it at any list of cards. That engine is the free core.

The voice UI mid-call: listening state, hang-up button, tap to talk
02 — the voice

A guide you can interrupt.

Settle on a card and the agent speaks a short hook. Swipe and it cuts instantly and re-narrates. The mic stays open the whole time — talk over it, ask a question, it yields. This is the narration-sync problem solved: the exact thing that separates "magic" from "janky."

The same engine running a real-estate listings feed
03 — the range

Same engine, any domain.

The reference build runs three feeds off one engine — events, news, and real-estate listings — each with its own voice agent and filters. Repoint it at your cards and ship a local guide, a shoppable reel, or a narrated dashboard.

A bar-chart race rendered by the kit's chart library
04 — narrate data, not just places prototype

Point it at a dashboard.

The kit ships a fixed six-type chart library — trend, ranked bars, a bar-chart race, and more — so a card's hero can be a live chart instead of a photo, with the same voice reading the story behind the number. Built on sample data, labeled prototype — the honest state, not a promise.

what's inside — the whole product, visible

Free nodes open. Paid nodes titled.

Every part of the product, laid out — titles and all. The locked ones tell you exactly what you'd get, because the title is the point.

swipe-engine.js · the free core
// settle (debounced) → the agent narrates the card
function scheduleSettle(index) {
  clearTimeout(state.settleTimer);
  state.settleTimer = setTimeout(() => {
    if (state.active === index && state.status === "ready")
      emit("settle", { index, item: state.view[index] });
  }, SETTLE_MS);
}

// swipe fires immediately → the agent interrupts itself
feedEl.addEventListener("scroll", () => {
  if (!state.isScrolling) {
    state.isScrolling = true;
    emit("swipe", { from: state.active });
  }
});
Two events, one hard-won balance. The voice hangs off exactly these — settle to narrate, swipe to interrupt. It's in the free engine; the tuning that makes it feel right is in the kit.
the strongest proof I have

Don't take my word for it. Go swipe it.

A real feed, running in production right now — hundreds of live listings and working voice. Tap the green button and talk to it. No signup to browse.

genevai.pages.dev · built on this exact pattern · voice metered + rate-limited server-side

what it actually costs to run

Real numbers, not a value-claim widget.

$6.21for 526 listings extracted, 0 paid-crawler creditsafter the compaction fix
~$0.085per minute, all-in for live voiceTTS + the LLM pass-through
$5–8per month for the paid source tierthe frequent RSS runs are free
freegrounded voice lookups ≤ 1,500/dayGemini + web search
how long it took

"Three weeks in at roughly 20% focus — and only that fast because I reused prompts from an earlier ElevenLabs→Bubble build. Without that head start: one to two days planning, several days testing, several more optimizing."

— the builder. The kit is that head start.

honest limits — read before you buy

What you still have to bring.

  • Your own accounts and keys. Cloudflare (Pages + D1 + R2), a Google OAuth client, ElevenLabs with a voice budget, Gemini, Firecrawl + Apify, Postmark.
  • A content source for your domain. The runtime is the easy 80%; finding and shaping your feed's content is the 20% that's the actual work — and what the kit is about.
  • The kit is v1, with free updates. Every lesson is labeled so you always know what you're standing on.
  • One charting node — a headless PNG export — isn't built yet. It says so on the tin, marked would-do-differently.

every paid node is labeled

battle-tested

Shipped, and survived contact with production.

would-do-differently

An informed correction — the right way, honestly flagged as not-yet-built where it isn't.

get it

Free to start. The kit when you're serious.

Engine
Free
The open-source swipe engine, auth, bookmarks, the cache template, the gated token-mint pattern. MIT. No email wall.
Clone it ↗
Written teardown
Free
The narration-sync essay, the two-halves architecture, the token-mint reasoning, the method. Drop an email, get a link.
Email me the teardown
The Kit
$199 $299
founding price through Aug 1, 2026
The 25 gotchas, the prescriptions, the register scripts, the sourcing + cost playbooks, the tuned prompt (redacted), the charting set. Invite per buyer. Free updates.
On sale soon
Coaching
Talk
Stuck somewhere the docs can't reach? Book time and build it together.
Enquire
free · written teardown

Get the teardown by email

The narration-sync problem, the architecture, the method — the parts that aren't code. One email, one link, no spam.