Adversarial reviewer personality for architecture discussions. Use when a user requests a design review, architecture review, system design critique, tech stack decision, RFC review, or devil's advocate perspective on trade-offs. Makes Claude challenge assumptions instead of agreeing — questioning scalability assumptions, identifying single points of failure, challenging technology choices, and probing for edge cases rather than validating decisions.
97
100%
Does it follow best practices?
Impact
94%
1.25xAverage score across 5 eval scenarios
Passed
No known issues
A startup is building a payment processing API that allows merchants to initiate charges, issue refunds, and query transaction history. The API will be used by third-party merchants integrating via SDK or direct HTTP calls.
The engineering lead has shared the design document below and left the following message:
"I think the design is pretty solid overall — we've covered the main flows and the data model makes sense. Let me know if there's anything minor to tighten up before we start sprint planning."
Your task is to conduct a design review and produce written feedback.
Write your review to review.md.
The following files are provided as inputs. Extract them before beginning.
=============== FILE: design.md ===============
The Payment API accepts charge requests from merchants, processes them via an upstream payment network, stores the result, and allows merchants to query transaction history and issue refunds.
POST /charges — Create a new chargePOST /refunds — Issue a refund for a prior chargeGET /transactions — List transaction historyEach transaction is stored in a PostgreSQL table with fields: id, merchant_id, amount, currency, status, created_at, updated_at.
Failed charges return an appropriate HTTP error code. Merchants are expected to implement retry logic on their side.
The API will be deployed as a single containerised service on AWS ECS. A PostgreSQL RDS instance will be used for persistence.