At a glance
| Category | Human Resources / Attendance |
| Compatibility | Odoo 16.0 · 17.0 · 18.0 Community & Enterprise — select your version above. |
| What ships | ~5 MB .zip per version — bundled face-api.js library + all 7 model weight files (tiny detector + 68-landmark + recognition). No manual download_models.sh, no SSH-side setup. Unzip, install, kiosk works. |
| Price | $249.00 USD · one-time purchase, no recurring |
| Setup time | ~ 30–60 minutes for a typical Odoo install (unzip → restart → activate → enroll your first employee) |
| Included | Module .zip with bundled model weights + Setup Guide PDF (attached to your receipt email) + email installation support for 7 days |
| Add-ons | Module Installation & Setup (1h, $150) · Priority Support (1h within 90 days, $150) |
| License | LGPL-3 · install on any Odoo instance you operate |
| Delivery | Single-use signed download link emailed the moment your payment confirms. Link expires in 7 days; free re-issue if you lose it. See Terms. |
What you get
Browser-based facial-recognition kiosk for Odoo HR Attendance. Employees clock in & out by standing in front of a camera-equipped tablet — no fobs, no badges, no cloud AI service, no PII leaving your network. Available natively for Odoo 16, 17, and 18.
How it works
Mount a tablet at the entrance, open the kiosk URL, and employees clock in by being recognized. face-api.js (TensorFlow.js underneath) runs the inference in the browser — no cloud API calls, no per-recognition cost, no photos leaving the device. Stored embeddings are 128 floats per employee, not photos, so they cannot be reversed into a face image.
Key features
- Local inference — All recognition runs in the browser. No cloud AI service, no per-frame cost, no PII over the wire.
- Per-employee enrollment — HR takes 1-3 photos from the employee form. Re-enroll anytime if appearance changes (glasses, haircut, lighting).
- Configurable confidence threshold — default 70%, adjustable in Settings → Attendance → Face Recognition.
- Health dashboard at
/face_recognition/health— recent attendance events, cache status, force-refresh button. - Privacy by design — Embeddings are 128 floats per employee, not photos — irreversible. Optional retention policy on enrollment photos.
- Standard hardware — Any USB webcam or built-in laptop camera. Any modern browser (Chrome 90+, Firefox 88+, Safari 14+) with WebRTC + WebGL.
- Manager-only admin API — Cache status, force-refresh, recent face-recognition logs.
Architecture per version
- Odoo 16 build — Legacy
odoo.defineJS modules (backend AbstractAction kiosk + FormController-based registration wizard). Battle-tested. - Odoo 17 build — Same architecture as v16, with the
ensure_dbimport path updated toodoo.addons.web.controllers.utils. Legacy JS still loads via Odoo 17's@web/legacycompatibility shim. - Odoo 18 build (native) — Full rewrite. Vanilla ES6 IIFE modules served as plain
<script>tags inside the rendered website templates. Noodoo.define, noweb.AbstractAction, no OWL component instantiation. Registration is a dedicated website page (/face_recognition/register/<employee_id>) opened from the employee form in a new tab. Health dashboard is a public-with-auth-check website page (/face_recognition/health). View XML migrated from the deprecatedattrs="{...}"syntax to direct attribute form. Faster page load, fewer Odoo framework surprises on upgrades.
What's NOT included
- The camera hardware (any USB webcam or built-in laptop camera works).
- The tablet / kiosk hardware.
- Cloud AI services — this module is local-inference only by design.
- Liveness detection (anti-spoofing). A printed photo could trick the current matcher. Add a passive blink-check in v3 if your environment is high-risk.
- Encryption at rest of the embeddings. They are stored as base64 JSON. Use Odoo's standard field-level encryption add-ons if your jurisdiction requires it.
Roadmap
- Liveness detection — passive blink check (planned).
- Multi-location kiosk routing — IP / geofence-based rules (planned).
- OWL backend dashboard for v18 — replace the vanilla-JS health page with a richer in-backend OWL component (planned).