Self-improving voice agents

sopops checks every call your voice agent makes, catches its mistakes, and drafts the fix to its instructions.

sop·ops is short for SOP operations: running your agents' standard operating procedures.

Try it yourself locally Paste this in a terminal

claude "Set up github.com/amanmibra/sopops on my machine with me, using its sopops-local-setup skill"
  1. Tony's Pizza · phone ordercall ended
    Caller

    Hi, can I get a large pepperoni for pickup?

    Agent

    Sure thing. Anything else with that?

    Caller

    Garlic knots. That's it.

    Agent

    Great, it'll be ready in 20 minutes. Bye!

    Hung up without reading the order back
    01Your voice agent makes a mistake
  2. Take-out order · steps to follow3 of 4 followed
    Ask pickup or deliveryfollowed
    Take each item and its sizefollowed
    Read the order back before closingmissed
    Give a pickup timefollowed
    Never quote a delivery fee before the addressdidn't apply
    02sopops catches it, checking the call against your steps
  3. Same mistake · needs a look37 calls

    Closes the call without reading the order back

    "Great, it'll be ready in 20 minutes. Bye!"

    "Perfect, see you soon."

    1Real mistake2Acceptable3SOP is wrong4Checker is wrong
    03It finds the same mistake on 36 other calls
  4. Take-out order · instructionssuggested fix
      ## Before you close+ Read the full order back and ask "Is that right?"  Give the pickup time.
    Happens on 18% of callsApprove fix
    04It drafts the fix. You approve it.

Customers find bad calls first

"They never confirmed my order and got it wrong."

Review · 3 days after the call

You find out from a complaint

sopops checks every call as soon as it ends, so you see the mistake before the review.

Before18%
After4%

You change the prompt and hope

sopops numbers every version of your instructions and shows the mistake rate for each.

60 calls checked · 7 mistakes · 2 kinds

Nobody can listen to every call

sopops checks all of them and groups the mistakes, so you read 2 groups, not 60 calls.

v15Read the order backtoday
v14Shorter greetingOct 12
v13Ask about allergiesOct 3

Your prompt lives in a text box

sopops keeps your instructions in versions you can review, roll back, and sync to GitHub.

How it works

Import your agents.

> Onboard this project's agents into sopops

Found 3 agents in agents/: pickup, delivery, catering

Sent their prompts to sopops for review

Tony's Pizza · imported3 agents
Take-out order5 steps
Delivery order6 steps
Allergy questions4 steps
Greeting and toneshared by all 3

Claude Code imports them from your repo, or you paste each prompt in. sopops turns them into steps, and you review everything before it's saved.

Connect them, so sopops serves the instructions and every call comes back.

from sopops.livekit import attach

ins = await attach(ctx, session)
await session.start(agent=Agent(instructions=ins.text))
sopops pickup agent connected, instructions v14
sopops call recorded: 4 turns, 0:41

Calls come back with no code on any platform: a webhook on ElevenLabs or Vapi, a project key and a webhook on LiveKit. On LiveKit, attach() also serves the instructions and records tool calls.

sopops checks every call against its steps.

Take-out order · steps to follow3 of 4 followed
Ask pickup or deliveryfollowed
Take each item and its sizefollowed
Read the order back before closingmissed
Give a pickup timefollowed
Never quote a delivery fee before the addressdidn't apply

If the caller hangs up early, the steps they skipped don't count against your agent.

Approve the fix, then see whether it worked.

Take-out order · instructionssuggested fix
  ## Before you close+ Read the full order back and ask "Is that right?"  Give the pickup time.
Happens on 18% of callsApprove fix
Read-back mistakes · by versionexample data

Version 15 added the read-back step. Calls without it fell from 18% to 4%.

Real mistake? Fix it.

sopops drafts a fix to your agent's instructions and tracks the mistake until it stops.

When sopops finds the same mistake on many calls, someone on your team says what it is, with one key. Try it: press 1 to 4.

Closes the call without reading the order back

Catch it before the caller hangs up

During the call, sopops follows each step. When your agent is about to skip one, sopops nudges it, and the caller never notices.

Coming soon to hosted sopops.

Tony's Pizza · live calllistening
  1. 0:31Caller

    Garlic knots. That's it.

  2. 0:39Nudge

    Read the order back before closing.

  3. 0:41Agent

    So that's a large pepperoni and garlic knots. Is that right?

  4. 0:45Caller

    Yep, perfect.

Platforms

sopops works with LiveKit , ElevenLabs and Vapi . Checking calls takes no code on any of them. To serve instructions from sopops, LiveKit needs one call, attach().

PlatformInstructionsChecking calls after they endChecking calls live
LiveKitOne line of codeAdd attach() where the agent starts a call.No codeAdd a project key and a webhook.No codesopops joins each call to listen.
ElevenLabsNo codesopops updates the agent when you publish.No codeAdd a post-call webhook.No codeLive phone calls on an Enterprise plan.
VapiNo codesopops updates the assistant when you publish.No codePoint the Server URL at sopops.No codeTurn on live updates in Vapi.

Another platform? Send calls through the API, or bring past calls in with sopops import.

How to connect your agent

Open source

For teams that run their own servers and model keys.

  • Instructions and procedures, in versions
  • Two-way sync with a GitHub repo
  • Every call checked, with your own model keys
  • Mistakes grouped, with suggested fixes
  • Mistake rates by version, procedure and agent
  • Team sign-in with email or GitHub

$0

Apache-2.0
Self-host

Hosted

For teams that want sopops run for them.

  • Everything in open source, run by us
  • Runtime enforcement during callsComing soon
  • Fine-tuned models for SOP capture, tracking and iteration, for higher accuracy and lower costs
  • An MCP server for your QA data
  • SSO, SCIM and audit export
  • Data retention controls
  • Model keys managed for you

Talk to us

Book a call

Start with
your prompt

Paste in the prompt your agent uses today, or let Claude Code import it from your repo. Your first calls are checked the same day.

Start sopops

git clone https://github.com/amanmibra/sopops
cd sopops && docker compose up --build

Runs on your own machine. Open it in your browser and setup walks you through the rest.

Read the quickstart