TempoFlow — a content feed that funds itself

Your attention to ads pays for your creator feed.

Inspiration

Every time you watch something online, someone pays. With a subscription, you pay. With ads, your attention pays — but you never see to whom, or how much. An opaque middleman sits between viewers, creators, and advertisers, and nobody can see how the money is split: creators don't know why they get 55% instead of 70%, advertisers don't know what their budget actually bought, and viewers know nothing at all.

We wanted to open that box. The Machine Payments Protocol on Tempo gave us the one primitive that makes it possible: streaming value in tiny units and settling or refunding it trustlessly, thousands of times per second. So we asked a simple question — what if money could flow in both directions, in real time, and every cent were on-chain?

What it does

TempoFlow is a YouTube/Twitch-style feed where money flows live:

  • Watch a creator → money flows out, to that creator, per second of watchtime. No subscription. Scroll away and it stops instantly, with the unused deposit refunded.
  • Watch an ad → money flows in, from the advertiser to you, per second — but only for proven attention.

The reversal is the point: the attention you spend on ads finances the creators you watch. Your net balance hovers around zero. You watch 20 minutes of content, and it costs you nothing.

A background agent runs the whole thing autonomously. It reads your spend (watching) against your earnings (ads) in real time, keeps your balance near zero, and times ads to the moments that balance it out. No human triggers any of these payments — they're autonomous agents settling a live market for attention.

We also pushed the same per-second primitive into other surfaces: a second-price (Vickrey) attention auction where advertisers bid and you're paid the second-highest price; live tip boosts; pay-per-token creator AI (real streamed model output, billed per token); escrowed crowdfund goals that auto-refund if a goal isn't met; and live streaming with a shared per-second audience meter.

Proving attention — the hard part

"Ads pay you" only works if you can't get paid for ignoring the ad. A naive heartbeat just proves a timer is running — you could leave it in a background tab, or skip the browser and curl the heartbeat in a loop. So payment is gated on a three-layer proof:

  1. Passive signals — a heartbeat counts only while the tab is visible and the player is on-screen. Kills background-tab and scrolled-away cheats.
  2. Random tap challenge — at unpredictable moments a token appears at a random on-screen position; tap it in time or earning pauses. This forces eyes on the screen.
  3. Session binding — every heartbeat carries a per-session token; a sessionless script mints exactly zero.

We're honest about the boundary: this is demo-grade, not Sybil-proof — the passive signals are client-reported. But it's far more verifiable attention than the entire ad system offers today, and it makes scripted abuse genuinely expensive.

Why only on Tempo

The core load is thousands of sub-cent payments per second, to many recipients, with instant settlement and refund of unused deposit. On Ethereum L1 or Solana the transaction fee alone would dwarf a \($0.002\)/second micro-payment. TempoFlow streams off-chain vouchers over Tempo payment channels and settles on-chain only at the end — the only substrate where pay-per-second-of-attention is economically real.

How we built it

A pnpm-workspace TypeScript monorepo:

  • server/ — Hono + mppx, exposing /watch (Viewer→Creator), /attention (Advertiser→Viewer), and a valid /openapi.json for MPP discovery.
  • web/ — Vite + React: the feed, attention heartbeats, the real-time money-flow UI, and receipts linked to the Tempo block explorer.
  • agent/ — headless autonomous agents (a net-aware curator and a budgeted advertiser) with spend controls that settle on-chain.
  • shared/ — types, chain/currency constants, and wallet helpers.

Every account is a real Tempo testnet wallet; fund, payout, and refund are all real on-chain transactions. Testnet only — never real funds.

Challenges we ran into

  • Defining "attention" without a deadlock. Requiring the ad to be playing before paying would deadlock, because the ad only starts after payment begins to flow — so "playing" is advisory, and the gating leans on visibility + the tap challenge instead.
  • Honest anti-fraud. It was tempting to claim bot-proof attention; we deliberately scoped it as demo-grade and made the layers stack so each closes a specific cheat.
  • Keeping micro-payments economic. Settling every heartbeat on-chain would be slow and expensive, so payments stream as off-chain vouchers and settle once at the end.
  • Demo resilience. We built a reset flow, seed/demo mode, and network fallbacks, and made the app report the exact failing step instead of a generic error.

What we learned

The most convincing thing about putting payments on-chain isn't speed — it's trust through transparency. Once every flow is visible (what the viewer pays, the creator earns, the platform takes, the advertiser spends and gets refunded), the value proposition explains itself. We also learned that calibrated honesty about limitations makes a system more credible, not less.

What's next

Hardening attention proof toward real Sybil-resistance, opening the advertiser auction to more bidders, and letting creators bring their own AI personas. The escrow + refund primitive generalizes to almost any per-use surface — that's the direction.


Built for the MPP Hackathon (Tempo), 16–20 June 2026. Testnet only — never real funds.

What's next for TempoFlow

Built With

Share this project:

Updates