Visit & attendance · Phase 1 live

Every visit, every check-in, signed and logged.

Weselt is the visit and attendance platform your organisation runs on. Scan a QR to clock in, send an engineer to a partner, host a visitor at HQ — every event is GPS-verified, timestamped, and auditable.

4 apps · API · Mobile · Admin · Web portal Built with Expo · React · Postgres EN / ع AR
Weselt mobile — Scan QR
Weselt mobile — Home dashboard
Weselt mobile — New visit
5-step
Trust workflow
100m
Default geofence radius
60s
Late-alert poll cycle
EN / AR
Bilingual end-to-end
What's inside

One platform for every door your team walks through.

Attendance at head offices and factories. Engineers visiting partner sites. Visitors arriving at reception. Same scan, same audit log, same source of truth.

QR check-in & out

Scan a per-location QR at the door. Geofence + double-scan protection prevent fakes. One open shift per employee — the next scan elsewhere closes it cleanly.

Phase 1 · Live

Outgoing site visits

An engineer files a visit to a partner contact. The contact accepts via a magic link. Arrive scan opens the visit, depart scan closes it — host and HR get notified at every step.

Phase 2 · Live

Incoming visitor passes

An employee invites an external contact. The visitor gets an email with a one-time QR. Reception scans on arrival — the host is pushed, the pass page flips to "Checked in" in real time.

Phase 3 · Live

GPS-anchored geofences

Each location carries lat/lng + radius. Distance Matrix powers real ETAs; haversine is the fallback when offline. Late visits trigger CC'd alerts after a per-partner grace window.

Background jobs · 60s

Immutable audit trail

Every scan, accept, decline, correction, and late-alert writes a row to weselt_audit_events with before/after payloads. HR corrections are stored on the row; history is never overwritten.

Tamper-evident · CSV export

Push + email notifications

Expo push to mobile, Nodemailer over M365 SMTP for email. Per-event CC rules: visit accepted, declined, late-alert, visitor arrived. Sender templates live in EN and AR.

5 events · 2 languages
Built for everyone

One product, five workspaces.

Each role sees only what they need — the mobile app for employees and engineers, the admin dashboard for HR and reception, the web portal for partners.

Employees

Open the mobile app, scan the HQ or factory QR, and you're checked in. Your history and corrections live in the app.

Mobile app

Engineers

File outgoing visits to partner sites. Track ETA, scan on arrival and departure, file a follow-up note when you leave.

Mobile app

HR & admin

Live-now boards, attendance corrections, location & QR management, notification rules, full audit export. Reception & manager roles inherit the views they need.

Admin web

Reception

"Currently inside" and "Expected today" auto-refresh every 30s. Scan a visitor's one-time QR to mark arrival; the host gets pushed instantly.

Admin web

Partner contacts

No app, no login. A magic link drops them on the bilingual web portal where they accept, decline, or watch their pass flip from expected to checked in.

Web portal
How it works

Two flows, one audit trail.

Outgoing — your engineer goes to a partner's site. Incoming — an external visitor comes to your location. Same scan engine, same event log, same notifications.

Outgoing site visit

Engineer → Partner site

1
Engineer · mobile

Create the visit

Search partner, pick a contact, set planned time. Submit.

2
Partner contact · email

Accept via magic link

A bilingual portal opens; they accept, decline, or reschedule. Browser geolocation pins the destination.

3
System

ETA + late-alert armed

Distance Matrix returns the ETA. If arrival hasn't happened by eta + grace, the late-alert job fires.

4
Engineer · mobile

Scan to arrive · scan to depart

The partner's site QR records arrival and departure inside the geofence. Host pushed on each event.

5
Audit

Closed & logged

visit_request_sent · visit_accepted · visit_arrived · visit_departed — appended to the trail.

Incoming visitor

Host → External contact

1
Host · mobile

Invite a visitor

Pick the partner, the contact, the location, and the time. Send.

2
Visitor · email

Receive the pass

A bilingual page shows the one-time QR, host name, location, planned time. The page polls for live status.

3
Reception · admin web

Expected today

The Reception console auto-refreshes every 30s. Today's incoming visits queue up with their status.

4
Reception or host · mobile

Scan to enter

Geofenced to the site location. Visitor's pass flips to "Checked in"; host gets a push.

5
Audit

Inside → departed

Departure scan clears them from "Currently inside". Visit complete; pass page closes.

The app

Designed for the door, the lobby, the road.

Three taps from launch to a check-in, an invite, or a scan. The mobile app supports employees, engineers, reception, and managers — what each role sees is what each role can do.

Weselt mobile — Home dashboard
Home · Live now

The org, on your lock screen.

Visitors on site, open shifts, today's visits — the live count refreshes every 30 seconds.

Weselt mobile — All visits
Engineer · All visits

Every visit, filtered fast.

Today, this week, arrived, sent, no-show — triage in one glance with status chips.

Weselt mobile — New visit invitation
Host · New visit

Magic-link invitation in seconds.

Inbound or outbound. Pick the partner, contact, host and time — the visitor gets a one-time QR pass by email.

Weselt mobile — Scan QR
Scanner · QR

One scanner. Every door.

Check in to a shift, verify a visit, or open a partner site code — the same camera, geofence-validated each time.

Weselt mobile — Reception console
Reception · Front desk

A roving front desk.

Switch between expected arrivals and visitors currently on site. Check people in or out with one tap — no kiosk needed.

Weselt mobile — Profile
Profile · You

Your year in visits.

Hosted, partners, show-rate. Language, notifications and appearance — tuned per device.

Operations · in your pocket

Reception, alerts and incidents — live, on the floor.

HR and reception don't sit behind a kiosk anymore. Pull out a phone, scan a visitor in, triage an unaccepted arrival, clear a shift left open overnight. The whole desk is mobile.

Notifications Every accept, decline, arrival and late-alert — pushed in real time, scoped by role.
Incidents queue Late check-ins, overnight shifts, unaccepted arrivals — open / resolved at a glance.
Reception, anywhere Expected today vs currently on site. One-tap check-in pings the host the second they arrive.
Weselt — Notifications
Weselt — Incidents
Weselt — Reception
Audit & trust

Nothing happens off the record.

HR is going to ask: who edited this row, when, and why? Weselt has the answer ready. The trail is append-only — corrections are stored alongside the original event, never on top of it.

Before/after payloads Every correction stores both states as JSON in the audit row. Replay any record.
GPS & geofence on every scan Each scan is stamped with lat/lng and validated against the location radius. Out-of-fence scans are rejected with geofence_failed.
Role-scoped APIs JWT + bcrypt. HR can correct, reception can scan visitors, employees can only see their own. Wrong scanner gets forbidden_scanner.
CSV export for any window /api/weselt/audit/export dumps the trail filtered by date, location, or user. Hand it to finance or compliance whenever they ask.

Audit · attendance #4827

2026-05-13
08:42:11
attendance_in
Check-in at Head Office
M. Salem · GPS 30.0445, 31.2356
verified
14:18:04
visit_arrived
Acme Engineering · scanned site QR
M. Salem · within 38 m
arrived
15:42:39
visit_departed
Acme Engineering · scanned site QR
M. Salem · 1h 24m on site
departed
17:51:22
attendance_out
Check-out at Head Office
M. Salem · 9h 09m shift
closed
+1d 09:14
hr_correction
Check-out adjusted to 18:00 — note: "Stayed late, forgot to scan"
HR · before/after payload stored
corrected
Available now

Pick your door.

Employees and engineers download the mobile app. HR, reception, and managers sign in to the admin dashboard. Partners get a magic link in their inbox — no install needed.

Quick install

Scan the code with your phone — open in the App Store or Play depending on your device.

app.weselt.app/get
Roadmap

Shipping in five phases.

The schema landed for all five phases on day one — the API and UI ship in waves so HR and engineers can adopt without a big-bang switchover.

Phase 01 Live

Attendance & QR

Mobile + admin attendance, locations, QR generation, HR corrections, audit trail.

Phase 02 Live

Site visits

Outgoing visits, magic-link acceptance, ETA + late alerts, web portal, push + email rules.

Phase 03 Live

Reception

Incoming visitor passes, one-time QR pass page, Reception console, host push.

Phase 04 In progress

Insights & Arabic

Manager dashboards, per-partner grace, permanent partner-site QRs, full Arabic translations.

Phase 05 Planned

ERP integration

Migrate users, partners, contacts into your ERP of choice. Single sign-on, single source of truth.