← Real buildsFraisaCustomer care · case file

PRD_Agent-AOP-Faxpool

Works the shared fax/email order pool end to end: validates article codes and customers against the WinLine ERP, simulates the order, creates it after a human check, and files the original email to SharePoint — routing every exception to a named Outlook category. — 1,330 tasks (1,298 completed, 32 failed) in the 30 days to 2026-08-10; its companion PRD_Fraisa-Analytics-Agent logged 1,297 tasks (5 nodes, appends every outcome to Google Sheets)

In production80 nodes in the graph8 steps drawn
—
no measured bill on either rail
1
Intake from the fax/email pool; publish attachment URLs; set run variables
2
Categorize the email; route special cases to named colleagues' Outlook categories
3
Extract article codes; check prefixes in code
4
Extract buyer and order info; look up the customer in the WinLine ERP (custom API)
5
Validate each product against the ERP
6
Simulate the order; branch on errors, discontinued items, and orders over 10k EUR
7
Human check, then create the order in WinLine (CreateOrder V6)
8
File the order email to SharePoint as .eml; log every path to the analytics agent

Where the money goes, per run

Step typeCountRateSubtotal
Code / integration steps71$0.025$1.78
Model calls · standard tier6$0.1$0.6
Model calls · mid tier2$0.2$0.4
Document parses1$0.2$0.2
Rate-card estimate, standard tier$2.98

Full main graph at rate card: 71 code/integration x $0.025 = $1.775; 6 std x $0.10 = $0.60; 2 mid x $0.20 = $0.40; parse $0.20; total $2.98 ceiling. Costliest single lane (order created in WinLine): 36 nodes = 27 code ($0.675) + 6 std ($0.60) + 2 mid ($0.40) + parse ($0.20) = $1.88, plus exactly one fire-and-forget analytics companion run (5 nodes: 4 code/integration $0.10 + entry) ≈ $2.00–2.20 per created order at menu rates. Code/integration 71 = 25 Outlook tag + 22 TriggerAgent + 8 CodeExecutor + 4 WinLine custom-API (SearchCustomerDataNewV5, IsValidProductV5, SimulateOrderNewV5, CreateOrder V6) + CreateEml + SharePoint CreateFile + S3 + 9 rule-based conditions; std 6 = 5 Flash prompt nodes (article-code + buyer/order extractors, email categorizer, order-sim prep, loop) + 1 llm_based condition on GEMINI_25_FLASH_LITE; mid 2 = GEMINI_3_1_PRO on SystemVariableSetter1 and CreateOrder data mapping. No measured per-run figure exists (catalog cost_basis 'none'). The probe corroborates the 1:1 sidecar cost tail: 1,297 analytics tasks vs 1,330 faxpool tasks in the same 30 days.

Models seen in the graph: preferredModel: GEMINI_3_FLASH x66, GEMINI_3_1_PRO x3, GEMINI_25_PRO x1 (on the CreateEml code node, so not billed as a model call); conditions: 9 rule_based (llmModel GPT4_1_MINI x7, GEMINI_3_FLASH, GEMINI_3_1_PRO) + 1 llm_based on GEMINI_25_FLASH_LITE; fallbacks include GPT5, GPT5_2, GPT5_4, BEDROCK_CLAUDE_SONNET_4_5

Graph read: 04-agents/fraisa/prd-agent-aop-faxpool/agent.json (80 nodes) plus companion 04-agents/fraisa/prd-fraisa-analytics-agent/agent.json (5 nodes)

What a copycat build should know

  • The ERP is the judge, not the model: article validation (IsValidProductV5), customer lookup (SearchCustomerDataNewV5), order simulation (SimulateOrderNewV5) and creation (CreateOrder V6) are WinLine custom-API calls, and 8 CodeExecutor nodes do prefix checks and response transforms — only 8 of 80 nodes are AI prompts. A copycat should push validation into the client's ERP API the same way.
  • Sidecar analytics (fire-and-forget): 22 BeamSystemAction_TriggerAgent nodes — one per branch terminal — call the 5-node PRD_Fraisa-Analytics-Agent, which fetches task detail by task ID and appends every outcome to Google Sheets; payload is just the parent task ID, 0 outputs, onError CONTINUE (03-projects/beam-agent-design/01-topology-patterns/04-sidecar-analytics.md).
  • Human routing lives in the mailbox: 25 Outlook AddMessageCategory nodes route exceptions to named colleagues' categories; the workspace also holds a fleet of per-colleague clone agents (agent-aop-andrea/-kemal/-ursula/...) while the shared faxpool agent carries virtually all volume.
  • Guard branches break out before commitment: simulation errors, discontinued items, and orders over 10k EUR each divert to human categories before CreateOrder; the original order email is archived to SharePoint as a .eml built by CreateEml.

Lessons from the client record

  • Documented sidecar pitfall: firing the analytics agent 22 times is redundant — one call at entry would do, since the sidecar self-discovers context from the task ID; and onError CONTINUE is mandatory so analytics failure never kills the order flow (04-sidecar-analytics.md 'Pitfalls').
  • Build the pool, not the person: the faxpool agent logged 1,330 tasks/30d while the per-colleague clones sat near zero (Kemal 8, Ursula 0, Manuela 0 in the 14-day production table) — volume concentrates in the shared pool.
  • Highest failure count of the four case agents: 32 failed of 1,330 (2.4%) in 30 days — order simulation against a live ERP is where real-world runs break.
  • No measured per-run cost exists despite production volume — same fallback rule as Coolback: quote the menu module price plus the at-cost band, never an invented per-run figure.

What it is made of

Case creationProduct identificationAvailability and quantityMicrosoft OutlookWinLine ERP via custom APISharePointS3Google Sheets (via analytics agent)

04-agents/fraisa/prd-agent-aop-faxpool/agent.json · 04-agents/fraisa/prd-fraisa-analytics-agent/agent.json · 04-agents/_probe/task_ranking_2026-08-10.json · 03-projects/beam-agent-design/01-topology-patterns/04-sidecar-analytics.md · 03-projects/beam-agent-design/01-topology-patterns/05-state-machine-tags.md · 03-projects/alloyed-cx/04-outputs/production-cx-table-zh.md · /Users/zhichaoli/Documents/GitHub/solution-intelligence/content/agent-catalog.json