CARE: Grounded Recursive Self-Improvement for Production Customer-Service Agents
Organizations: AI and Data Team, Keeta, Meituan · University of Melbourne · Fudan University
Abstract
Recursive self-improvement (RSI) in production agents involves transforming accumulated experience into reliable model updates while adapting to evolving business policies. We present CARE (Customer-service Agent Retrospective and Evolve), a grounded RSI framework that operationalizes this process in customer service. Its goal is to replace a frontier proprietary incumbent with an in-house mid-sized model that continues learning after deployment. After a one-time cold start on governed production traces, the current model serves production traffic alongside the incumbent, and its own failures drive the next update. A 24/7 inspection process establishes failures through evidence-blinded, independently reviewed judgments. Attribution separates model errors from defects in Skills, tools, or the harness, routing component failures to repair. Model-attributable trajectories are truncated at the first erroneous decision and paired with verified repairs. On-policy self-distillation (OPSD) then updates the model using the same model as teacher, with the diagnosis and repair supplied as privileged information unavailable to the student. To support continued evolution as business requirements change, training mixes failures from different Skill/SOP versions, each judged against the policy in force when it occurred. Candidates run an executable simulation test compiled from the latest SOP and then frozen, followed by offline inspection of the resulting traces. Promotion requires a combined simulation-and-inspection score at least at parity with the deployed version, confirmation through an online comparison with the incumbent, and human approval.
Figures & tables
| Method | Updated component | Experience source | Grounding | Teacher | Contexts |
| STaR [ 10 ] | weights | own rationales | answer correctness | – | – |
| SPIN [ 11 ] | weights | own generations | human demonstrations | previous self | – |
| Self-Rewarding [ 12 ] | weights | own responses | self-judgment | self | – |
| Reflexion [ 13 ] | prompt / memory | own attempts | env. signal + self-reflection | – | – |
| Voyager [ 14 ] | skill library | own episodes | environment execution | – | – |
| DGM [ 15 ] | agent code | own code edits | benchmark evaluation | – | – |
| Cause | Evidence sought | Route |
| Model behavior | Same context and valid tools; the decision error is reproducible, including in situations that training covered poorly | Incremental task and attribution-guided OPSD |
| Skill/SOP or prompt | The policy or prompt itself is wrong, ambiguous, or inconsistent | Revise the Skill/SOP or prompt |
| Tool, harness, or router | Schema, dispatch, projection, or route mismatch | Runtime repair |
| Judge or inspection | Unsupported verdict or review disagreement | Recalibrate the evaluator; discard the label |
| Infrastructure | Timeout, missing artifact, failed write | Operational recovery; no quality label |
| View | Student input | Learning signal |
| SFT | imitate the reference repair | |
| DPO | prefer over | |
| OPSD | match a self-teacher that sees , on the student’s own sampled output |
| Role | May | May not |
| Scenario compiler | Fix the user situation, initial state, Skill/SOP version, branch, and oracle | Choose an action for the agent during the run |
| User simulator | Speak, confirm, or operate on what has been shown | Read or |
| System simulator | Hold , execute actions, advance virtual time | Infer a state change from the agent’s wording |
| Agent under test | Query, decide, reply, and act | Observe other than through query results, or see |
| Post-run assessment | Judge from and the recorded evidence | Steer any participant during the run |
| Link | Placed in | Example |
| Reachable state | System simulator, in | The order is recorded as delivered |
| Observable signal | Projections and | The order query returns delivered to the agent; the user learns it only when the agent says so or a card shows it |
| User reaction | User simulator, as a gated pair in | Once told that the order was delivered, the user states that nothing was received |
| Agent decision | Not given to the agent; checked by and | Whether the agent queries before answering, and how it then handles a disputed delivery |
| Post-run evidence | Assessment, from the trace and the state log | The query and its result, the agent’s statements, and any executed action with its state change |
| Offline | Online satisfaction | ||||
| Version | Period | Sim. acc. | Bad Case | Combined | |
| V0 | P1 (Jul 30–Aug 11) | 93.00 | 6.42 | 93.29 | |
| V1 | P2 (Aug 11–18) | 93.12 | 4.35 | 94.39 | |
| V2 | P3 (Aug 18–27) | 94.58 | 4.72 | 94.93 | |
| V3 | P4 (Aug 27–Sep 4) | 95.30 | 4.47 | 95.42 | |
| V4 | P5 (Sep 10–24) | 95.17 | 4.11 | 95.53 | |
| Model | Role | Sim. accuracy (%) | Bad Case rate (%) | Combined |
| GPT-5.4 | incumbent | 96.80 | 4.60 | 96.10 |
| GPT-6-Luna | reference | 91.60 | 5.55 | 93.03 |
| Gemini-3.5-Flash | reference | 94.30 | 6.44 | 93.93 |
| DeepSeek-V4-Flash | reference | 93.71 | 4.97 | 94.37 |
| Qwen3.8-27B | reference | 77.08 | 9.17 | 83.96 |
| Gemma-4-31B-IT | base, zero-shot | 79.00 | 5.59 | 86.71 |
| Reply latency | Cost per service order | ||||||
| Mean | P50 | P90 | P95 | 30% | 50% | 100% | |
| Reduction (%) | 18.4 | 27.7 | 28.0 | 28.9 | 21.7 | 35.8 | 70.5 |
| Objective | Learning signal | On-policy | Sim. acc. (%) | Bad Case (%) | |
| SFT | imitate | – | – | – | |
| DPO | prefer over | 15.1 | 1.88 | 56.61 | |
| OPSD (CARE) | match self-teacher given | ✓ | 94.1 | 1.97 | 96.07 |
| Config. | Direction | Tail | Floor | Sim. acc. (%) | Bad Case (%) | ||
| 1 | reverse, Eq. ( 30 ) | 128 | ✓ | – | 90.9 | 1.79 (10) | 94.56 |
| 2 | forward, Eq. ( 29 ) | 128 | – | ✓ | 93.0 | 2.87 (16) | 95.07 |
| 3 | forward, Eq. ( 29 ) | 128 | – | – | 94.1 | 2.50 (14) | 95.80 |
| 4 | forward, Eq. ( 29 ) | 32 | – | ✓ | 94.1 | 1.97 (11) | 96.07 |
Appendix figures & tables11 assets
Supplementary material from the paper’s appendix.
Appendix
| Revision | Transformation |
| D1 Baseline | Production incumbent trajectories, no human data |
| D2 Concat | Append complete human-support conversations |
| D3 Style | Filter, rewrite, and insert human turns |
| D4 Protect | Preserve business actions and metadata during insertion |
| D5 Rebalance | Adjust the region and scenario distribution |
| D6 EvalPatch | Target inspected failures while preserving structure |
| Verdict | Meaning | Effect |
| no_problem | No supported execution defect; the decision does not depend on missing runtime evidence | Admitted to allocation |
| problem | Visible evidence supports a specific execution defect | Quarantined |
| inconclusive | No defect found, but the decision depends on missing decisive runtime evidence | Quarantined separately |
| Item | Setting |
| Base model | Gemma-4-31B-IT |
| Objective | masked negative log-likelihood on assistant tokens (Eq. 17 ) |
| Maximum sequence length | 16,384 tokens |
| Epochs and steps | one epoch; 467 steps |
| Batch size | global batch 32; micro-batch 1 per GPU |
| Learning rate | peak ; warmup over 5% of steps (23 steps), then cosine decay |
| Tier | Purpose | Supported conclusion |
| Fixture smoke | Check assets, protocols, state transitions, and the offline loop with a substitute agent | Internal consistency of the environment |
| Live smoke | Exercise a small slice with the real model, routes, and tools | Integration evidence for that slice |
| Live end-to-end | Run the real chain on a frozen scenario set | Acceptance within the selected scope |
| Mode | Input and purpose | Boundary |
| Online continuous | Mature production sessions, for ongoing discovery | Persistent source, ranked pool, admitted queue |
| Custom online | A selected experiment, market, window, or user segment | Independent of the main online queue |
| Offline check | A frozen report or export with a fixed test set | Frozen cases and evidence view |
| Screening only | Fast candidate diagnosis | No deep analysis or publication |
| Technical check | Tool-call, log, and infrastructure anomalies | Technical signal only; no semantic verdict |
| Stage | Required artifact | Stop condition |
| Freeze | Source, case identities, evidence view | Identity or snapshot not fixed |
| Screen | Candidate score, evidence anchors, risk tier | Screening failure |
| Admit | Ranked pool and admitted queue | Capacity or strata unavailable |
| Deep analysis | Structured case record with claim ledger | Unsupported claims |
| Review | Independent verdict and correction history | Conflict, missing evidence, malformed output |
| Gate and audit | Terminal verdict, counts, denominator | Missing field, count mismatch, leakage |
| Case 1: expected behavior | Case 2: confirmed Bad Case | |
| Customer issue | Refund for an order cancelled because the courier was late | Charged, but the order was never confirmed |
| Retained window | 9 entries over 45 s | 15 entries over 5.5 min |
| Tool calls | 6: Skill load, context resolver | 8: Skill load, context resolver, order detail |
| Review | First review FAIL; reconciled; second review PASS as expected behavior, high confidence | First review PASS as confirmed Bad Case, high confidence |
| Gate and outcome | Upload not allowed; closed as no issue | Notification gate PASS; uploaded as a Bad Case |
| Inspection time | 26 min | 18.5 min |
| # | Speaker | Message (translated, condensed) | Action and tools |
| G01 | Agent | Welcome. Is your issue “When will I get my money back?” | Entry FAQ |
| G02–03 | User | No. / The Merchant A order. | |
| G04 | Agent | Do you mean an order from Merchant A? Please tell me the issue, e.g. a missing item, a wrong order, cold food, or a late delivery. | INTENT_GUIDE |
| G05–07 | User | I cancelled it and the money has not been returned. / The driver was late. / It has been over an hour and the money has not been returned. | |
| G08 | Agent | Since the order was cancelled because the driver was late, please confirm the order in the list and I will check its refund status. | Skill loaded; resolver returns no order ID; ORDER_CONFIRMATION |
| G09 | Card | Suggested order: Merchant B, delivered, 50.40 SAR, awaiting confirmation. |
| # | Speaker | Message (translated, condensed) | Action and tools |
| B01 | Agent | Welcome. Is your issue “Why did the payment fail?” | Entry FAQ |
| B02 | User | I placed an order; the money was taken, but the order was not confirmed. | |
| B03 | Agent | Please select the order you are asking about, and I will check its payment or refund status. | Skill loaded; resolver returns no order ID; ORDER_CONFIRMATION |
| B04 | Card | Suggested order: Merchant B, delivered, 34.68 SAR, awaiting confirmation. | |
| B05 | User | I ordered from Merchant A and you took the money. Why was the order not confirmed? | |
| B06 | Agent | I checked the Merchant B order: it was completed and delivered, and has no refund request. If this is not the right order, please give the order number. | Resolver returns the Merchant B order; order detail: completed on 29 July, no after-sale record; GUIDE |
| Axis | Question | Passing value |
| Disposition | Is the case repaired by the proposed decision? | repaired |
| Eligibility | May the pair be used for training at all? | eligible |
| Fault relation | Is the anchored output the model’s own fault? | model fault |
| Symptom | Is the inspected symptom corrected? | corrected |
| Boundary | Is the change confined to the anchored decision? | corrected |
| Policy | Does the repair follow the incident-time SOP? | compliant |
| Item | Setting |
| Student initialization | V4, the previous version; full-parameter update, vision tower trainable |
| Teacher | V4, frozen for the whole run, not a moving average; scores the student’s rollout token by token; targets detached and kept in FP32 |
| Privileged information | appended to the teacher’s system message; never in the student context |
| Training set | 280 repair tuples after micro-scenario capping (Section 6.3 ); 281 candidates, one excluded for exceeding four images per tuple |
| Objective | forward KL partial sum over the teacher’s top 32 tokens, floored at zero per token (Eq. 29 ); backpropagated directly; loss coefficient 1.0; mean over all generated tokens of the batch (Eq. 31 ) |
| Not used | task reward, policy gradient, tail cell, renormalization within the top- set, probability floor or smoothing, auxiliary SFT or DPO loss |
Recursive Self-Improvement
Recursive self-improvement studies AI systems that use feedback from their own work to modify and evaluate future versions.
See all 99 papers