Skip to content

Repository files navigation

Loop AI

Loop AI turns customer feedback into voice conversations run by an AI interviewer, and turns those conversations into insight you can actually act on.

This is a Le Wagon coding bootcamp final project.

The idea

Getting real feedback from users is slow and expensive: scheduling calls, taking notes, re-reading transcripts, and trying to spot patterns across dozens of conversations. Loop AI automates the whole cycle:

  1. You describe what you want to learn and write a handful of questions — a Loop.
  2. Loop AI provisions a voice AI agent for it and gives you a shareable link.
  3. Respondents click the link and have a real spoken conversation with the agent — no scheduling, no forms.
  4. When the call ends, the transcript comes back automatically, gets scored for sentiment, and is queued for analysis.
  5. An AI pipeline reads every transcript in the loop and rolls them up into themes, feature requests, and a summary — each backed by a verbatim quote and a link to the interview it came from.

How it works

  • Loops (Loop) belong to an Organization (a workspace — every account gets one, and can invite teammates into it). Each loop has ordered questions and a goal description.
  • Activating a loop provisions a real conversational voice agent via the ElevenLabs Conversational AI API, built from the loop's questions and goal.
  • Respondents talk to that agent through the browser (no app, no login) at a shareable /i/:slug link.
  • When a conversation ends, ElevenLabs POSTs the finished transcript back to Loop AI via a signed webhook. It's recorded as a Feedback, along with a per-conversation sentiment score and the AI's stated reasoning for it.
  • A two-stage OpenAI pipeline then turns raw transcripts into structured insight:
    • Stage 1 extracts themes and feature requests (with verbatim quotes) from each individual transcript.
    • Stage 2 clusters those extractions across every response in a loop into one loop-level Insight — an overall sentiment, a narrative summary, and quote-backed themes and feature requests you can browse and click through to the source interview.
  • An Analyze dashboard shows all of this: response volume over time, sentiment, and the generated insight, per loop or across your whole organization.

Tech stack

  • Ruby on Rails 8.1 / PostgreSQL
  • Solid Queue / Solid Cache / Solid Cable for background jobs, caching, and websockets — all database-backed, no Redis
  • ElevenLabs Conversational AI for the voice-interview agent and its post-call webhook
  • OpenAI (structured outputs) for the two-stage feedback-analysis pipeline
  • Devise for authentication (with email confirmation)
  • Turbo + Stimulus + importmap-rails on the frontend (no Node build step), styled with Bootstrap 5.3 + custom SCSS
  • Deployed on Heroku, file uploads on S3, transactional email via Postmark

Getting started

bin/setup                 # install dependencies, prepare the database
bin/dev                   # start the dev server

You'll need a .env file with at least:

ELEVENLABS_API_KEY=
ELEVENLABS_WEBHOOK_SECRET=
OPENAI_API_KEY=

(POSTMARK_API_TOKEN and AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY are only required in production, for email and file uploads respectively.)

Since ElevenLabs can't reach localhost, testing the full respondent → webhook round trip locally requires tunneling your dev server (e.g. with ngrok) — see CLAUDE.md for the details.

Testing

bin/rails test            # unit + integration tests
bin/rails test:system     # browser-driven system tests
bin/ci                    # the full CI pipeline: lint, security audit, tests

More detail

See CLAUDE.md for an in-depth architecture guide, and docs/ for design specs behind individual features.

About

Loop AI turns customer feedback into voice conversations run by an AI interviewer, and turns those conversations into insight you can actually act on.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages