Tier 2 platform — autonomous agent-reasoning layer
Tier 2 agents run as Lambda functions triggered by EventBridge Scheduler (daily, per-VIN or per-fleet), EventBridge event rules (DMS repair-order status, warranty verdict change, recall publication, ADP prediction arrival), or an Amazon SQS queue (a product engineer’s investigation request). Each agent reads the data platform at source, reasons with Claude Sonnet 4.6, and writes a Finding to DynamoDB. Tier 1 tools read those Findings in a single DynamoDB call.
Why Tier 2 is necessary
A voice-session tool call has a ~1 second budget (Nova Sonic’s post-tool TTS window). Querying vehicle health history, running statistical analysis, and composing narration exceeds that budget by orders of magnitude. Tier 2 moves that work outside the conversation: scheduled, with full history, producing a result that Tier 1 reads fast.
Example: "How is my battery?"
-
Tier 2 agent (overnight): reads 6 months of battery state-of-health data from the ADP
battery_sohproduct, fits a degradation curve, and compares the result to the vehicle’s tenure and to similar vehicles. Writes a Finding:computed_at: 2026-07-14T02:15:00Z,confidence: high,headline: "Battery health is within normal range for this vehicle’s age and usage",evidence: [{kind: "soh_trend", value: "99%_after_6mo"}],tokens_used: 8750. -
Tier 1 agent (during a voice turn, <1 sec): reads that Finding from DynamoDB in ~15 ms. Narrates: "Your battery is in good shape — 99% health after six months." Surfaces
computed_at: "We ran this check last night at 2 AM." No re-computation.
Platform substrate
The agent registry is pluggable. Each agent module provides:
-
A system prompt scoped to the agent’s goal
-
The Finding kinds it is permitted to write (enforced at write time)
-
A read stack — cross-account Athena queries against ADP curated products, DMS tables, or both
-
A Strands agent factory (
make_strands_agent_fn)
The runner, Finding table, artifact contract, executor dispatch, broker, and observability stack are shared across all agents. To add an agent, register a module; no changes to the substrate are required.
Tier 2 reads the data platform at source — cross-account Athena on ADP curated products and DMS tables. It does not read AgentCore Memory; Tier 2 runs have no session context.
Triggers
| Trigger | When used |
|---|---|
|
EventBridge Scheduler (daily, per-VIN) |
Battery SoH trend, tire health sweep, charging plan, household equity check |
|
EventBridge event rule: |
Warranty verdict narration, coverage check after service completion |
|
EventBridge event rule: ADP prediction arrival |
Tire or brake alert — immediate response to a new prediction |
|
EventBridge event rule: recall publication |
Coverage check for a new open recall |
|
EventBridge event rule: finance milestone or tenure threshold |
Household concierge position update |
|
EventBridge Scheduler (daily, Fleet Intelligence) |
Cost at 04:00 UTC, recall at 05:00, warranty at 05:20, fleet health at 05:40, rebalancing at 06:00. Each runs after the ADP jobs it reads and after the nightly vehicle health runs (02:00–02:40). See Fleet Intelligence agents. |
|
Amazon SQS queue: engineer investigation request |
Fleet-quality investigation of a fault pattern, started from the Connected Services portal |
Operational controls
| Parameter | Configuration |
|---|---|
|
LLM |
Claude Sonnet 4.6 ( |
|
Per-run cost cap |
SSM |
|
Dry-run mode |
|
|
Decision replay |
Every run stores inputs and reasoning trace in |
|
Alarms |
CloudWatch alarms on Lambda |
|
Run records |
Every run writes a record to |
Run an agent in pull-only mode first — Finding + Tier 1 read tool — and validate reasoning on real data before enabling proactive delivery.
Finding data model
Findings are stored in vsa-{stage}-avx-findings. See Cross-surface Actions framework for the canonical schema. Each Finding carries:
| Field group | Fields |
|---|---|
|
Identity |
|
|
Provenance |
|
|
Classification |
|
|
Scope |
Exactly one of: |
|
Content |
|
|
Disclosure |
|
|
Audit |
|
Idempotency: inputs_hash is a SHA-256 of the canonicalized inputs (VIN, component_id, data snapshot_date, agent_version). On re-run, the agent issues conditional PutItem. If a Finding with the same hash exists within the TTL window, the run writes nothing. This prevents duplicate notifications and duplicate audit-trail entries.