Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Attendances
  3. Face Kiosk Attendance v 19.0
  4. Sales Conditions FAQ

Face Kiosk Attendance

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 19.0 Third Party 10
Download for v 19.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Attendances (hr_attendance)
• Discuss (mail)
• Employees (hr)
Community Apps Dependencies Show
Attendance Suite Base
Lines of code 3119
Technical Name eh_hr_face_kiosk
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Attendances (hr_attendance)
• Discuss (mail)
• Employees (hr)
Community Apps Dependencies Show
Attendance Suite Base
Lines of code 3119
Technical Name eh_hr_face_kiosk
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
ERP Heritage
ERP Heritage · Attendance Suite
Face kiosk

Face Kiosk Attendance

Real biometric clock in for Odoo 19 Community. The browser captures a face, generates a 128 dimension numeric embedding, and sends only that to the server. The server runs a cosine match against active templates, posts to hr.attendance, and writes the audit trail. Raw images never leave the device.

Odoo 19 Community v19.0.1.0.0 LGPL-3 Human Resources / Attendances
Browser embedding
Cosine match
No image leaves device
Self hosted
BUILT FOR
Sites with a reception tablet, a workshop iPad, or a depot ChromeOS box where workers should clock in by face rather than badge or PIN
SAVES YOU
A bespoke kiosk integration, a third party face SaaS, and the privacy headaches of routing raw frames through a cloud vendor
REPLACES
Buddy punches at the punch clock, lost RFID badges, and the spreadsheet someone keeps to fix the times manually

Day in the life

A worker walks up, looks at the tablet, and the day starts.

The reception tablet sits at the front door open to /eh_hr/kiosk/<site code>. A worker walks up. The browser asks for camera permission once on first run. face-api.js detects a face, generates a 128 float embedding locally, and POSTs the embedding to the server with the kiosk token. The server cosine matches against active templates for the company; on a hit it creates an hr.attendance check in or closes the open one. The kiosk shows the worker's name, ticks, and resets to the welcome screen. Raw frames stay on the device.

Overview

What this module does, in one read.

eh_hr_face_kiosk turns any browser with a camera into a self hosted face attendance kiosk for Odoo 19 Community.

The browser does the embedding, the server does the match, and the suite base does the consent and audit. No third party cloud, no per employee subscription, no proprietary firmware. The kiosk runs out of your Odoo at /eh_hr/kiosk/<site code>; the site, device, and token live on the suite base.

eh_hr_attendance_base hr_attendance
Module
eh_hr_face_kiosk
VERSION
19.0.1.0.0
LICENCE
LGPL-3
EMBEDDING
128 dim, JSON
CATEGORY
Attendances

Capabilities

Ten things this module gives you, with no padding.

CAPABILITY 01

In browser embedding

face-api.js loads once, captures a face from the device webcam, and generates a 128 float embedding locally. Only the embedding is sent to the server. Raw frames and intermediate images never leave the device.

CAPABILITY 02

Server side cosine match

The /eh_hr/kiosk/face/match controller normalises the incoming embedding and compares it against active templates for the device's company by cosine distance. The configurable match threshold defaults to 0.55; below threshold a low confidence exception is raised.

CAPABILITY 03

Multi sample enrolment

The HR enrolment wizard captures three to five samples and stores them as separate eh.hr.face.template rows. The match engine compares the incoming embedding against every active sample, so varied lighting, angle, and minor appearance changes still match.

CAPABILITY 04

Hard linked to consent

Every template is required to point at a granted face consent record for the same employee. A constraint refuses to reactivate a template whose consent is not granted. Privacy by design, enforced in code.

CAPABILITY 05

Optional per site geofence

Sites can opt into a centre point and radius. The match controller refuses to clock in a worker outside the radius and raises a geofence violation exception. Pass and fail outcomes both land in the audit trail.

CAPABILITY 06

Consent withdrawal cascade

Withdraw face consent on the employee record and the matching templates can no longer be reactivated. The match path filters for consent state granted at every search, so a withdrawn consent stops matching the moment it is written.

CAPABILITY 07

Auto toggling check in and check out

On a successful match the controller looks up the worker's open hr.attendance row. Open row found, it closes it. No open row, it creates a check in. The kiosk does not need a separate in or out button.

CAPABILITY 08

Authenticated kiosk endpoints

The match endpoint requires the X-EH-Kiosk-Token header issued by the suite base pairing flow. The token resolves to a device, which resolves to a site, which resolves to a company. Cross company match is impossible at this layer.

CAPABILITY 09

Every attempt audited

Each match request writes to eh.hr.kiosk.event: the attempt, the success or failure, and the resulting attendance check in or check out. Below threshold matches log the best distance for diagnostics.

CAPABILITY 10

Hardware agnostic

Any modern device with a camera and a Chromium, Firefox, or Safari based browser running on the local network. iPad, Android tablet, Windows PC, ChromeOS box, Linux thin client. No app install. No vendor firmware.

Compared

How this module stacks up.

FEATURE
PIN OR BADGE KIOSK
CLOUD FACE SAAS
THIS MODULE
Where the recogniser runs
No recogniser
Vendor cloud
Browser embeds, your Odoo matches
Where raw images travel
No images
Uploaded to cloud
Stay on the device, never network
Buddy punch defence
Easy to defeat
Vendor dependent
Face match plus optional liveness
Audit trail
Stock chatter
Vendor managed cloud log
Append only, in your database
Hardware
Vendor terminal
Vendor terminal or BYOD
Any modern browser with a camera
128
Embedding dimensions
JSON serialised float array, validated by the model constraint at write time.
3-5
Samples per enrolment
Captured by the OWL widget, stored as separate template rows for varied lighting and angles.
0.55
Default match threshold
Cosine distance ceiling. Configurable per company under People Operations > Settings.

Workflow

Install. Set up face-api.js. Enrol. Clock in.

Four steps, the same shape every other module in the suite uses.

1

Install

Pick eh_hr_face_kiosk in Apps. The suite base, hr_attendance, and the consent infrastructure come along automatically via the dependency chain.

2

Drop in face-api.js

The face-api.js model files are not bundled (about six megabytes; operators may want a specific release). Run the static/lib/face-api/README setup once and the kiosk picks it up.

3

Enrol

From the employee record, run the enrolment wizard. Capture three to five samples, acknowledge the consent text, save. The face consent is granted in the same transaction.

4

Clock in

Open /eh_hr/kiosk/<site code> on the reception tablet. Workers walk up, the browser handles the capture, the server handles the match.

Why Heritage

Where this module leads, where it matches, what we are honest about.

Where it leads
  • Browser embeds, server matches; raw frames never network
  • Templates hard linked to a granted consent
  • Kiosk endpoint hardened by device token, scoped to a company
Where it matches
  • Standard hr.attendance check in and check out
  • Multi company isolation by record rule
  • Suite namespaced privilege groups for ACL
Honest about
  • face-api.js model files are not bundled; one time setup required
  • Comfort zone for the Python match loop is up to a couple of thousand templates per company; beyond that an index is the right answer
  • Base face match alone does not stop a printed photo; pair with the liveness module for that

Engineering

Six engineering rules we hold ourselves to.

Browser does the embedding.Raw frames never reach the network. Only the 128 float embedding goes to the server.

Embedding validation at write time.Constraint checks JSON, list shape, dimension match, and numeric values. Bad embeddings are rejected on the model, not at the controller.

Consent before template.Templates require a granted face consent on the same employee. Reactivation refuses if the consent is no longer granted.

Token scoped to company.Device token resolves to a device, site, and company. Cross company match is impossible at the controller.

Every match writes audit rows.Attempts, successes, failures, geofence pass and fail, attendance in and out: each becomes an immutable kiosk event.

Capability focused descriptions.No competitor names in code or docs. Every claim describes what the module does, not what it replaces.

Frequently asked questions

Honest answers to the questions a buyer asks.

Does this run on Odoo 19 Community?

Yes. Standard hr.attendance and ORM, no Enterprise gates. The kiosk is a public route protected by the device token.

Do raw face images leave the device?

No. The browser runs face-api.js to produce a 128 float embedding locally and sends only that to the server. The server cannot reconstruct the original image from the embedding.

What hardware does it need?

Any modern device with a camera and a Chromium, Firefox, or Safari based browser on the local network: iPad, Android tablet, Windows PC, ChromeOS box, Linux thin client. No app install, no vendor firmware.

Why is face-api.js not bundled?

The model files are roughly six megabytes and many operators want to pin a specific release. The module ships a static/lib/face-api/README with the one off setup steps; once dropped in, the kiosk picks them up automatically.

How accurate is the match?

The default cosine distance threshold is 0.55, configurable per company. Below threshold a low confidence exception is raised and the kiosk asks the worker to retry. Multi sample enrolment keeps recall high under varied lighting and angles.

Does it scale?

The Python cosine match comfortably handles dozens to low hundreds of templates per company per kiosk hit. Past roughly two thousand templates per company an index becomes the right answer; that work is on the roadmap, not in the box today.

What stops a printed photo of someone's face?

Pure face match alone does not. Install eh_hr_face_liveness alongside this module for an active blink check before capture, which defeats low effort photo attacks. For higher security exposure, pair the kiosk with a paid passive liveness vendor.

ERP Heritage

Questions about the suite or this module:

info@erpheritage.com.au

Module: eh_hr_face_kiosk · Version 19.0.1.0.0 · Licence LGPL-3

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Please choose a rating from 1 to 5 for this module.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with