revenue-recovery-agent

A deterministic, dry-run A2A agent that identifies recoverable subscription revenue and prepares respectful, policy-compliant recovery actions without autonomously charging, refunding, changing subscriptions, sending messages, or updating CRM.

Public skills

The Agent Card exposes exactly five typed skills:

  1. analyze_revenue_leakage — ingests authorized billing/subscription/usage/CRM/support snapshots or deterministic synthetic fixtures, reconciles records, classifies leakage, estimates recoverable amount and confidence intervals, and writes leakage.json.
  2. prioritize_accounts — prioritizes tokenized accounts by value, likelihood, customer risk, and policy blockers, and writes prioritized-accounts.json.
  3. propose_recovery — prepares remediation recommendations and respectful message drafts, each with immutable plan digest and explicit approval boundary, and writes recovery-plans.json.
  4. validate_recovery — validates plans against consent, suppression, jurisdiction, dispute, brand, and prohibited-action rules, and writes compliance-report.json.
  5. generate_campaign_pack — generates an approval-ready campaign pack and measurement plan, and writes campaign-pack.md plus measurement-plan.json.

Safety and policy boundary

  • dry_run=true is enforced by schema validation.
  • No LLM calls are made; caller LLM credentials are not required.
  • No external HTTP calls are made. Egress is denied by default.
  • Consumer integration setup fields are declared for future read-only adapters, but synthetic/provided snapshots are used by this implementation.
  • All customer identifiers are tokenized; outputs must not include emails, phone numbers, card data, bank details, or raw CRM notes.
  • Protected trait metadata keys are rejected.
  • Prompt-injection-like and SSRF-like values are rejected or reported as critical safety findings.
  • Any future external action must require I_APPROVE_THE_LISTED_STEPS:<immutable_plan_digest>; this version only prepares plans.

Outputs

The agent persists redacted artifacts under:

outputs/revenue-recovery/{run_id}/

The synthetic full workflow produces:

  • leakage.json
  • prioritized-accounts.json
  • recovery-plans.json
  • compliance-report.json
  • campaign-pack.md
  • measurement-plan.json

Individual skills write their own stage output; generate_campaign_pack runs the deterministic synthetic pipeline when intermediate inputs are not supplied and writes the campaign/measurement artifacts.

Example smoke payload

{
  "request": {
    "tenant_id": "tenant-acme",
    "use_synthetic_data": true,
    "policy": {"dry_run": true}
  }
}

Call it against analyze_revenue_leakage or provide the analogous request object to any of the five skills.

Tests

Focused tests cover:

  • Agent Card skill/schema contract
  • Reconciliation and duplicate-invoice double-count prevention
  • Suppression and dispute blockers
  • Confidence scoring bounds and intervals
  • Fairness/privacy rejection of protected trait and malicious inputs
  • SSRF-style endpoint blocking
  • Idempotent deterministic analysis
  • Synthetic campaign pack artifact generation
Description
agent revenue-recovery-agent
Readme 239 KiB
Languages
Python 100%