1:1 Face Verification for KYC and Mobile Apps: Turnkey Development

False rejections during face verification hurt conversion and frustrate customers. We develop turnkey 1:1 face verification — from choosing the comparison method to integrating it into a mobile app. We tune thresholds so the false rejection rate decreases and verification succeeds on the first attempt.
Frequently Asked Questions

Face verification 1:1: where recognition breaks down

Face verification 1:1 compares a live capture against a reference from a document or profile and answers one question: is this the same person or not. It breaks not on the model itself, but on the input data.

Let's break down the typical failures that cause false rejections to grow and trust in the service to drop.

The first source of errors is image quality. A front-facing camera in a dark room, backlight from a window, overexposure from a flash, motion blur — all of this pushes the image away from the conditions the model was trained on.

Compression in a messenger or when uploading over a mobile network adds block artifacts, and the 1:1 comparison starts confusing similar people.

Camera angle hits especially hard: a head turn of more than 20-30 degrees, a tilt, a gaze to the side — the reference and the capture end up in different geometries, and the distance between features grows without any change of identity.

The second class of failures is camera and stream substitution. Virtual cameras, emulators, re-streaming of pre-recorded video, frame substitution at the driver level, or interception of the stream between the camera and the application.

If the check trusts only the picture, it cannot distinguish a live capture from a substituted one. That is why 1:1 comparison always goes hand in hand with liveness detection and stream integrity control — otherwise face verification becomes a formality.

The third is degradation on new devices. A model trained on one generation of cameras loses accuracy on newer sensors with different color reproduction, noise reduction, and lens geometry.

The manufacturer changes frame processing, while the comparison threshold stays the same — and the share of false rejections grows out of nowhere.

We close this off at the design stage: we tune thresholds to real shooting conditions, add frame quality control before comparison, and protection against camera substitution. Next — how this works in practice.

What correctly built face verification delivers

Correctly built face verification is measured not by the fact of deployment, but by four numbers: the share of successful first-attempt passes, the decision response time, the share of requests routed to manual review, and resistance to spoofing.

These metrics are interconnected — improving one without controlling the others almost always breaks a neighboring one.

The comparison accuracy is tuned to the task, not taken "by default." The similarity threshold is selected based on the error matrix: a false match (letting a stranger through) and a false mismatch (rejecting a legitimate user) have different costs for KYC and for app login.

At a calibrated threshold, the share of successful first-attempt passes stays at a level where support does not drown in "it doesn't recognize me" requests, and the control team does not have to manually sort through disputed cases.

Response time is not just the speed of comparison, but the entire request path: frame capture, quality check, feature extraction, comparison with the reference, and response.

When the heavy steps are performed on the device and only the result is sent to the server, the response fits within fractions of a second even on a weak channel, and the biometric reference never leaves the secure perimeter.

Manual review is not a rejection of automation, but its safety net.

If the system honestly routes only borderline cases to an operator, the share of manual reviews drops to single-digit percentages, and each such case arrives with clear context: why the threshold triggered, what the spoof check showed.

Otherwise, the operator becomes a bottleneck, and the customer response time grows linearly with the flow.

Resistance to spoofing is built in several layers: liveness detection cuts off photos and videos from a screen, depth and micro-movement analysis catches masks and deepfakes, and session binding prevents the stream from being swapped on the fly.

Each layer adds latency, so the balance between protection and response time is selected to match the risk profile of a specific scenario.

Face comparison methods: on-device, on-server, hybrid

The choice between local comparison, server-side comparison, and a hybrid scheme is not about "which algorithm is more accurate," but about where the reference template lives and what happens to the communication channel.

Local comparison is performed on the device: the template never leaves the smartphone, the response does not depend on the network, but the model is fixed in the app build — it cannot be updated without a release, and weak devices limit the allowable complexity.

Server-side comparison removes these limitations: the model is updated on the backend, quality improves regardless of the device fleet, but every frame travels over the network and response latency becomes a function of the channel.

The hybrid scheme separates the tasks: detection and liveness checks — on the device, final matching — on the server.

This relieves the load on the channel (not a stream of frames is transmitted, but a single prepared fragment), and data privacy remains manageable — raw video is not stored, only the verification result.

Option When it fits Limitations
Local comparison Offline scenarios, strict privacy requirements, weak or unstable channel Model is hardcoded into the build, updates only via app release, complexity ceiling on weak devices
Server-side comparison Online scenarios, frequent model updates, heterogeneous device fleet Response latency depends on the network, frames leave the device, channel protection and policy-based storage are required
Hybrid scheme Mass mobile apps where both response time and quality matter Harder to debug: an error must be localized on the device side or the server side

In practice, the mode is chosen along three axes: allowable response latency, data privacy requirements, and model update frequency.

If the model changes once a quarter — the local option is cheaper to maintain; if quality improves monthly — the server-side or hybrid approach provides headroom without app releases. We break down how this is addressed for a specific scenario.

Stages of turnkey face verification implementation

Implementing face verification is not about installing a library, but about configuring the process for your scenario: where capture happens, what the shooting conditions are, and what to do on a rejection.

Below is the sequence we follow to guide a project from the first review to handover into operation.

  1. Scenario audit. We analyze exactly where in the user journey the check sits: onboarding, app login, transaction confirmation. We record the constraints — low light, an old camera, an unstable network — because they determine the choice of model and the retry logic.
  2. Flow design. We design how data travels from the client to the solution and back: what is computed on the device, what goes to the server, where reference data is stored, and how access is organized. We separately describe behavior on connection loss and timeouts.
  3. Threshold tuning. We select the comparison sensitivity for your risk profile: a strict threshold reduces the probability of a false pass, while a lenient one reduces the number of legitimate users the system fails to recognize. We lock the balance in configuration, not in code.
  4. Validation on a dataset. We run the solution on a set of real photos and videos from your scenario — with varying lighting, angles, and device types. We measure the share of correct matches and false rejections, and look at where the model errs more often.
  5. Refinement based on results. We adjust thresholds, add frame preprocessing, and change the user prompts on a failed attempt. We repeat the cycle until the metrics reach the agreed level.
  6. Integration and load testing. We embed the module into your app and backend, and check behavior under peak load and with massive simultaneous verifications.
  7. Handover of documentation and regulations. We provide the architecture description, settings, operating instructions, and incident response procedure — so your team can maintain the solution without us.

Each stage ends with an artifact that can be verified: a diagram, a metrics report, a configuration. Describe your scenario — we will come back with an estimate and a plan for these steps.

Artifacts and documentation after implementation

After project handover, you are left not with a "folder of files" but with a working system: a deployed environment, configurations, diagrams, and the operating procedures your team uses to run it without our involvement. Below is a typical set for a 1:1 face verification service.

  • Service configuration: comparison threshold values, the set of active checks (face comparison, frame quality assessment, liveness detection), rules for handling disputed cases — all exposed as editable parameters rather than hardcoded.
  • Integration diagram: a map of flows between the mobile app, your backend, and the verification module — what data is transmitted and in what form, where biometric templates are stored, and where the trust boundary lies.
  • Access policies: roles and permissions for manual review operators, service accounts, and administrators, key rotation rules, and environment separation (test, pre-production, production).
  • Operating procedures: the process for updating models and thresholds, actions to take when accuracy degrades, a rollback plan to the previous configuration, and quality control checkpoints.
  • Event log and metrics: which events are logged (verification attempt, rejection, manual review, threshold change), in what format, and how they are exported for incident analysis and reporting.
  • Support instructions: scenarios for typical user requests, a diagnostic tree for "why was it rejected," and the escalation procedure to us in case of incidents.
  • Acceptance protocols: a set of test scenarios with reference results that you use to accept the system and later verify it after changes.

We hand over the set in your format — repository, wiki, or internal knowledge base — so that the documentation lives alongside the code and does not get lost. Everything described remains yours: you can evolve the service on your own or come back to us for further development.

Case study: reducing false rejections in a mobile app

What it was like before implementation

The client is a mobile app with mandatory identity verification at login. The check ran on a single frame from the front camera: the user took a selfie, and the system compared it with the photo from the document. On paper the scheme worked, but in production it did not.

The share of successful first-attempt passes hovered around 68%, and every third rejection was false: the person was real, the document was genuine, but the frame did not pass the similarity threshold.

The cost of the error was not just a frustrated user. False rejections went to manual review: operators manually compared the selfie with the document, and the queue grew faster than it could be cleared.

The average verification time reached 40 seconds, and peak load during evening hours stretched manual review into hours.

What was changed

We rebuilt the face verification pipeline: instead of a single frame, a series with quality control at every step. The system discards blurry and overexposed frames before comparison, not after, and selects the most suitable one for matching.

The similarity threshold stopped being uniform: it adapts to the image quality and document type, so real users pass while spoofing does not.

We separately reworked the logic of manual review. Only disputed cases with a clear reason for doubt enter the queue, not everything that fell short of the threshold.

The operator sees a series of frames and a label explaining why the system did not decide on its own — review sped up without losing strictness.

What it became

Metric Before After
Successful first-attempt passes ~68% ~94%
False rejections every third isolated cases
Average verification time ~40 sec ~6 sec
Volume of manual review queue grew at peak decreased severalfold

The project was implemented on the TrueTech platform. We separately tested rollback: if the new logic fails on some document type, the pipeline returns to the previous version without stopping user intake.

How does 1:1 verification differ from 1:N search?

1:1 verification answers the question "is this the same person they claim to be." The system compares two images — a reference from a document or a pre-saved template and a fresh frame from the camera — and returns a similarity score.

The decision is made by a matching threshold: above it — "match," below it — "not confirmed." False acceptance and false rejection are configured independently, and this is the key lever for the KYC scenario: the bank itself chooses what is more costly for it — letting a fraudster through or forcing an honest client to go through verification again.

1:N search solves a different task — finding who is in front of us among a database.

Here the frame is compared against millions of templates, and the output is either a match with a specific record or "not found." The error grows with the size of the database: the more people in the index, the higher the chance of a random hit, so the matching threshold for 1:N is always stricter, and the result is almost always reviewed by a human.

This is a tool for deduplicating a client base, access control at a facility, or investigation — but not for confirming identity during onboarding.

For KYC and mobile applications, the scenario is almost always 1:1, because the identity has already been declared: the client entered passport data, attached a document, and all that remains is to prove that the camera sees the same person.

The comparison is against the reference from the document, no database is needed — which means there is no risk of a false match with someone else's template. The check takes seconds on the client's device, and personal data does not leave the customer's perimeter.

Hybrid schemes are found when there is also a need to make sure that a person is not registered twice. Then 1:1 confirms identity, and 1:N against the internal database catches duplicates — but this is a separate stage with its own threshold and manual review of disputed cases.

They cannot be mixed in a single call: the scenarios have different costs of error, and configuring the matching threshold for one breaks the other.

Common technical concerns before starting

Before starting, the same questions almost always come up: whether the data quality is sufficient, whether the infrastructure will have to be rebuilt, and whether the model can be tested on your own scenarios before launch. Below are answers to the point, without generalities.

What should we do if we have few of our own photos and videos for training?

For 1:1 face verification, a large corpus is not needed: the model compares two images of the same person rather than searching for them among thousands.

The key is not volume but the diversity of conditions: different lighting, angles, headwear, and the quality of budget smartphone cameras.

We assemble a set from your real scenarios, supplement it with synthetic data and augmentation, and calculate metrics on a holdout set — one the model has not seen. That way you get an honest assessment, not a pretty number on training data.

Will we have to change our infrastructure and rewrite the application?

No. Verification is connected as a separate service with a clear interface: the mobile application sends a photo or a short video, and receives the comparison result and the confidence level.

It works both in the cloud and on your servers if the data must not leave your perimeter. Existing scenarios for login, registration, and document checks remain in place — we integrate into them rather than break them.

Can the solution be tested on our own data before signing the contract?

Yes, and that is the right order of work. You provide an anonymized set of your cases, we run it through the model and show the metrics: the share of correct matches, false rejections, and false acceptances.

We also look separately at behavior on difficult pairs — twins, similar-looking people, old photos. These numbers show whether the solution fits your risk threshold and where an additional verification step is needed.

How is support organized after launch?

The model degrades imperceptibly: cameras, lighting, and user behavior change. That is why we set up monitoring of the score distribution and the rejection rate, and roll out updates through shadow mode — the new version first runs in parallel with the old one.

If the metrics drop, rollback takes minutes. You get not a one-time delivery but a working system with a clear update procedure.

Let's discuss your face verification task

To come back with an estimate and a plan rather than generalities, we need to understand your verification scenario: where exactly the comparison happens — during onboarding in the app, at login to a personal account, when confirming a transaction — and what counts as a pass and what counts as a rejection.

This determines the match threshold, the set of anti-spoofing checks, and how the system behaves in poor lighting, with glasses, or with a partially covered face.

Describe the task in your own words — we'll then clarify the details and come back with an estimate and a phased work plan.

  • Where the check takes place: mobile app, web account, issuance point, integration with an external service.
  • What we compare: a selfie with a document, two images, an image with a reference from your database.
  • Which documents and languages are in use, whether there are regulator requirements for storing images.
  • Volumes: how many checks per day at peak and how many users in the database.
  • The acceptable share of manual review and what to do with borderline cases.
  • Where we integrate: your own infrastructure, a closed environment, or the cloud.
  • Timeline: by what date you need a working scenario and when you plan load testing.

Based on these answers, we assemble the flow diagram, choose the comparison model and thresholds, determine where a human operator is needed, and fix a plan with checkpoints.

The estimate comes with a breakdown by stage and an indication of what will be required on your side — access, test data, a point of contact.

Write a couple of paragraphs about your scenario — we'll come back with an estimate and a plan.

AI Development Areas

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1393
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1368
  • B2B Advance company logo design
    B2B Advance company logo design
    815
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1139
  • AIDER company logo development
    AIDER company logo development
    1057
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1152