Files
palladium/studies/202602_TEI_Amazon_Connect/teicalc/anchor.py
Robert Helewka a420af230b Migrate Amazon Connect TEI study to the Mercury Notebook Pattern
studies/202602_AmazonConnect -> studies/202602_TEI_Amazon_Connect,
rebuilt as pattern Variant 4 (TEI composite reproduction):

- teicalc/ self-contained engine (stdlib-only): Forrester's tables as
  the never-edited verbatim anchor, NPV/ROI/payback + risk adjustment
  transplanted from core/calculations, ClientDrivers overlay (contacts/
  agents/fixed driver map, growth re-base, identity at composite scale),
  scenario stress with core-identical semantics
- one deliverable notebook (business_case.ipynb): widget-pair sidebar
  drivers, published-vs-overlay KPI columns, cash-flow/waterfall/scenario
  charts, verification gate, backstage JSON data appendix
- gate + tests reproduce the published totals within PDF rounding:
  NPV $78.7M / ROI 342% / payback <6 months (engine $78,713,492 /
  342.48% / 0.7 months); 27 study tests, headless nbconvert green,
  stage simulation leak-free, exports carry the appendix
- old Athena workflow (00_provision..04_export, config.py, seed_data.py)
  deleted; git history preserves it; root test fixture repointed to
  teicalc.anchor
- docs: study README rewritten; root README points new studies at
  template/MercuryNotebook; pattern doc stale ctm-token-calculator paths
  now cite studies/202607_CTM_GenesysCX; Variant 4 cites this study as
  its realized reference

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 14:29:46 -04:00

168 lines
6.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
The verbatim anchor — Forrester *Total Economic Impact™ Of Amazon Connect*
(February 2026, commissioned by AWS).
VERBATIM, do not edit. These are Forrester's published composite-organization
tables and financial summary, transplanted unchanged from the study PDF
(``docs/202602_TEI Report Amazon Connect.pdf``). Client personalization
lives in :mod:`teicalc.overlay`; scenario stress lives in
:mod:`teicalc.scenarios` — both deep-copy, neither mutates this record.
Rows keep Forrester's own year-index keys (``"1"``/``"2"``/``"3"``);
:mod:`teicalc.model` maps them to calendar years (20262028). Values are
*nominal* (pre-risk-adjustment); the risk factor is stored per row and
applied by the model (benefits ×(1rf), costs ×(1+rf), per the TEI
methodology).
"""
from __future__ import annotations
#: 3-year nominal benefit cashflows — 🟢 published.
BENEFITS_VERBATIM: list[dict] = [
{
"field_key": "ai_contact_resolution",
"table": "benefits",
"label": "AI-driven contact resolution efficiency",
"category": "Productivity",
"year_values": {"1": 13_911_040, "2": 23_932_480, "3": 37_797_760},
"risk_adjustment": 0.15,
"notes": (
"PDF Section At/Atr. Composite: 20M annual contacts, 30% YoY "
"growth, 75% calls, 10-min AHT with legacy. Connect drops AHT "
"12% Y1 and shifts traffic to chat/self-service. 80% "
"productivity recapture. Risk adj 15% (legacy performance, "
"implementation depth, integration scope, growth)."
),
},
{
"field_key": "ai_content_sentiment",
"table": "benefits",
"label": "AI-powered content and sentiment analysis savings",
"category": "Productivity",
"year_values": {"1": 4_586_620, "2": 5_358_412, "3": 6_291_680},
"risk_adjustment": 0.15,
"notes": (
"PDF Section Bt/Btr. Auto post-contact summaries reclaim ~60s "
"per call; QA scaled from 13% to 100%; supervisors freed from "
"manual review. Risk adj 15%."
),
},
{
"field_key": "ai_forecasting_supervision",
"table": "benefits",
"label": "AI-enabled forecasting, agent scheduling, and supervision",
"category": "Productivity",
"year_values": {"1": 6_651_680, "2": 9_133_760, "3": 12_391_712},
"risk_adjustment": 0.15,
"notes": (
"PDF Section Ct/Ctr. ML-WFM yields 5% agent FTE optimization "
"and supervisors managing 20% more agents (10→12). 80% "
"productivity recapture. Risk adj 15%."
),
},
{
"field_key": "data_driven_profit_lift",
"table": "benefits",
"label": "Data-driven profit lift with increased conversion",
"category": "Revenue",
"year_values": {"1": 1_200_000, "2": 1_560_000, "3": 2_028_000},
"risk_adjustment": 0.20,
"notes": (
"PDF Section Dt/Dtr. Composite revenue $10B Y1 (+30% YoY); "
"5% from outbound contact-center marketing; conversion lifts "
"from 10% to 12% (+20% relative); 12% operating margin. "
"Risk adj 20%."
),
},
{
"field_key": "legacy_solution_savings",
"table": "benefits",
"label": "Legacy solution cost savings",
"category": "Cost Savings",
"year_values": {"1": 6_177_600, "2": 8_030_880, "3": 10_440_144},
"risk_adjustment": 0.20,
"notes": (
"PDF Section Et/Etr. Avg legacy license $180/agent-month × "
"(agents+supervisors) × 12, plus 30% overhead for infra & "
"third-party tools. Risk adj 20%."
),
},
]
#: Costs include an ``initial`` (year-0, undiscounted) component for
#: implementation. Cost risk adjustments are applied *upward*. 🟢 published.
COSTS_VERBATIM: list[dict] = [
{
"field_key": "amazon_connect_usage",
"table": "costs",
"label": "Amazon Connect usage cost",
"category": "Subscription",
"initial": 0,
"year_values": {"1": 6_456_448, "2": 7_951_164, "3": 9_832_961},
"risk_adjustment": 0.05,
"notes": (
"PDF Section Ft/Ftr. Telephony $0.0106/min + Unlimited AI "
"$0.0380/min on minutes that reach an agent, plus chat at "
"$0.0100/message (10 messages/chat). Risk adj 5%."
),
},
{
"field_key": "implementation_migration",
"table": "costs",
"label": "Implementation and migration cost",
"category": "Implementation",
"initial": 1_087_500,
"year_values": {"1": 188_333, "2": 188_333, "3": 0},
"risk_adjustment": 0.10,
"notes": (
"PDF Section Gt/Gtr. 6-month initial migration: 5 internal "
"FTE @ $115k + $800k pro-services. Y1/Y2 M&A integrations: 2 "
"months × 2 FTE + $150k pro-services. Risk adj 10%."
),
},
{
"field_key": "ongoing_management",
"table": "costs",
"label": "Ongoing management",
"category": "Operations",
"initial": 0,
"year_values": {"1": 256_200, "2": 187_200, "3": 187_200},
"risk_adjustment": 0.15,
"notes": (
"PDF Section Ht/Htr. Y1: 5 IT/PM @ 30% × $115k + 5 business "
"users @ 30% × $55,800. Y2/Y3: 3 IT/PM @ 30% + 5 business "
"users @ 30%. Risk adj 15%."
),
},
]
#: Composite-organization drivers — 🟢 published (PDF "Composite Organization").
ASSUMPTIONS: dict = {
"agents_fte": 2_000,
"supervisors_fte": 200,
"annual_contacts_y1": 20_000_000,
"growth_rate": 0.30,
"call_share": 0.75,
"aht_legacy_minutes": 10,
"agent_salary": 45_760,
"supervisor_salary": 55_800,
"discount_rate": 0.10,
"analysis_years": 3,
}
#: The PDF's Financial Summary — the gate's reproduction target. 🟢 published.
#: The engine reproduces these to within Forrester's own table rounding
#: (benefits PV lands $223 low; costs PV $0.22 low).
PUBLISHED: dict = {
"benefits_pv": 101_696_791,
"costs_pv": 22_983_076,
"npv": 78_713_715,
"roi_pct": 342,
"payback_months_max": 6, # published as "<6 months"
"discount_rate": 0.10,
"analysis_years": 3,
}