Facial and fingerprint matching engines are among the most specialised components in any identity system. They are developed by dedicated vendors, evaluated independently and licensed under specific terms. For most programmes the right decision is to integrate a proven engine rather than build one.
That makes the integration layer one of the most important pieces of software you own.
Keep vendor specifics behind a stable contract
Applications should never call a vendor SDK directly. We define a neutral internal contract — enrol, verify, identify, assess quality — and implement vendor adapters behind it. Workflow code understands templates, scores and thresholds as concepts, not as one vendor’s data structures.
The payoff comes later. Upgrading an engine version, running two engines side by side for evaluation, or replacing a vendor becomes a contained engineering task instead of a rewrite.
Treat thresholds as governed configuration
A match threshold is an operational policy decision with real consequences for false matches and false non-matches. It should be versioned, approved and auditable — and every decision record should store which engine, version and threshold produced it.
Evaluate in your own conditions
Published benchmark results are a valuable starting point, but capture devices, lighting, population and procedures all affect real-world performance. Before go-live we help clients run structured evaluations on representative, lawfully obtained data within their own environment.
Be precise about who owns what
The matching algorithms remain the vendor’s intellectual property. The integration services, workflow logic and audit model are developed for the client. Biometric data remains under the authority’s control and policy. Writing these boundaries down early avoids difficult conversations later.
Questions worth asking before you integrate:
- Can we run a second engine in parallel for evaluation?
- Where are templates stored, and in which format?
- Which component records the decision and the parameters behind it?
- What does the workflow do if the engine is unavailable?