Inspiration

We code at the speed of thought. We learn at the speed of a snail.

In the era of "Vibe Coding," tools like Cursor and Daytona allow us to ship features instantly. But the moment we push code, we hit a massive bottleneck: Validation.

To know if a feature actually works, we have to wait for Product Managers to schedule interviews, wait for users to show up, and wait for results. This cycle takes 14 days. For high-velocity teams shipping daily, this latency is unacceptable.

We asked: What if we could simply delete the waiting time? What if your Preview Environment could literally talk to the user, watch them struggle, and report back instantly?

That's why we built Loop. It replaces the 2-week research sprint with a 5-minute automated session.

What it does

Loop is an Autonomous User Research Agent that lives inside your deploy previews. It turns every PR into a moderated usability test, instantly.

It Observes (The Eyes): Loop tracks user interactions in real-time. It detects "Velocity Killers" like rage clicks, dead ends, and idle confusion.

It Intervenes (The Voice): Instead of letting a user fail in silence, Loop activates an AI Voice Agent (powered by ElevenLabs). It interrupts immediately: "I see you clicked 'Security'. Were you expecting the API Keys to be in there?"

It Accelerates (The Output): It aggregates the voice feedback and interaction data into a "Velocity Report" for the developer, delivering actionable insights minutes after the code is deployed.

How we built it

We built Loop for extreme low latency, split into two distinct environments using Daytona.

The Environment (Daytona): We utilized Daytona to spin up ephemeral "Preview Containers" instantly. This allowed us to deploy A/B tests and get feedback on them in parallel, drastically reducing iteration time.

The Frontend (Next.js): We built a custom React Hook (useUserStruggle) that acts as a real-time sensor, streaming DOM events and audio without slowing down the app.

The Backend (FastAPI + WebSockets): Speed was our priority, so we skipped REST. A single WebSocket connection handles the bidirectional stream of Audio (Voice) and JSON (Click Events) to ensure the AI reacts faster than a human could.

The AI Pipeline:

  • STT: Deepgram for converting user speech to text in milliseconds.
  • Intelligence: OpenAI (GPT-4o) acts as the "Researcher," injected with context about the specific UI elements.
  • TTS: ElevenLabs (Turbo v2.5) brings the agent to life. We chose the Turbo model specifically to minimize the "turn-taking" latency, making the feedback session feel natural and fast.

Challenges we ran into

The "Polite Interruption" Problem: Teaching the AI when to speak was hard. Early versions would talk over the user, slowing them down. We solved this by building a "Priority Interrupt" system in Python that kills the audio stream immediately if a "Rage Click" is detected, ensuring the feedback loop stays tight.

State Synchronization: Keeping the AI aware of the visual context required us to send a constant stream of "Context Packets" alongside the audio data, ensuring the AI didn't waste time asking irrelevant questions.

Accomplishments that we're proud of

The "Time Collapse": We successfully demonstrated a workflow where a feature is pushed, tested, and validated in under 5 minutes.

The "Nebula" Demo: We built a intentionally "bad" Cloud Dashboard to trap users. Seeing the AI successfully catch a user going down the wrong path and redirecting them instantly felt like magic.

Seamless Integration: The fact that this runs as a simple overlay means developers don't have to change their workflow—they just get feedback faster.

What's next for Loop

Computer Vision: Integrating OpenAI Vision to let the agent "see" the screen, reducing the need for manual event tagging.

Automated Jira Tickets: Automatically converting verbal feedback into formatted issues, further reducing the administrative overhead for PMs.

Sentiment Heatmaps: Visualizing exactly where on the screen users hesitated, allowing for instant UI fixes.

Built With

  • daytona
  • elevenlabs
  • fastapi
  • next.js
  • openai
  • python
  • react
  • websockets

Built With

Share this project:

Updates