Skip to content
All work

Security / access control

One console for 66 smart locks across 13 sites, with a PIN minted per stay

People, groups, and door access in one place. PINs pushed and revoked automatically, including one per guest stay.

Client
A 15,000-acre New Mexico land and hospitality operator
System
Access
My role
Design, build, and run
When
Sep to Oct 2026
Access overview, sample data
Sample dataDoors, upcoming stays and lock health across every site.

01 / Problem

What wasn't working.

66 locks across 13 sites, each managed in a vendor phone app. Staff codes never got removed. Guest codes were set by hand.

02 / Approach

What I built.

  1. 01

    One state document per lock and person, worked by a background tick that talks to the lock vendor's cloud API.

  2. 02

    Rate-limited to 24 of the vendor's 30 requests a minute, so the fleet push never gets throttled.

  3. 03

    Self-service access requests, approved by email.

  4. 04

    The booking and crew apps draw their PINs from here. One source of truth for who can open what.

03 / Architecture

How the pieces connect.

Next.js 16ConvexClerkVendor OpenAPIResend
PIN requestgatewayswebhooksAccess portalState documentsConvexWorker tick24 req/minVendor cloud66 locks13 sitesBooking + crew appsdraw PINsgatewayswebhooksAccess portalStatedocumentsConvexWorker tick24 req/minVendor cloud66 locks13 sitesBooking + crewappsdraw PINs
People / UIDataServiceOutside systemDevice

04 / Result

66

smart locks across 13 sites, one PIN per stay. The first fleet push ran about 327 jobs. Lock health is monitored. 54 automated tests. 30 help topics in two languages.

People and groups

Give a crew access to a set of doors in one step.

Dated access

One-time and date-range codes that remove themselves.

Per-stay PINs

Minted for each reservation, revealed after the locks confirm.

Lock health

Every lock checked. Problems show up in one list.

Have a problem like this one?

Book a call

Next step

Tell me what isn't working.

A 30-minute call. You describe the problem, I tell you straight whether it's worth fixing and roughly what it costs.

Book a call