>_ Analyst Engineering

Framework · v1.0

The Analyst Engineering Review Scorecard

The Analyst Engineering Review Scorecard is a fixed rubric of 12 checks for reviewing an API or event contract before a team integrates with it. Each check scores 0, 1, or 2, for a maximum of 24. Every point lost, and most points kept, becomes a finding with a severity and a question. The same scorecard is applied in public to real APIs in the teardown series below, and practised on the Labs.

Written and maintained by Ahmed at Analyst Engineering, a Senior Technical Business Analyst with 10+ years in banking and payments. Version 1.0, published 2026-09-21. Check ids are permanent: a check is never renumbered, only revised with a version note.

4
lenses
12
checks
24
points
3
verdict bands

How do you score a contract?

Read the contract and everything the provider publishes around it: the reference, the guides, the changelog, the error list. Then give each check one of three scores. Do not average, do not weight. The value of the scorecard is that two analysts reviewing the same contract land within a point or two of each other.

Score Meaning
0Absent. The topic is not addressed anywhere the consumer can find.
1Partial. Implied, scattered across pages, or stated without numbers ("may", "in some cases", "too many").
2Explicit. Stated once, with numbers or examples, and consistent across the contract.

What does the total mean?

Total Verdict
20 to 24Integrate. Send the question list this week; nothing blocks the start.
14 to 19Integrate after answers. Start on the explicit parts; hold the money-moving paths until the high findings are answered in writing.
0 to 13Do not start. The contract needs a design review, not an integration. Send the register to the provider.

What are the 12 checks?

Four lenses, three checks each. The question is what you ask of the contract. The second line is what a 2 looks like, so the score is a comparison, not an opinion.

Lens 1

Meaning

Does the contract say what the business means, unambiguously?

  1. C1

    Vocabulary

    Does every resource, field, and enum map to exactly one business term?

    A 2 looks likeOne name per concept across the whole contract, no synonyms, no database or legacy names left beside the current ones, and every enum value explained.

  2. C2

    Lifecycle

    Are every state and every legal transition written down, with the trigger and the terminal states?

    A 2 looks likeA complete state list, each transition with who or what causes it, which states are terminal, and every automatic transition quantified (after how many attempts, after how long).

  3. C3

    Money and time

    Do amounts carry an explicit unit and currency, and timestamps an explicit zone and precision, the same way everywhere?

    A 2 looks likeAmounts as integers in minor units or decimal strings with a currency, never floats; timestamps with a declared epoch or zone and a declared precision; the same rule on every endpoint and event.

Lens 2

Completeness

Does the contract cover the whole process, including the paths that go wrong?

  1. C4

    Operations

    Is there an operation for every process step, including cancel, correct, and retry?

    A 2 looks likeEvery step of the business process has an operation, reversal and correction paths exist, and their constraints (once only, partial allowed, window) are stated.

  2. C5

    Errors

    Does every failure the consumer must handle have a stable code, a status, and a recovery action?

    A 2 looks likeA single error shape, a published code list, the HTTP status per code, which messages are safe to show a user, and what the consumer should do next for each class.

  3. C6

    Limits

    Are lengths, sizes, minimums, maximums, rate limits, and retention windows stated as numbers?

    A 2 looks likeEvery limit is a number with a unit, including field lengths, amount bounds, request rates, per-object rates, and how long keys, holds, and events are kept.

Lens 3

Safety

Can a consumer integrate without losing money or data when something is retried, raced, or leaked?

  1. C7

    Idempotency

    Do creates and money-moving actions define a key, its scope, its retention, and what happens on mismatch?

    A 2 looks likeThe header or field, its maximum length, how long the server remembers it, whether failures are replayed, what a reused key with different parameters returns, and which operations honour it.

  2. C8

    Concurrency and ordering

    Is the behaviour under concurrent writers stated, and are event ordering and duplication stated?

    A 2 looks likeLocking or conflict behaviour on the same object, whether events can arrive out of order or more than once, what to deduplicate on, and exactly when duplicates are produced.

  3. C9

    Authorization and secrets

    Is it explicit which credential can do what, and which values must never be logged or exposed?

    A 2 looks likeCredential types and their scopes per operation, signature or token verification rules with tolerances, secret rotation, and a named list of values to keep out of logs and front ends.

Lens 4

Evolution

Will the integration still be correct in a year, and can you prove what happened?

  1. C10

    Versioning

    Are the version mechanism, the definition of a breaking change, and the deprecation policy written down?

    A 2 looks likeHow a version is selected per request and per event, what the provider promises not to break, how often versions ship, and how long old ones live.

  2. C11

    Traceability

    Does every object and event carry a stable identifier and a handle the consumer can correlate and reconcile with?

    A 2 looks likeStable ids on every object and event, a request identifier per call, a place for the consumer's own reference, and a stated way to find an object from that reference.

  3. C12

    Evidence

    Do examples, a sandbox, and test fixtures exist for the paths that matter, including failures?

    A 2 looks likeRealistic examples per request and response, a sandbox whose behaviour differences from production are documented, and a way to trigger every failure and event type on demand.

How do you record a finding?

A score without findings is a grade, and grades do not change a delivery. Every 0 or 1 produces at least one finding. A 2 produces one whenever the explicit rule still forces a decision on your side (a retention window you must respect, a duplicate you must handle). Rate severity from the consumer's seat, not the provider's.

Severity If ignored
HighMoney or data goes wrong: a duplicate charge, a lost payment, a leaked secret, a state you cannot recover.
MediumAn incident or a rework: a parser breaks on an upgrade, an operations team works blind, a hold expires unnoticed.
LowA question to close before build. Cheap now, a change request later.
NoteContext the team should know. No action beyond writing it down.

The register has eight columns, and the last one is the one that gets read:

  1. Id: F1, F2, permanent within the review.
  2. Check: the scorecard check it comes from.
  3. Location: the field, endpoint, header, or page.
  4. Finding: one sentence, what the contract says or fails to say.
  5. Evidence: the quoted rule or the absence, so nobody has to trust you.
  6. Severity: from the table above.
  7. Impact: what happens on your side if nothing is done.
  8. Decision or question: what your team must decide, or what you ask the provider.

The Labs solutions use the same severities and the same evidence-first shape, so a mission register and a real review register look alike on purpose.

Free download

Take the scorecard into your next review

The 12 checks as a Markdown checklist you can paste into Confluence or a pull request, and the findings register as a CSV that opens in Excel or Google Sheets. No sign-up.

The series

Which real APIs have been scored?

Each teardown applies the 12 checks to a public contract, with the score, the evidence, and the findings register a consuming team would inherit. Public documentation only, reviewed on a stated date and API version. New teardowns ship roughly every two weeks.

  1. 01 Stripe PaymentIntents API Review: 22 of 24 on the Scorecard, and the 12 Findings Your Integration Must Own Stripe's PaymentIntents API scored on a 12-check contract review: 22 of 24, plus the idempotency, webhook, versioning, and lifecycle findings your team must own.

Next in the queue: Adyen webhooks, Wise transfers, and a SEPA Instant usage guideline. A free account with the newsletter box ticked gets each one the day it ships.

How do you practise the scorecard?

Mission 01 of the Labs hands you the Northline Pay OpenAPI contract, the requirements, the sample responses, and the business rules. Score it with the 12 checks, write the register, then compare with the practitioner solution, which uses the same severities. Sixty minutes, free.

The method behind the checks

The scorecard tells you what to look for. These two guides teach how to write a contract that scores 24, and how to prove an API behaves as its contract says.

Not ready to buy? The free downloads are a no-cost place to start, and every article here stays free.

Questions about the scorecard

What is the Analyst Engineering Review Scorecard?
A fixed rubric of 12 checks, grouped in four lenses (meaning, completeness, safety, evolution), for reviewing an API or event contract before a team integrates with it. Each check scores 0, 1, or 2, for a maximum of 24, and each point lost becomes a finding with a severity and a question. Version 1.0 was published on 21 September 2026.
How do you score a contract with the scorecard?
Read the contract and its supporting documentation, then give each of the 12 checks a 0 if the topic is absent, a 1 if it is implied, scattered, or stated without numbers, and a 2 if it is explicit with numbers or examples. Add the points. 20 to 24 means integrate with a short question list, 14 to 19 means integrate only after the questions are answered, and below 14 means do not start until the contract is fixed.
Does a high score mean there is nothing to do?
No. The score measures how explicit the contract is. Even a 2 on a check usually produces a decision the consuming team must make, such as how long to retry with the same idempotency key or what to deduplicate webhook events on. The findings register holds those decisions, whatever the score.
What severities does the scorecard use?
Four, from the consumer's point of view: high when money or data goes wrong if the finding is ignored, medium when it causes an incident or rework, low when it is a question to close before build, and note when it is context the team should know. The Labs missions use the same four levels in their solutions.
Can the scorecard be used on an event schema or a requirements pack?
Yes for event contracts (Kafka topics, webhooks): every check applies, with C8 and C11 carrying the most weight. For a requirements pack, use the meaning and completeness lenses as written and treat the safety and evolution lenses as questions to put to the architecture.

Free account

Get every teardown, and score your own contract

A free account, no password. It saves your Labs progress, unlocks Mission 01's solution so you can compare registers, and, if you tick the box, emails you each new scorecard teardown the day it ships.

Your email is used to sign you in. Nothing else, unless you ask. Privacy.