Back

Coinpresso · Software engineering internship

Taking the wait out of identity checks

Crypto exchanges are required to verify a buyer’s identity before they can sell to them. When that check waits on a person, the buyer’s interest doesn’t wait with it. I built the pipeline that made the check automatic.

Role
Software Engineer Intern (remote)
When
May 2023 – Aug 2023

6

AWS services in the pipeline

2

ways to know where a check stands

biweekly

KPI reviews with the client

Why this mattered

Crypto exchanges can’t simply let anyone buy. Anti-money-laundering rules, sanctions screening, and the banks and payment processors they depend on all require knowing who the buyer is first. Identity verification (KYC) isn’t friction you can design away — it’s mandatory, and it sits at the exact moment someone is ready to buy.

For this client it ran on manual review. A buyer uploaded their ID and then waited in a queue for a person to look at it. Someone who wants to buy a token right now is at peak intent; by the time a reviewer gets to them hours later, the moment — or the price — may have passed, and they don’t come back.

Who it helps

The buyer

Ready to buy now, and made to wait on a stranger’s schedule with no idea how long it will take.

The reviewer

Doing the same comparison over and over, where attention is best spent on the cases that are genuinely unclear.

The client

Paying to bring in buyers who then stall at a mandatory check, before they’ve bought anything.

North star

The share of people who submit an ID and go on to buy. That’s the client’s actual objective: every buyer who uploads an ID and then drifts off during the wait is revenue already acquired and then lost.

Speed matters only because it serves that number. Time from upload to decision is the lever; conversion to a first purchase is the point.

What success means here

Faster decisions

Upload-to-decision time — the main lever on the north star.

A decision that used to wait for a person’s queue should arrive while the buyer is still in the app and still wants to buy. If this drops and conversion doesn’t move, the wait wasn’t the real problem.

Fewer checks needing a person

The share of checks resolved without human review.

Automation is only worth it if it takes real volume off the queue. This is the measure of how much of the routine work actually left the reviewer’s desk.

Fewer buyers lost mid-check

Drop-off between ID upload and verification.

The most direct read on the problem: how many people start the check and never finish it. It’s the leak the north star is trying to close.

Guardrails

Speed is easy to win badly in identity verification. These are the things that can’t get worse while the north star gets better.

A match is a probability

Facial analysis returns a confidence score, not a verdict.

Where the line sits is a product decision, not an engineering default. Set it too loose and the wrong person gets in; too strict and real customers get bounced. Either way the threshold deserves an owner.

False accepts cost the most

Letting the wrong person through is the expensive mistake.

A slow check loses a sale. A wrong approval is a regulatory problem that can cost the exchange its banking partners or its licence. So a faster pipeline that lets more mistakes through isn’t a win, however good conversion looks.

Nobody left wondering

Every customer can find out where their check stands.

A status notification goes out when a check finishes, and a status endpoint answers on demand. The worst version of a wait is the one where you don’t know whether anything is happening.

Biometric data is sensitive by default

Face images need handling that matches what they are.

An ID photo and a selfie are about as personal as data gets. Access, retention and where results are stored are part of the product, not an afterthought for later.

Keeping the client in the loop

I presented KPIs to the client in biweekly meetings, which kept the conversation on outcomes — how the checks were performing — rather than on which services had been wired together that fortnight.

Under the hood

An ID upload to S3 triggers a Lambda function, which runs facial analysis through Amazon Rekognition and writes the result to DynamoDB. Lambda Destinations route the outcome to SNS for notifications, and an API Gateway endpoint handles status queries on demand. Around it, I worked on Java/Spring Boot microservices and a React front end.

Up next

Building the advisor experience around advisors’ time