Phase 02 — Product Discovery
Opportunity prioritization, solution hypotheses, prototypes, structured backlog and risk assessment.
Synthetic Personas
3 personas representing the payment gateway users. Built based on the integration, operations and management roles of the ECP ecosystem.
Role: Integrator developer | Apps: ecp-bank, ecp-food | Experience: 5 years TypeScript
Context: Needs to integrate payments (Pix, card, boleto) in each ecosystem app. Today reimplements the Asaas integration in each project separately. Tests depend on unstable external gateway sandbox.
Frustrations: Rework with every new app. Asaas sandbox fails and blocks development. No deterministic staging environment. Documentation spread across multiple systems.
Goals: Single API with stable contract. Internal mode for tests without external dependency. Onboarding in hours, not weeks.
“Every time I create a new app in the ecosystem, I reimplement the entire payment integration from scratch. If there was a centralized API, I would do the integration in 1 day instead of 1 week.”
Opportunities: OPP-01, OPP-02, OPP-10, OPP-12 | KRs: KR-01, KR-03, KR-04
Role: Operations and support | Focus: Monitor transactions, investigate failures | Experience: 4 years in fintech ops
Context: Responsible for ensuring ecosystem payments flow smoothly. Investigates transaction failures, reprocesses webhooks and manages the active provider (internal vs Asaas).
Frustrations: To investigate a failure, needs to access logs in 3 different systems. Has no unified view of a transaction's life cycle. No manual webhook retry — requires technical intervention.
Goals: Unified dashboard with ecosystem KPIs. Complete timeline of each transaction. One-click webhook retry. Real-time failure alerts.
“When a transaction fails, it takes me 2 hours to investigate because I need to cross-reference logs from the app, gateway and webhooks. If everything was in one timeline, it would take 5 minutes.”
Opportunities: OPP-06, OPP-13, OPP-14 | KRs: KR-02, KR-05
Role: Product management | Focus: Strategic vision, metrics, costs | Experience: 8 years in digital products
Context: Makes decisions about provider (internal vs Asaas), monitors transaction volumes and costs. Needs consolidated ecosystem view to plan evolutions.
Frustrations: Has no view of transaction volume per app. Does not know how much each real vs simulated transaction costs. No audit of who did what in the admin panel.
Goals: Dashboard with ecosystem metrics. Complete action audit. Provider control with switch history.
“I need to know exactly how many real vs simulated transactions go through the gateway, what the volume per app is, and how much I'm paying in fees to Asaas. Today I have none of those views.”
Opportunities: OPP-06, OPP-08, OPP-09 | KRs: KR-02, KR-05
Key Insights
6 insights extracted from ECP ecosystem analysis, gateway benchmarks (Stripe, Adyen, PagSeguro) and real operational pain points.
Prioritized Opportunities (WSJF)
9 opportunities selected for discovery, organized across 3 strategic pillars. Framework: WSJF (Weighted Shortest Job First).
Pillar 1: Core Infrastructure
Unified API, stable contract and provider abstraction — the skeleton on which everything is built.
| # | ID | Opportunity | WSJF | Effort | KRs |
|---|---|---|---|---|---|
| 1 | OPP-01 | Eliminate reimplementation of gateway integration in each app | 10.0 | L | KR-01, KR-02, KR-03 |
| 2 | OPP-09 | API contractual stability for consumer apps | 14.0 | M | KR-01, KR-03 |
| 3 | OPP-08 | Freedom to negotiate with multiple gateways without rework | 13.0 | M | KR-03 |
Pillar 2: Development Velocity
Internal mode, deterministic staging and unified documentation eliminate external dependencies.
| # | ID | Opportunity | WSJF | Effort | KRs |
|---|---|---|---|---|---|
| 4 | OPP-10 | Payment tests depend on unstable Asaas sandbox | 13.0 | M | KR-04, KR-01 |
| 7 | OPP-12 | Staging needs to be deterministic and controllable | 22.0 | S | KR-04 |
| 6 | OPP-02 | Devs need to understand each gateway API instead of a single contract | 11.5 | M | KR-01, KR-03 |
Pillar 3: Production Reliability
Idempotency, guaranteed webhook delivery and complete transaction observability.
| # | ID | Opportunity | WSJF | Effort | KRs |
|---|---|---|---|---|---|
| 5 | OPP-14 | Without idempotency, retries cause duplicate charges | 13.5 | M | KR-05, KR-02 |
| 8 | OPP-13 | Callbacks need to be delivered even on temporary failure | 11.0 | M | KR-05, KR-02 |
| 9 | OPP-06 | Investigating failures requires accessing logs in multiple systems | 9.5 | M | KR-02, KR-05 |
Solution Hypotheses
7 hypotheses formulated by the Product Designer, each with critical assumptions validatable via prototype or interview.
A unified API layer with versioned contract will give operators real-time visibility of all ecosystem payments, eliminating the need for each app to integrate directly with the gateway.
Assumptions: CA-01 (Dashboard without overload), CA-02 (FilterBar covers 95% of workflows), CA-03 (single contract for Pix/Card/Boleto), CA-04 (source_app attribution sufficient).
A provider abstraction layer, surfaced by a dedicated Providers page with ProviderToggle, will allow the super admin to switch between Internal and External without impacting downstream apps.
Assumptions: CA-05 (two-card toggle prevents accidents), CA-06 (confirmation modal), CA-07 (status in 3 persistent locations), CA-08 (swap history).
Internal Mode with simulation controls in the Settings page and contextual actions in the Transactions page will eliminate Asaas sandbox dependency, enabling deterministic testing.
Assumptions: CA-09 (admin panel vs env vars), CA-10 (yellow banner sufficient), CA-11 (contextual simulation buttons), CA-12 (feature flags via Toggle).
Accessible documentation from the admin panel (Apps page) with interactive examples using Internal mode will reduce onboarding from weeks to hours.
Assumptions: CA-13 (Apps page as entry point), CA-14 (real payloads as learning material), CA-15 (self-service registration modal).
Showing idempotency_key per transaction, flagging deduplicated requests and duplicates in the timeline will give operators confidence that duplicate charges do not occur.
Assumptions: CA-16 (idempotency_key visible), CA-17 (dedup event in timeline), CA-18 (no dedicated duplicates dashboard).
Dedicated Webhooks page with received/sent tabs, delivery status tracking and one-click retry will give full control over event delivery.
Assumptions: CA-19 (two-tab mental model), CA-20 (attempt count with timing), CA-21 (retry button sufficient), CA-22 (CodeBlock for debugging).
TransactionTimeline component showing the complete cycle (request → gateway → webhook → callback) with correlated timestamps will reduce investigation time from hours to minutes.
Assumptions: CA-23 (clear vertical timeline), CA-24 (elapsed time between events), CA-25 (semantic colors), CA-26 (expandable nodes with payload).
Prototypes
8 prototyped screens: Dashboard, Transactions, Transaction Detail, Providers, Webhooks, Apps, Settings, Audit Log.
Structured Backlog
3 epics, 13 features and 29 user stories with BDD/Gherkin acceptance criteria.