Is that really you?
Five seconds to find out.
Record a short clip and the demo checks whether your face matches the photo on a specimen driver's license, and whether it is a real, moving face rather than a photo. Face detection and recognition run on CPUs that Chalk deploys from a single Python file.
Verify yourself
Press Use my face to put your photo on a specimen license, then Record and turn your head when prompted. Pick a sample license instead to see a mismatch. Frames are compared in memory and never stored.
How it works
Two questions decide the verdict: is this the same person as the photo, and is it a live person in front of the camera? Each has its own score and threshold.
Find the faces
YuNet locates the face on the license and in each of 15 frames sampled from your 5-second clip, along with five landmarks: eyes, nose tip and mouth corners.
Compare identities
SFace aligns each face on its landmarks and turns it into a 128-number embedding. Cosine similarity against the license face is scored on the most frontal frames.
Check for a real head
Across the clip, the nose should move toward one eye and then the other as you turn. A flat photo held up to the camera barely moves it, so it fails liveness.
Deploy your own in three commands
Clone the example, log in, and run the deploy script. Chalk builds the image with both models baked in, starts a two-CPU replica, and prints a URL that serves this exact demo in a few minutes.
The API takes one license image and a handful of frames, so the same deployment can sit behind an onboarding flow, a support tool, or a fraud model as one more feature.
chalk-ai/id-verificationgit clone https://github.com/chalk-ai/id-verification
cd id-verification
# Or export CHALK_CLIENT_ID and CHALK_CLIENT_SECRET.
chalk login
# Builds the image, starts a CPU replica, prints your demo's URL.
./deploy.pyWhat Chalk handles
The models are the interesting part. Everything around them is the part Chalk does for you.
No GPU required
Detection and recognition run on two CPUs with OpenCV. Fifteen frames take about half a second.
Images from Python
Image.debian_slim().pip_install(...) builds the container with both models baked in. No Dockerfile, no registry to manage.
Private by construction
Frames are compared in memory and discarded with the response. The server logs scores and timing, never images.
Runs in your cloud
The replica runs in your Chalk environment, so faces never pass through a third-party API.
Explainable decisions
Every verdict comes with the similarity score, the threshold, the head-turn range and per-frame results.
Five files, open source
The server, page, deploy script, sample portraits and a command-line client are Apache-2.0 on GitHub.
This is a demo, not an identity product. The head-turn check stops a still photo, not a video replay or a deepfake, and face recognition accuracy varies across people, cameras and lighting. Use faces only with consent and follow the biometric privacy laws that apply to you.
Put identity signals next to your features
Face match, liveness, device and behavior signals feed the same fraud and risk models. Talk to an engineer about serving them in your cloud.