FaceVision started from a constraint I set for myself before writing a line of code: raw pixels never leave the device. Detection, embedding and anti-spoofing all run client-side via ONNX Runtime Web. The backend only ever receives coordinates and vectors.

Real models, verified, not assumed

YuNet handles detection, SFace handles recognition (96.9% verified accuracy on LFW), and MiniFASNet handles anti-spoofing. All three were checked byte-for-byte against their ONNX graphs and reference C++ source — not assumed correct from documentation, actually verified.

What "privacy by design" means in practice

It's not a policy statement, it's an architecture decision that removes a whole category of breach: if the server never stores an image, an image can never leak from the server. The stored artifact is a 512-dimension embedding — useful for matching, useless for reconstructing a face.

Testing a vision pipeline for real

260+ automated tests across frontend and backend, plus a real load test against production. Vision code is easy to demo and hard to trust — the gap between the two is testing.

The lesson for anyone building computer vision

Ask what the server actually needs to store before you write the upload endpoint. Most face or document apps default to storing the original image because it's the path of least resistance, not because the feature requires it. Ninety percent of the time, a derived representation is enough — and it's the difference between a privacy incident and a non-event.

Live demo and engineering checklist: github.com/Pranjulrathour/FACEVISION-NEXTUPGRAD-.