[ Case study ]
Members juggled a web dashboard, a separate door-fob vendor app, and email threads for everything else; the front desk answered booking questions all day, and access revocation for lapsed memberships took days.
CLIENT a five-city co-working operator — FOCUS Entitlements as the single source
Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.
Across five cities this operator runs co-working floors where membership means door access, meeting-room bookings, and a billing relationship, all historically handled by different tools. Members carried fobs from a lock vendor, booked rooms through a web dashboard, and emailed the front desk about everything else. The front desk — two people per city — spent its day answering booking questions, and the members' committee, which has real teeth in this operator's governance, had demanded feature parity between iPhone and Android members from day one.
Members juggled a web dashboard, a separate door-fob vendor app, and email threads for everything else; the front desk answered booking questions all day, and access revocation for lapsed memberships took days.
We proposed one member app on a single React Native codebase, with the operator's subscription tool as the sole source of entitlements: access, booking rights, and guest privileges all derive from billing state. Door keys become short-lived Bluetooth credentials issued on app sync, so revocation is a billing change that propagates in minutes, and a lost phone is a re-sync rather than a vendor ticket. Native modules stay confined to the lock SDK, which is the only part that genuinely cannot be shared across platforms.
Just as important is what we ruled out, and why:
Access, booking rights, and guest privileges all derive from one entitlement model synced from billing, so revocation is a billing-state change, not a hardware task.
Door keys are short-lived credentials issued on app sync, making lost phones and lapsed memberships non-events.
React Native with native modules only for the lock SDK kept one team shipping both platforms without pretending the lock SDK was cross-platform.
Delivered by the experience pod — mobile engineer + designer over 10 weeks, with working increments reviewed with the client every week.
Obstacle
The lock SDK's beacon ranging behaved differently on every Android manufacturer we tested — some OEMs throttled background scans aggressively, and Android members could not open doors that iPhones opened instantly.
Handled: We built a per-OEM tuning layer, moved ranging into a foreground service during the unlock moment, and stood up a device lab of member-donated handsets to hold the parity line.
Obstacle
The subscription tool had no webhook for billing-state changes, so our first design learned about a lapse only on the nightly sync — hours after the door had already opened for someone who left.
Handled: We shortened key lifetimes to hours and added on-demand entitlement revalidation whenever a door key syncs, so revocation propagates at the next use rather than the next night.
The headline: members manage access, bookings, and billing queries in one app across all five cities — 3 tools → 1 app, read from Front-desk contact log. A second check: access revocation time for lapsed memberships at Days → minutes.
The front desk got its day back: booking questions moved into the app, so the desk greets members instead of arbitrating calendars. Revocation became a billing state change that takes effect in minutes, which changed how the operator thinks about departures — offboarding is now an administrative act, not a negotiation with a vendor. Members notice the consolidation mostly as the disappearance of a chore: one app, one login, and a door that recognizes the membership it always should have.
The result was read from Front-desk contact log against the pre-engagement baseline over the stated window, with a guardrail check on access revocation time for lapsed memberships. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.
What we would do differently
We would have budgeted more for the lock SDK's Android quirks — its beacon-ranging behaves differently across OEMs, and the parity the members' committee demanded was won there, not in the UI.
[ Related service ]
[ Related builds ]
Plastic cards Wallet passesAll active memberships issued as Wallet passes over the first renewal season, with gate scan time logged by the ticketing system
62% 89%Share of digital tickets validated offline-capable at first launch of the trial season, read from the operator's validation logs
[ Next step ]
Next case study