← Real buildsUNiDAYSCustomer care · case file

PRD_OpsCaseHandler

Turns an account manager's email into a correctly-formed Salesforce case: extracts the fields, verifies the contact and partner account, asks back only for what is missing, creates the case with attachments, and confirms with the case link. — 3 tasks (3 completed) in the 30 days to 2026-08-10; 0 tasks in the 14 days to 2026-07-13 — production wiring live but near-idle

In production43 nodes in the graph6 steps drawn
—
no measured bill on either rail
1
Intake the ADM's email; pull stored thread context from Airtable
2
Extract case fields; look up the contact and related accounts in Salesforce
3
Check completeness of required case fields; reply asking only for what is missing
4
Determine the relevant partner account
5
Create the case in Salesforce and attach files
6
Generate the case URL, confirm to the ADM by email, and log every step to Airtable

Where the money goes, per run

Step typeCountRateSubtotal
Code / integration steps29$0.025$0.725
Model calls · standard tier5$0.1$0.5
Model calls · mid tier8$0.2$1.6
Document parses1$0.2$0.2
Rate-card estimate, standard tier$3.03

Full graph at rate card: 29 code/integration x $0.025 = $0.725; 5 std x $0.10 = $0.50; 8 mid x $0.20 = $1.60; parse $0.20; total $3.03 ceiling. Costliest single lane: 19 nodes = 10 code ($0.25) + 4 std ($0.40) + 4 mid ($0.80) + parse ($0.20) = $1.65 — only one of the four duplicated Sonnet completeness checkers fires on any run. Code/integration 29 = 26 tool nodes (9 Gmail reply, 6 Airtable RecordCreate, 1 Airtable GetRecords, 2 S3, 8 Salesforce actions) + 3 rule_based conditions; std 5 = BeamTaskURLGenerator on GPT40 + 4 llm_based conditions on GPT4_1_MINI; mid 8 = every heavy prompt node on BEDROCK_CLAUDE_SONNET_4_5 (case-info extractor, 4x completeness checker, account-relevance determiner, 2x case-URL generator) — Sonnet-as-mid is INFERRED by analogy to the rate table's 'GPT-5 / Gemini 2.5 Pro = mid' examples, lower confidence. No measured per-run figure exists (catalog cost_basis 'none'); menu-price fallback applies. Note the structural inefficiency: mid-tier prompts generating URLs — work Wünsche does in $0.025 code nodes — puts ~$1.60 of the $3.03 ceiling on Sonnet.

Models seen in the graph: preferredModel: GEMINI_3_FLASH x26 (integration nodes), BEDROCK_CLAUDE_SONNET_4_5 x8 (all substantive prompt nodes), GPT40 x1; conditions: 4 llm_based + 3 rule_based, all with llmModel GPT4_1_MINI

Graph read: 04-agents/unidays-workspace/ops-case-handler-live-prod/agent.json (43 nodes, graph 64de5093, nodes edited to 2026-04-30 — the newest graph; the 64-node agent.new.json is an OLDER draft graph 1aee2d88, do not use it)

What a copycat build should know

  • Salesforce three-hop identity resolution: search contact by ADM email, search account type with relation, search related accounts — then a Sonnet 'AccountRelevanceDeterminer' picks the partner account where record type is Partner. The lookup chain is integrations; only the final judgment is a model.
  • Zero CodeExecutor nodes — even Salesforce case-URL and Beam task-URL generation are prompt nodes; the 27-cx overview contrasts this 0 with Wünsche's 10 on the same line ('an order of magnitude apart in determinism') — a copycat should move that work into code.
  • The completeness-check prompt (required fields varying by Production Ops Type — Perk Changes vs Misc Changes, End Date only required when Perk Type = Boost, NA-normalization) exists as FOUR verbatim Sonnet copies in one graph, one per branch — the overview calls it 'a config file waiting to be extracted'.
  • Ask-only-for-what's-missing chasing: 9 GmailAction_ReplyEmail variants cover missing-info, wrong-contact, contact-not-found and confirmation cases; Airtable doubles as thread-context store (GetRecords by thread ID on intake) and per-step audit log (6 RecordCreate).

Lessons from the client record

  • Production wiring live but near-idle: 3 tasks (3 completed) in 30 days to 2026-08-10, 0 in the prior 14-day window — usable as a case-creation pattern proof for Salesforce, never as volume evidence.
  • Duplicated prompts drift: four verbatim completeness checkers mean four places to update a rule like 'End Date only required when Perk Type = Boost' — extract shared judgment prompts into one reusable config before cloning branches.
  • Copy Wünsche's determinism discipline, not this graph's: on the same CX line the two deepest builds differ by 10-vs-0 deterministic code nodes (27-cx overview) — deterministic URL/payload work belongs in $0.025 code nodes, not $0.20 Sonnet calls.
  • Snapshot traps in this folder: the '.new' file is an older, larger draft graph (64 nodes) — node counts must come from agent.json (43), which matches the catalog.

Reusable fragments cut from this agent

  • cxUNiDAYS OpsCaseHandler(生产) · 提示词03-projects/27-cx/02-resources/run-steps/02-identity-认人与取上下文.md#1
  • cxUNiDAYS OpsCaseHandler(生产) · 提示词03-projects/27-cx/02-resources/run-steps/02-identity-认人与取上下文.md#2
  • cxUNiDAYS OpsCaseHandler(生产) · 提示词03-projects/27-cx/02-resources/run-steps/02-identity-认人与取上下文.md#3
  • cxUNiDAYS OpsCaseHandler(生产) · 提示词03-projects/27-cx/02-resources/run-steps/02-identity-认人与取上下文.md#4
  • cxUNiDAYS OpsCaseHandler(生产) · 提示词03-projects/27-cx/02-resources/run-steps/02-identity-认人与取上下文.md#5
  • cxUNiDAYS OpsCaseHandler(生产) · 提示词03-projects/27-cx/02-resources/run-steps/03-classify-定类与抽取.md#3
  • cxUNiDAYS OpsCaseHandler(生产) · 提示词03-projects/27-cx/02-resources/run-steps/08-commit-写回与打标.md#3
  • cxUNiDAYS OpsCaseHandler(生产) · 提示词03-projects/27-cx/02-resources/run-steps/08-commit-写回与打标.md#4
  • cxUNiDAYS OpsCaseHandler(生产) · 提示词03-projects/27-cx/02-resources/run-steps/08-commit-写回与打标.md#5
  • media1. Extract all case information from ADM’s email Normalize any variation of “not available” (e.g., NA, N/A, n/a, na, n.a., none, not available, not applicable) to exactly NA in uppercase. For validated picklist fields, return an empty string "" instead of NA.03-projects/25-media/02-resources/module-library/01-收集文件.md#3
  • mediaDetermine Relevant Related Account Where Record Type Is Partner03-projects/25-media/02-resources/module-library/03-判断名称.md#4
  • media1 Check For Missing Information Related To Ops Case Creation Required fields if "Production Ops Type" is "Perk Changes" are: Contact Email, Requested By, Go-Live Date, Perk Type, Region, Member Target Conditional requirement for Perk Changes: - End Date is ONLY required when Perk Type = "Boost" - If Perk Type is "Additional", "Persistent", or "Hidden", End Date is optional Required fields if "Production Ops Type" is "Misc Changes" are: Contact Email, Requested By & Region T&Cs and URL are optional fields - do not flag as missing. Any extracted value from OpsCaseFields which is "NA" is to be considered complete if not marked as a mandatory field.03-projects/25-media/02-resources/module-library/05-检查规则.md#6
  • media2 Check For Missing Information Related To Ops Case Creation Required fields if "Production Ops Type" is "Perk Changes" are: Contact Email, Requested By, Go-Live Date, Perk Type, Region, Member Target Conditional requirement for Perk Changes: - End Date is ONLY required when Perk Type = "Boost" - If Perk Type is "Additional", "Persistent", or "Hidden", End Date is optional Required fields if "Production Ops Type" is "Misc Changes" are: Contact Email, Requested By & Region T&Cs and URL are optional fields - do not flag as missing. Any extracted value from OpsCaseFields which is "NA" is to be considered complete if not marked as a mandatory field.03-projects/25-media/02-resources/module-library/08-待办与确认.md#3

What it is made of

Case creationMissing-information chasingSalesforceGmailAirtableS3

04-agents/unidays-workspace/ops-case-handler-live-prod/agent.json · 04-agents/unidays-workspace/ops-case-handler-live-prod/README.md · 04-agents/_probe/task_ranking_2026-08-10.json · 03-projects/27-cx/01-planning/overview.md · 03-projects/alloyed-cx/04-outputs/production-cx-table-zh.md · 03-projects/25-media/02-resources/module-library/05-检查规则.md · /Users/zhichaoli/Documents/GitHub/solution-intelligence/content/agent-catalog.json