Skip to content
05 / Vision

Vision that never uploads a face.

FaceVision runs face detection, recognition and liveness entirely in the browser with ONNX Runtime Web. Camera frames never leave the device; the backend stores compact embeddings and matches them on enrolment and verification.

Inference
On device, ONNX Runtime Web
Liveness
Defeats photo replay
Storage
Embeddings only, zero images
Backend
FastAPI, PostgreSQL, TypeScript
01

Why in the browser

The privacy story is simple to explain and simple to audit.

Most face-recognition products ship frames to a server and ask users to trust what happens there. FaceVision does the detection, recognition and liveness check on the device, then sends only a compact embedding to the API. Because no image is ever persisted, the privacy story fits in one sentence, and an audit can confirm it.

  • Detection, recognition and a liveness check in the browser, with ONNX Runtime Web.
  • Enrolment and verification match vector embeddings in PostgreSQL.
  • Photo replay is caught by the liveness step before anything is compared.
02

Where it fits

The shapes of product this pattern suits.

  • Attendance and access

    Enrol once, verify on each visit, without a server-side photo archive to protect.

  • KYC-style checks

    A liveness step before matching, and an embedding store that is useless if leaked.

  • Kiosks and low bandwidth

    Inference happens locally, so the API call is a few kilobytes, not a video stream.

03

Gallery

FaceVision.

Building something that sees?

Vision, OCR or speech: I can scope it with you in twenty minutes.