Skip to content

Liveness reject floor; searchable country screen with the full country list - #11

Merged
3m1n3nc3 merged 3 commits into
mainfrom
feat/liveness-floor-country-filter
Oct 21, 2026
Merged

3m1n3nc3 merged 3 commits into
mainfrom
feat/liveness-floor-country-filter

Conversation

@3m1n3nc3

Copy link
Copy Markdown
Member

Summary

Liveness reject floor. After 2.3.5 fixed the framing, a real person on a laptop webcam scored realProbability 0.46 with a correct crop (faceHeightRatio 0.37, cropScale 2.42), and was still declined.

  • New per-project livenessRejectThreshold, default 0.2, set under Settings → Verification thresholds.
  • A failed check is declined only when it scores below the floor (a clear spoof). From the floor up it's borderline and goes to manual review (LIVENESS_LOW_CONFIDENCE).
  • The floor may not sit above livenessThreshold, enforced by the API and the dashboard.
  • A failed challenge sequence now scores 0 in the local and mock drivers, so it's always declined.

Searchable country screen.

  • The country step is now a search box over a scrollable list. It matches names from the start of any word and ignores accents ("cote" finds Côte d'Ivoire), or matches a two-letter code. The preselected country is shown first, highlighted.
  • The list was missing about 50 issuing countries and territories (Côte d'Ivoire, Palestine, Kosovo, Taiwan, Hong Kong, Puerto Rico…). It's regenerated from the ISO 3166-1 regions plus Kosovo, which gives 250, alphabetically. Deprecated alias codes are excluded.

Tests

  • Decision engine: decline below the floor, review at or above it, review for a failed check even with a high score, and a per-project override.
  • API: saves the floor, and rejects a floor above the liveness threshold.
  • Widget: search by name, accent-insensitive search, search by code, the no-results message, preselection, and changing the country.
  • core: 50 passed. widget: 90 passed. API: 263 passed.

A failed liveness check is declined only below livenessRejectThreshold
(default 0.2, a clear spoof); from the floor up it is borderline and goes
to manual review. Laptop webcams often score just under 0.5 on a real
person, which used to be an automatic decline. The floor may not sit
above the liveness threshold; it is editable in the dashboard. A failed
challenge sequence now scores 0, so it is always declined.
The country step is a search box over a scrollable list, matching names
from the start of any word and ignoring accents, or a two-letter code,
with the preselected country on top. The list was missing about 50
issuing countries and territories (Cote d'Ivoire, Palestine, Kosovo,
Taiwan, Hong Kong, ...); it is regenerated from the ISO 3166-1 regions
plus Kosovo, alphabetically.
@3m1n3nc3
3m1n3nc3 merged commit 18f09f3 into main Oct 21, 2026
2 checks passed
@3m1n3nc3
3m1n3nc3 deleted the feat/liveness-floor-country-filter branch October 21, 2026 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant