9. Estrutura
Product Structure & Features — Agent-to-Agent Commerce Platform
Source inputs:
agent-to-agent-commerce-platform-discovery-report.md
agent-to-agent-commerce-platform-competitive-analysis.md
agent-to-agent-commerce-platform-rice-prioritization.md
ux-research-report.md
Purpose: translate the discovery wedge and UX structure into concrete frontend flows, screens, APIs, and acceptance-test-style stories.
1. Happy Flow
Primary path referenced: AI Platform Iris configuring a controlled first transaction.
- User lands on the marketing site and clicks
Request Demo or Start Sandbox.
- User creates an organization workspace and selects a starting mode:
Buyer, Seller, or Dual.
- User registers the first agent in the Agent Registry and associates an owner/team.
- User configures a Budget Policy and Approved Counterparty Policy.
- User imports or selects an approved counterparty from Counterparties.
- User opens a catalog listing and clicks
Request Quote.
- System creates a quote thread in Quotes with structured fields for quantity, SLA, and price.
- Seller accepts or counteroffers.
- Buyer accepts the quote; if thresholds are exceeded, the transaction enters Pending Approval.
- An approver opens the approval detail, reviews evidence and policy context, and approves.
- Transaction moves to Live Transactions and then
Fulfilled.
- User opens Transaction Detail and Ledger Events to verify the full audit trail.
2. Alternative Flows
2.1 Policy Blocks Transaction
- Agent requests a quote from a non-approved counterparty.
- System blocks progression before commercial commit.
- User sees a clear inline block reason:
Blocked by Counterparty Policy: Vendor is not in approved network.
- User can either request a temporary exception or add the counterparty through a controlled workflow.
2.2 Approval Required
- Transaction total exceeds agent budget or risk threshold.
- Quote can still be accepted in principle, but settlement is blocked pending approval.
- Approval queue item shows: requesting agent, seller, amount, triggered rule, and expiration.
2.3 Seller Rejects or Counteroffers
- Seller rejects with reason, or proposes new quantity/price/SLA.
- Quote thread preserves prior versions rather than overwriting them.
- Buyer can accept, revise, or cancel.
2.4 Fulfillment Failure
- Transaction marked
Fulfillment Failed.
- User opens transaction detail, sees event history, delivery evidence, and next recommended action.
- User may retry, request manual review, or open dispute.
2.5 First-Time Listing Creation Error
- Seller tries to create a listing without required fulfillment method or identity verification.
- Form errors remain inline and field-specific; draft persists.
2.6 Empty State Paths
- No agents yet: dashboard CTA points to
Register first agent.
- No listings yet: seller workspace CTA points to
Create listing.
- No approvals pending: approval queue shows calm empty state, not an empty table.
3. Feature Inventory
3.1 Must-Have
| Feature | Screen | API | Priority |
|---|
| Workspace onboarding | Onboarding Wizard | POST /api/v1/workspaces | 🔴 |
| Agent registry | Agents / Agent Detail | GET/POST /api/v1/agents | 🔴 |
| Budget and counterparty policies | Policies | GET/POST /api/v1/policies | 🔴 |
| Catalog / listing browser | Catalog / Listing Detail | GET /api/v1/listings | 🔴 |
| Quote request / response workflow | Quotes | GET/POST /api/v1/quotes | 🔴 |
| Approval queue | Approvals | GET/POST /api/v1/approvals | 🔴 |
| Transaction detail + ledger | Transactions / Ledger Events | GET /api/v1/transactions | 🔴 |
| Counterparty management | Counterparties | GET/POST /api/v1/counterparties | 🔴 |
3.2 Should-Have
| Feature | Screen | API | Priority |
|---|
| Seller listing creation | Create Listing | POST /api/v1/listings | 🟡 |
| Dispute intake + review | Disputes | GET/POST /api/v1/disputes | 🟡 |
| Analytics overview | Analytics | GET /api/v1/analytics/overview | 🟡 |
| Org roles and permissions | Settings > Members & Roles | GET/POST /api/v1/members | 🟡 |
3.3 Could-Have
| Feature | Screen | API | Priority |
|---|
| Sandbox simulation mode | Sandbox | POST /api/v1/simulations | 🟢 |
| Recurring contracts / subscriptions | Contract Detail | GET/POST /api/v1/contracts | 🟢 |
| SDK/API access portal | Settings > Integrations | GET /api/v1/api-keys | 🟢 |
3.4 Won't-Have (for now)
| Feature | Reason |
|---|
| Open anonymous marketplace discovery | Conflicts with the recommended private-network wedge |
| Consumer shopping agent flows | Different trust and compliance shape than V1 |
| Cross-chain settlement UI | Not aligned with early enterprise wedge |
4. Screen Layouts & Low-Fidelity Prototypes
4.1 Dashboard
+------------------------------------------------------------------+
| Top Bar: Workspace / Search / Alerts / User |
+---------------------+--------------------------------------------+
| Sidebar | Page: Dashboard |
| - Dashboard | +----------------+ +--------------------+ |
| - Agents | | Active Agents | | Pending Approvals | |
| - Catalog | +----------------+ +--------------------+ |
| - Quotes | +----------------------------------------+ |
| - Transactions | | Recent Transactions | |
| - Approvals | | status | counterparty | amount | risk | |
| - Policies | +----------------------------------------+ |
| - Counterparties | +----------------------------------------+ |
| - Disputes | | Policy Events / Exceptions | |
| - Analytics | +----------------------------------------+ |
| - Settings | |
+---------------------+--------------------------------------------+
Components: sidebar nav, metric cards, recent transactions table, event feed. State: default / loading / empty.
4.2 Agents Registry
+------------------------------------------------------------------+
| Agents [Register Agent] |
+------------------------------------------------------------------+
| Filters: status | owner | type | risk class |
| --------------------------------------------------------------- |
| Agent Name | Owner | Capabilities | Policy Status | Last Active |
| --------------------------------------------------------------- |
| Invoice-Reconciler | Ops | buy:data, buy:api | healthy | 2m ago |
| Research-Agent | AI | buy:data | review | 6m ago |
+------------------------------------------------------------------+
4.3 Policies
+------------------------------------------------------------------+
| Policies [New Policy Template] |
+------------------------------------------------------------------+
| Tabs: Budget | Counterparty | Risk Rules |
| +--------------------------------------------------------------+ |
| | Agent Scope [All Finance Agents ▼] | |
| | Monthly Cap [$5,000 ] | |
| | Max Txn Amount [$500 ] | |
| | Allowed Vendors [Acme API, DataCo, VerifyNow] | |
| | Approval Rule [Required above $300 ▼] | |
| | [Save Policy] [Preview Impact] | |
| +--------------------------------------------------------------+ |
+------------------------------------------------------------------+
4.4 Listing Detail / Request Quote
+------------------------------------------------------------------+
| Listing: DataCo Fraud Signals API [Verified Seller] |
+------------------------------------------------------------------+
| Price Model: $0.004 / call SLA: 99.9% Region: US/EU |
| Description: real-time fraud enrichment for payments events |
| |
| [Request Quote] [Add to Approved Catalog] [View Seller Profile] |
| |
| Trust Card: rating | fulfillment score | dispute rate | policy fit|
+------------------------------------------------------------------+
4.5 Quotes Inbox / Detail
+------------------------------------------------------------------+
| Quotes [New Quote] |
+------------------------+-----------------------------------------+
| Thread List | Quote Detail |
| - DataCo API | Buyer Agent: Invoice-Reconciler |
| - GPU Burst Job | Seller: DataCo |
| - OCR Service | Qty: 50,000 calls |
| | Proposed Price: $180 |
| | SLA: 99.9%, 24h validity |
| |-----------------------------------------|
| | Message / Revision history |
| |-----------------------------------------|
| | [Accept] [Counteroffer] [Cancel] |
+------------------------+-----------------------------------------+
4.6 Approval Queue
+------------------------------------------------------------------+
| Pending Approvals |
+------------------------------------------------------------------+
| Request | Agent | Triggered Rule | Amount | Age | Action |
|------------------------------------------------------------------|
| Q-1042 | Invoice-Reconciler | over max txn | $420 | 4m | Review |
| Q-1043 | Research-Agent | new vendor | $95 | 9m | Review |
+------------------------------------------------------------------+
4.7 Transaction Detail
+------------------------------------------------------------------+
| Transaction T-9821 [Open Dispute]|
+------------------------------------------------------------------+
| Status: Fulfilled Buyer: Invoice-Reconciler Seller: DataCo |
| Amount: $180 Policy Path: Auto-approve + cap check passed |
| |
| Tabs: Summary | Ledger Events | Delivery Evidence | Policy Trace |
| +--------------------------------------------------------------+ |
| | 12:01 Quote accepted | |
| | 12:02 Authorization reserved | |
| | 12:03 Delivery token issued | |
| | 12:04 Capture complete | |
| +--------------------------------------------------------------+ |
+------------------------------------------------------------------+
5. API Call Mapping
5.1 Dashboard
GET /api/v1/analytics/overview
- Purpose: Fetch dashboard metrics and recent transaction highlights
- Auth: Bearer token
- Response:
{
"active_agents": 12,
"pending_approvals": 3,
"transaction_volume_30d": 48210.15,
"risk_events_7d": 4
}
5.2 Agents
GET /api/v1/agents
- Purpose: List agents within workspace
- Query Params:
status, owner_id, page, limit
POST /api/v1/agents
{
"name": "Invoice-Reconciler",
"type": "buyer",
"owner_id": "usr_123",
"capabilities": ["buy:data", "buy:api"]
}
5.3 Policies
POST /api/v1/policies
{
"scope": { "agent_ids": ["agt_123"] },
"budget_monthly_usd": 5000,
"max_transaction_usd": 300,
"approved_counterparty_ids": ["cp_1", "cp_2"],
"approval_threshold_usd": 300
}
5.4 Quotes
POST /api/v1/quotes
{
"buyer_agent_id": "agt_123",
"listing_id": "lst_456",
"quantity": 50000,
"unit": "api_calls",
"requirements": {
"sla_tier": "standard",
"region": "us"
}
}
5.5 Approvals
POST /api/v1/approvals/{approvalId}/decision
{
"decision": "approve",
"comment": "Approved for low-risk pilot"
}
5.6 Transactions
GET /api/v1/transactions/{transactionId}
- Purpose: Get transaction summary plus policy/ledger references
GET /api/v1/transactions/{transactionId}/events
- Purpose: Fetch ordered ledger and execution events
6. User Stories
6.1 Configure Policy
As a platform owner, I want to define purchase limits and approved counterparties for an agent, so that I can allow controlled autonomy.
Given I am on the Policies page When I create a budget and counterparty policy for an agent Then future quote acceptances are checked against those rules before settlement
6.2 Request Quote
As a buyer-side operator, I want to request a quote from a listing, so that my agent can purchase a digital service without a custom manual sales flow.
Given a listing is policy-compatible When I submit a quote request Then a quote thread is created with structured commercial terms
6.3 Approve Exception
As a designated approver, I want to review why a transaction was blocked or paused, so that I can approve it confidently.
Given a quote exceeds policy thresholds When I open the approval detail Then I can inspect the triggered rule, counterparty, amount, and risk context before deciding
6.4 Investigate Transaction
As a seller or buyer operator, I want to inspect the full event trail of a transaction, so that I can verify fulfillment and resolve issues quickly.
Given a transaction exists When I open Transaction Detail Then I can see summary, ledger events, delivery evidence, and policy trace in one place
Assumptions
- The initial UX is one unified application with buyer and seller modules rather than separate products.
- Quote-based transactions are the first supported commercial pattern.
- Workspace admins control agent registration and policy authoring.
Open Questions
- Should listing creation and buyer procurement live in the same app shell for all customers, or should seller mode be a separate navigation profile?
- How much detail from policy evaluation should be surfaced directly in quote threads vs only in transaction detail?