
Compliance without the friction
Project
Entity Verification · Deel
Year
2025
Deel's financial-crime verification flow, built from zero. Before a company can move money on Deel, it has to be verified (KYB). I owned the whole system, the client-facing flow and the fin crime ops review side, and shipped it in phases to 100% of new companies. All this without the onboarding drop-off that usually comes with adding compliance steps.
Team: Core team included 8 engineers, 1 PM, 1 Product operations manager, 1 data analyst and me. Stakeholders included legal, compliance, AML / FinCrime ops, onboarding team.
Impact overview
100% of new entities verified before they can move money
147 / 156 CSAT on the new flow (~94% positive)
Support tickets stayed flat as rollout scaled to 100%
Scope of Work
System Design
Product Design
UX research

Why this project started
Deel started as a SaaS company and grew into a platform moving millions of dollars a month. The compliance backbone never caught up.
Deel could not consistently say who was on either side of a payment. A US company could pay a contractor in Brazil with almost nothing collected about either entity. For a company moving that much money, that is a real financial-crime exposure.
A banking-partner audit made the gaps official and handed over a list of what had to change. With an IPO ahead, closing them stopped being optional.

Key challenges, and how I solved them
Balancing user friction against compliance rigor
The challenge: Clients want to submit as little as possible. Compliance wants comprehensive documentation. Every question creates friction before clients can start using payments.
How I solved it: I adapted the level of rigor to level of risk using a two-tiered approach: Tier one for light services, tier two for regulated financial products. Read more about it in the Phase 1 section.
A huge undertaking, so I built it in phases
The challenge: Too big to ship in one release. Waiting for the whole system would leave Deel exposed for too long.
How I solved it: Three shippable phases: 1 ) get compliant, 2) make it faster and automate 3) migrate. See breakdown below.
One flow for ~150 countries
The challenge: Compliance requirements differ by country, so no single standard flow works. Every field has to be right for every market. E.g. US entities need ownership percentage at the shareholders step; EU entities need the submitter's address, not just an ID.
How I solved it: one modular flow that configures itself per country.
Mapped each country's legal requirements to the exact fields it needs.
Backend: one table holds every field any of the 150+ countries can require, each flagged required or optional per country. One database, one source of truth to maintain.
Frontend: the flow reads that flag and shows only the fields a client's country needs, using the company country we already have. Clients answer the minimum, and anything already known is reused.
A glimpse of the scale:
Solution
Phase 1: Get to 100% compliant
The goal: collect everything the audit required, on every new company, fast enough to close the exposure. I mapped every required field into the flow so nothing was missed.
Two-tiered flow: Rather than one maximal flow, I split verification by risk.
A light (tier one) check for companies using light services (Deel handles transactions).
A full (tier two) process for regulated financial products (moving money through Deel).
No verification for non-financial products (eg. HR, ATS, etc.)
Rigor scales to what the company is actually doing, so most companies never see the heavy path.

Walkthrough of the tier 2 and tier 1 flows on production:
Example decision: how I removed one step for 96% of entities without losing compliance
Legal wanted a step in the flow asking whether the company operated in a high-risk industry (crypto, alcohol, healthcare, non-profits, hedge funds, real estate). I analysed data and found that this concerned only around 4% of all entities, so the other 96% were answering an extra unnecessary question.
What I did?
Industry was already captured earlier, during entity creation, but was not standardised with industry codes.
So rather than ask again here, I standardized that upstream question and reconciled the data.
Now the system knows each entity's industry on its own: the 4% in a high-risk industry go straight to the follow-up questions, and the 96% never see the step.

Where phase 1 landed
The flow was fully compliant and rolled out to all new companies at signup.
Trade-off accepted:
The form was long (compliance requires focus), and user studies showed people moved through it slowly.
That was acceptable here, because the priority was getting compliant as fast as possible. Once that was locked, speed became the whole job of phase two.

Phase 2: Make it faster
By the end of phase one the flow was 100% compliant but slow. Clients took a long time to submit, and fin crime ops reviewed every document by hand. Phase two attacked speed on both sides. Below are some examples of specific features and projects we implemented.
Example 1: Reuse details across multiple entities (faster for clients)
Large organizations often run multiple entities across countries, and much of the information repeats. I built a feature that carries it over quickly: once one entity is verified, a new one reuses its data in one click, filling the controlling-officer, UBOs, directors etc. instead of starting from scratch.
Example 2: Smart AI pre-fill (faster for clients)
Entity details pulled from public records or business intelligent providers (e.g. Dun and Bradstreet), so most clients review instead of type.

Example 3: Veriff integration (faster for clients + FinCrime Ops)
By building the Veriff integration, we now enable:
Clients to complete ID verification in seconds
FinCrime Ops to review faster with pre-approved data

Example 4: Trust signals replacing proof-of-address (faster for clients + FinCrime Ops)
The submitter's email is matched against the company's website, which is sufficient proof that they can submit on the company's behalf.
Vetted with legal and compliance, this was the first step toward a broader trust-signals approach
This reduces friction for clients reaching for Deel's financial products, and cuts review work for ops at the same time.

Example 5: Follow-ups with a single source of truth (faster for FinCrime Ops):
Problem:
When ops needed more from a client, requests scattered across email and Zendesk
No reviewer could see a client's full history
No clean audit trail, which for a compliance flow heading into an IPO is the whole point
Solution: I built enhanced due diligence into the product:
Ops composes a custom request > the client answers inside Deel
Documents never travel over email
Everything lands in one auditable thread
Trade-off:
Ops was used to reaching out ad hoc over email and phone, which felt faster to them, so moving everything inside Deel meant learning a new flow and an initial dip in their speed.
That was acceptable: the long-run payoff is a reliable audit trail of everything exchanged between reviewer and client, which is the compliance win.


Example 6: Continuous compliance without manual reminders (Faster for FinCrime Ops)
Compliance is not a one-time check. Rather than have reviewers track re-verifications in their own calendars, I built two way to retrigger the flow for a client automatically:
On a schedule (say, six months out)
By risk (if a client's risk score or revenue crosses a threshold)
Smart periodic reviews replaced manual follow-up, saving reviewers a lot of time and enabled Deel to be even more vigilant.

Where phase 2 landed
Client side: The flow was 2x faster than in phase 1
FinCrime Ops side: Review time more than halved, tier 2 reviews dropped from 1.6 to 0.7 median days and light-tier from 0.5 - 0.7 to 0.3


Phase 3: Migrate existing customers
Phases one and two caught every new company. Phase three closed the last gap: bringing the existing base into the new flow. I designed the migration pathways for that.

Impact
Business side (data shown at end of each phase above):
100% of new entities now go through the flow before they can move money
Submissions ramped from 74 a month to a peak near 3,857, most of it full tier-two verification, and the flow held up at that volume
Existing-entity migration is running batch by batch, around 80% as of May 2026
Customer experience:
CSAT ran 147 positive out of 156 on the new flow, about 94%
Support tickets stayed almost flat as rollout scaled. Added friction did not turn into confusion or load.
Note: this was built before AI was rolling into the org. The 2026 push takes it further with continuous monitoring and automated re-verification.




