Customer escalation to recovery
Sales as Code shows a kept promise on the deal, switching on with the customer join. Three parts to go.
Use case
Customer escalation to recovery: a workflow across CommitOps, RepoOps, PromptCompute, Sales as Code that starts from a customer message that names a promise, or a broken-promise case in CommitOps.
Who would use it
Engineering leads and customer teams when a customer reports that something they were promised broke.
What value it provides
One case runs from the complaint to the kept promise. The fix and the customer notice go to a person together, recovery is measured, and the deal shows the result.
Why it matters to the user
A customer judges you on how fast you recover and whether you told them. This makes both visible, with proof the account team can show.
The problem
Support sees the complaint, engineering sees the error and sales sees the deal. Nobody sees all three, so the fix ships and the customer hears about it last.
Expected outcomes
- Hours from customer report to verified recovery
- Promises at risk that end kept
- Customer notices sent before the fix was verified: target 0
Each run records its outcome as met, not met or not measured.
How it runs
Products and connections
| Product | Role in this workflow | Docs |
|---|---|---|
| CommitOps | Open a case from the customer message and match it to a promise; Mark the promise kept or broken | Reference · CommitOps docs |
| RepoOps | Trace the error to its likely change and agent session; Propose the fix; Measure recovery after the fix deploys | Reference · RepoOps docs |
| PromptCompute | One approval for the fix and the customer notice together | Reference · PromptCompute docs |
| Sales as Code | Show the kept promise on the deal | Reference · Sales as Code docs |
Outside the family: Slack or your support inbox, GitHub, HubSpot, Salesforce or Attio.
What a person approves
| Action | Default risk |
|---|---|
repoops.build_fix | medium |
commitops.customer.notify | high |
crm.deal.update | medium |
Action keys are from the PromptCompute catalog.
How to access it from an agent
An agent will run this workflow through the PromptReports MCP server or API, with an ID agent token. The runner will then call each product for it. Proposed
// MCP: https://mcp.promptreports.ai/mcp (Proposed)
start_run({
workflow: "escalation-to-recovery",
inputs: { "customer": "Acme Freight", "report_source": "Slack #acme-support", "promise": "C-1182 (optional, found if blank)" },
dry_run: false
})
// returns { run_id, status: "running", approvals_url }
get_run({ run_id }) // poll, or subscribe to run eventscurl -X POST https://api.promptreports.ai/v1/runs \
-H "Authorization: Bearer $PROMPTREPORTS_AGENT_TOKEN" \
-d '{"workflow":"escalation-to-recovery"}'Or call the products yourself, step by step:
| Product | Endpoint | Tools |
|---|---|---|
| CommitOps | https://commitops.ai/api/mcp | whoami list_assertions get_assertion promised_not_started |
| RepoOps | https://mcp.repoops.ai/mcp | search_brain get_pre_edit_context propose_brain_entry get_incident_attribution |
| PromptCompute | https://mcp.promptcompute.ai/mcp | request_approval get_approval cancel_approval answer_approver |
| Sales as Code | To confirm | to confirm |
Set it up
- Sign in at app.promptreports.ai with PromptReports ID, and pick your org.
- Connect CommitOps, RepoOps, PromptCompute, Sales as Code on the Connections page. Link Slack or your support inbox, GitHub, HubSpot, Salesforce or Attio through the product that uses it.
- Register the agent that will run it on the Agents page, and give it a version manifest.
- Set the approval policy for repoops.build_fix, commitops.customer.notify, crm.deal.update. Start with Require approval; critical actions are never auto.
- Fill in the inputs (Customer, Report source, Promise) and choose the trigger: a customer message that names a promise, or a broken-promise case in CommitOps.
- Start a dry run. It will count no workflow request, and it shows which steps would record missing evidence.
- Start the run. Approve each gate in the approvals inbox, then read the signed record when it ends.