Inspiration
In high school I uploaded YouTube videos almost every week. I would spend days scripting, filming and editing, hit publish, and then refresh the page over and over while the view count barely moved. I never knew why one video worked and another one died.
Years later, I keep seeing the same thing happen to creators and small companies on X. Founders write a launch post they are proud of, and it gets three likes. Indie creators burn hours on content that nobody sees. The feedback loop is brutal.
So we asked a simple question. What if you could test a campaign on your real audience first, read their reactions, and ship the version that actually hits? What if you could see the ripple before you post?
That question became Ripple.
What it does
Ripple turns a brand's real audience into a living test market.
- Twin the audience. Ripple pulls a brand's real followers. For each follower, an agent is built from their personality: who they follow, what they post, what they care about and what they scroll past. Each twin is a small, opinionated version of a real person.
- Map the audience. The twins are grouped into categories by what they actually talk about, so you can see your audience as a 3D map of communities instead of a single follower count.
- Generate the campaign. A research agent uses Exa to read the brand's latest launches and news. Our custom campaign agent writes two drafts in the brand's own voice. Grok Imagine creates the images, and the agent produces a custom demo video for each draft, voiced by ElevenLabs.
- Test it in the Lab. Both drafts go out to the twins. Every twin decides on how to respond to the campaign. Reposts spread to the reposters' own followers, who react too. Ripple picks a winner, shows engagement building over time, and writes real replies in the voices of the followers so you can read why a post landed.
- Ship it. Approve the winner and post it to your social media in one click.
Ripple is also an agent on Fetch.ai's Agentverse, so anyone can ask it from ASI:One to test two posts for a brand and get the winner back.
How we built it
Fetch.AI We used Fetch.ai to make Ripple’s whole workflow usable through a single agent conversation. The main @ripple agent is built with Fetch.ai’s uAgents framework and acts as the orchestrator, taking a user request and coordinating the 5 different agent specialists for audience analysis, company research, creative generation, and simulation. We connected it to Agentverse for discovery and mailbox communication, and implemented the Chat Protocol so the full experience works directly inside ASI:One. From there, a user can test posts against a brand’s synthetic audience, compare modeled reactions, generate campaigns, and get the winning version back without leaving the chat. The actual simulation state lives in SpacetimeDB, while Fetch.ai handles communication between the orchestrator and the specialist agents. Interactive Cards let users submit drafts, generate campaigns, launch tests, request videos, and approve a winner directly inside the conversation, while staying synced with the same campaign shown on our website. Finally, I integrated Fetch.ai’s Payment Protocol with a working testnet payment flow, where Ripple can request 0.1 test FET, verify the transfer on-chain for monetization.
SpacetimeDB is the backbone. Followers, twins, niches, campaign jobs, simulation runs and Lab results all live in one SpacetimeDB database. Server logic runs inside the database as transactional reducers, and the frontend subscribes to live updates, so the audience map, build progress and test results update the moment an agent finishes. Every worker (onboarding, twin builder, Lab simulator, creative agent, tweet writer and video renderer) claims jobs from SpacetimeDB and writes its results back. Claims are version locked, so an outdated worker can never pick up a job it would get wrong.
The Digital Twins are built with Claude Haiku from each follower's profile, recent posts and the accounts they follow. Each twin keeps its own interests, tone, hot buttons and blind spots.
The Lab scores every twin's reaction to each draft, then runs the simulation many times so a single lucky repost cannot decide the result. Results are projected from the twins to the brand's full audience. In its simplest form the projection is linear: Estimated real engagement:
Ê_real = E_sim × (F_brand / N_twins)
where E_sim is the simulated engagement, F_brand is the brand's follower count, and N_twins is the number of twins simulated.
The creative pipeline chains agents that check each other. Exa grounds every claim in a real source. The video agent writes a director's brief, ElevenLabs voices it through its timestamps endpoint, and those word timestamps drive every cut and on-screen word. The agent then writes the film as code, critiques its own frames, revises, and renders it.
The frontend is React and Vite with a real-time 3D audience map, a Lab view that renders both drafts as real posts, and a hidden ops page to control twins per brand, video length, voice and workers live.
Challenges we ran into
- Inflated numbers. Early runs produced repost counts no real post would ever get. We researched real engagement rates on X and backtested the simulation for higher accuracy.
- Timing video to voice. Getting every cut to land on a spoken word meant building the edit around ElevenLabs' word timestamps instead of laying audio on top of a finished video.
- Many agents, one source of truth. Coordinating six kinds of workers without race conditions pushed us to put job claims, versioning and pause controls directly inside SpacetimeDB.
What we learned
We learned that the hardest part of simulating people is not making them talk. It is making them disagree. A good twin needs blind spots as much as interests. We learned how much a real-time database changes the shape of an agent system, because when every agent reads and writes the same live state, the product feels alive without any extra plumbing. And we learned that a demo is only as convincing as its numbers, which pushed us to ground the simulation in real engagement data instead of guesses.
Most of all, we learned that the problem I felt as a high school YouTuber is still everywhere. Creators are not short on effort. They are short on feedback.
What's next
We want Ripple to twin every follower of any brand on any platform, from X to YouTube to Reddit, and to train and calibrate the Lab against more real post results so its predictions get sharper with every launch. The goal is simple. Nobody should have to post and pray again. Every creator should be able to see the ripple before they post.
Built With
- agentverse
- anthropic
- asi:one
- claude
- clerk
- codex
- elevenlabs
- fetch.ai
- ffmpeg
- figma
- grok-imagine
- openai
- pydantic
- python
- radix-ui
- react
- spacetimedb
- typescript
- uagents
- vercel
- vite
- x-api


Log in or sign up for Devpost to join the conversation.