Runa Check-In Hackathon
Presente
Platform Edition
One word answers roll call. One router picks the channel. One event answers payroll.
García, M. — Línea 2kiosk · presente ✓
López, J. — Obra Nortemobile · presente ✓
Reyes, A. — 08:03mobile · presente ✓
The problem · two layers

Companies pay for hours nobody worked — and for the wrong channel.

2.2% of gross payroll lost to buddy punching alone (Nucleus Research, US WFM studies). Broader time-theft estimates range 1.5–5% by methodology. ~74% of employers report buddy-punch payroll losses.

Industry benchmarks · US-centric · LatAm figures may vary

100-person field crew → tens of thousands per year in hours never worked.

Buddy punching Location fraud Wrong channel per role

Layer 1 — fraud: buddy punching and spoofed GPS at the punch.

Layer 2 — mis-routing: a mobile app forced on a factory floor where phones are banned; web given to field crews that need real GPS.

Each channel emits a slightly different event → phantom overtime, missed shifts, payroll errors.

What makes us different

Selfie + GPS is table stakes. A router + one event is the idea.

Context picks the right channel for each worker. Every channel produces the exact same event — so payroll only ever sees one clean format.

📱Mobile app
🖥️Kiosk
🌐Web
💬WhatsApp
▼ ▼ ▼ ▼
⚙ ContextRouter — worker context decides the door
{ employee_id, type: IN, ts_utc, timezone, location, channel_id, fraud_flags, device_id, routing_context }

Four doors. One router. One clean record.

Decoupled architecture

Pluggable channels. Context picks one. T&A stays the same.

Channel Adapters · plug-in

📱Mobile
🖥️Kiosknext
🌐Web
💬WhatsApp
▼ ▼ ▼ ▼

Check-In Core · Runa owns this

ContextRouter FraudPolicy Normalizer OfflineQueuesoon

Downstream · unchanged

T&A EnginePayroll Export

Tap a context — watch which channel the router picks:

Presente unifies the record. The router unifies the platform.

The mobile app · UX demo

The app that answers for itself.

A Runa account required — lightweight iOS/Android app, field-facing front end of the platform (not a standalone time clock).

  • Punch in/out from geofenced sites or anywhere, per policy — synced to Runa
  • Selfie at punch + live GPS — admins monitor punches and see exact lat/long on a map
  • Routed here because Andrés is field crew, multi-site — only mobile gets SDK anti-fraud

↘ Simulated punch — live GPS + camera PoC next

PRESENTE08:03
Hola, Andrés
Cuadrilla 3 · Obra Monterrey Pte.
⚙ routed: mobile · field crew
08:03
📍 25.6866, -100.3161
¡Presente!
08:03 AM
Andrés Reyes · verificado
Same core, next adapter

The factory floor plugs in next.

Estimated mix: 72% deploy kiosk/tablet (LatAm enterprise & mid-market). Same event, same core — a different adapter at the door.

Estimated deployment mix · checkin.md §5.1 · not mutually exclusive

  • Android tablet — no personal phone required
  • Site ID as location — not GPS
  • Fingerprint or face + liveness
  • Screen clears in 3s — shift-change throughput

↘ Preview — tap Clock in

Roadmap · sprint 2
EN SITIOSITE-QT-PLANT-0206:58
María Gómez
Line 2 · Querétaro Plant
👆
06:58
CLOCK IN · IN
On site!
06:58 AM
María Gómez · verified
Anti-fraud · per channel

Different rules. One engine.

FraudPolicy runs after the router, before the normalizer — each channel gets rules it can actually enforce.

📱 Mobile demo · Q3

SDK mock-GPS / VPN / emulator detection + device binding + geofencing that blocks punches outside the fence + live GPS + selfie liveness. Field-grade — the only channel where we truly trust location.

🖥️ Kiosk

Liveness + fingerprint/face + physical choke point. Location = fixed site ID. Lowest fraud risk in LatAm.

🌐 Web

IP allowlist + session binding. Medium trust — the router already limited the audience to desk staff.

💬 WhatsApp

OTP + manual photo review. trust_tier: low — secondary channel, not payroll-grade on its own.

Geofencing alone is not enough — a free mock-GPS app places a phone anywhere inside the fence. SDK detection is the real defense.

The legal line we cannot skip

Consent at enrollment, not on every punch.

Required under LFPDPPP (MX) · LGPD (BR) · Ley 25326 (AR) · Ley 1581 (CO).

An onboarding ritual, not a blocking screen on every check-in. Our biggest exposure, turned into proof we know the market.

Honest scope

What we'll show — and what's roadmap.

Normalized event updates with router context (toggle on slide 4):

Friday demo

  • Interactive router (slide 4) ✓
  • Mobile punch UX preview (simulated) ✓
  • "¡Presente! ✓" confirmation ✓
  • Event JSON + routing_context (router) ✓

Live GPS + camera PoC — after team discussion

One channel done beautifully on a decoupled core > six half-built ones.

Why it's worth building

Presente

For customers

Stops buddy-punch and time-theft losses (industry estimates 1.5–5% of payroll), survives a LatAm labor inspection, and gives every workforce segment the right check-in — one audit trail regardless of channel.

For Runa

Q3 ships mobile + the decoupled core. Every future channel — kiosk, web, WhatsApp, ZKTeco — is a sprint, not a rewrite. A platform play, not a single app.

Why "Presente": in LatAm roll call you answer "¡Presente!" — the exact word for being counted. It doubles as the confirmation screen: Presente ✓ 8:03 AM. The router makes sure the right person says it, through the right door.

Q&A

Questions we'd expect.

Tap to expand — same answers we'll give live.

What about factory workers who can't carry phones?

The router sends them to the Kiosk adapter (sprint 2) — Android tablet, fingerprint/face, site ID as location. No personal device required.

Why ship mobile first if 72% deploy kiosk?

72% is estimated deployment mix — many orgs run multiple channels. Mobile is the fastest path to a trustworthy live demo and covers field crews. Construction and manufacturing see the highest buddy-punch rates; field crews face the top GPS-spoofing risk on mobile. Kiosk plugs in next without a rewrite.

Isn't web location fakeable?

Yes — browser location is imprecise, overridable by extensions, and has no mock-GPS detection. That's why web is the weaker door: the router sends desk staff on corporate Wi-Fi to web only. Field crews get mobile — the only channel where we can run SDK anti-fraud, device binding, and live GPS we actually trust.

Doesn't ZKTeco already do this?

ZKTeco is one external adapter. Runa owns the core: router, FraudPolicy, LatAm compliance, and payroll export (IMSS, eSocial, AFIP).

Gracias
Gracias
Presente — one word answers roll call. One router picks the channel. One event answers payroll.