Attach a Bluetooth tag to each key ring and install the app — your team's phones do the rest, automatically.
Consumer personal trackers are built for one person recovering a lost item. Tracklet is built for teams — shared access across every staff member's phone, verified custody trails, and real accountability from the moment a key leaves the building.
Most modern buildings have digital access control — swipe cards, PIN pads, camera systems. But physical keys still exist, and they move around with no digital trace.
When a key leaves the cabinet, where does it go? Traditional systems can tell you who signed it out — but not where it is right now, or whether it's been returned.
Paper logbooks satisfy auditors, but they're reactive. There are no alerts when a key is overdue, no automatic audit trail, and no way to spot patterns — until something goes wrong.
RFID key cabinets cost thousands to install. NFC tap stations need fixed readers at every door. Both require infrastructure that's tied to a single location and expensive to maintain.
Tracklet closes this gap by turning the smartphones your team already carries into a passive key-detection network. Small, purpose-built Bluetooth Low Energy (BLE) tags are attached to key rings. When a staff member's phone comes within range, it silently logs a sighting and reports it to the cloud. No tapping, no check-in, no behaviour change required. The result: a live map of every key's last known location, a full audit trail, and automatic alerts — all running on infrastructure your team already owns.
Traditional asset tracking requires fixed readers mounted at every door — thousands of dollars in hardware before you've tracked a single key. Tracklet takes a different approach.
Every enrolled staff member's phone acts as a mobile Bluetooth scanner. Staff join voluntarily — they install the Tracklet app and create an account to opt in. Only phones belonging to opted-in staff participate. No new hardware, no site survey, no installation.
Phones detect nearby BLE tags automatically in the background — no app interaction required from staff. A tag sighting is logged silently every time a key comes within range of a phone.
Add a new staff member to Tracklet and your detection coverage improves immediately. Every new participant extends the network to wherever they carry their phone — offices, car parks, corridors, lifts.
This model works in multi-floor buildings, underground car parks, and across multiple sites — wherever staff carry their phones. The system always shows the last known location for every key, with a timestamp and an age indicator so you know how recent the sighting is. If a key hasn't been detected for a while, that is surfaced clearly — there is no silent staleness.
Bluetooth Low Energy (BLE) tags broadcast compact, energy-efficient radio signals detected by nearby smartphones. Purpose-built commercial BLE tags are designed for continuous business operation, shared team access, and multi-site scale — a very different proposition to the consumer personal trackers that inspired widespread awareness of the technology.
Consumer personal trackers make it easy for one person to find a misplaced item. That narrow design brief creates hard limits that make them unsuitable for organisational key management:
Tracklet is purpose-built to address all of these. Multi-user access across every enrolled phone, full iOS and Android coverage, a verifiable chain-of-custody audit trail, and tags rated for continuous commercial deployment over a three-year service life.
Staff phones run the Tracklet app in the background. The app is installed voluntarily — staff opt in by downloading it and creating an account. Only enrolled phones participate in detection; staff who have not installed the app are not part of the network. Once enrolled, no active participation is needed day-to-day — the app silently detects nearby BLE tags and records a sighting: the tag's internal ID, the phone's GPS coordinates, and a timestamp. The key holder doesn't tap, scan, or interact with anything.
Each key cabinet has a configurable home zone — a GPS bounding area centred on the cabinet's location. Keys detected within that zone are marked In. Keys detected outside it are marked Out. The calculation is purely distance-based — no precise GPS is required, just good enough to distinguish "at the office" from "somewhere else".
Apple supports background Bluetooth scanning through a standard, documented framework. The app scans only for registered Tracklet tag identifiers — not every Bluetooth device in range — so battery impact is minimal.
iOS may throttle background scan frequency but detection resumes reliably when a tag comes into range. The "Always Allow" location permission is required so GPS coordinates can be attached to each sighting.
Android aggressively manages background processes to preserve battery — especially on devices from Samsung, Xiaomi, and Oppo which layer their own power managers on top. Standard background services are suspended when the screen is off. Tracklet works around this by registering scans directly with the phone's Bluetooth hardware rather than the app process.
When a tag is detected, the system wakes just long enough to record the sighting and go back to sleep. Scanning continues even when the app is completely closed, and resumes automatically after a device restart.
Mobile devices aren't always connected — underground car parks, poor signal areas, in-flight mode. Tracklet queues sightings locally on the device (up to 50) and flushes them to the cloud when connectivity returns.
A background flush task runs on a 15-minute cycle using the OS task scheduler. Sightings include timestamps recorded at detection time, so the custody log is accurate even when upload is delayed.
Tracklet is designed for zone detection, not room-level precision. The system answers "is this key at the office or somewhere else?" — not "is it in the third drawer on the left". That is the right question for key custody, and BLE with GPS handles it reliably.
Multiple sightings from different phones improve location confidence. The dashboard shows the most recent sighting with the best GPS accuracy, plus a timestamp so you always know how fresh the data is. If a key needs to be physically located, Find Mode shows recent BLE encounters from the tag holder's phone to help narrow it down.
The Tracklet web dashboard is a browser-based app — nothing to install, no server to manage. Admins get a live view of every key's status from any device, anywhere.
A key's custody state changes in response to two types of input: a passive BLE sighting from a staff phone, or an explicit QR scan by a user. The rules that govern each transition are designed to minimise false transfers while ensuring intentional check-outs are always respected.
| From | Trigger | To | Notes |
|---|---|---|---|
| No custody | BLE sighting — out of home zone | Soft | Immediate assignment to the reporting user |
| Soft (same user) | BLE sighting — out of home zone | Soft | Refreshes custodyStartedAt, no holder change |
| Soft (different user) | BLE sighting — out of home zone, >5 min since last seen | Soft (new holder) | Anti-bounce window elapsed — custody transfers silently |
| Soft (different user) | BLE sighting — out of home zone, <5 min since last seen | Soft (unchanged) | Within anti-bounce window — custody held to prevent rapid flipping |
| Soft | BLE sighting — in home zone | No custody | Auto-cleared; key_returned notification sent to former holder |
| No custody or Soft | QR scan (checkout) | Hard | Explicit claim; user auto-joined to cabinet if not already a member |
| Hard (same user) | QR scan | No custody | Self-return; sighting written with zone: in |
| Hard (different user) | QR scan | Hard (new holder) | Transfer; app prompts for confirmation; custody_lost alarm sent to previous holder |
| Hard | Admin force-return | No custody | POST /keys/{keyId}/return via admin web app |
| Any | Key archived | No custody | Custody cleared as part of the archive operation |
| Any | Account deleted | No custody | All keys held by the departing user are force-returned |
Traditional hosted servers charge for capacity around the clock — even at 3am when no keys are moving. Tracklet runs entirely on serverless infrastructure that only executes when needed, and auto-scales from one site to thousands with no configuration changes.
API handlers execute only when requests arrive — zero infrastructure cost at idle. Auto-scales with no capacity planning, no server patching, and no uptime monitoring required from the team.
A managed NoSQL database handles sighting storage with millisecond read performance — critical for real-time custody updates. Point-in-time recovery is enabled on all data, so nothing is ever permanently lost.
Staff log in using a one-time password (OTP) sent to their work email — no passwords to create, forget, or breach. Secure, short-lived access tokens are issued after verification and can be individually revoked if a device is lost.
Overdue key alerts don't require a dedicated alert server. A scheduled cloud task runs every few minutes, compares Out keys against admin-configured thresholds, and fires in-app notifications and webhook payloads for any overdue keys. Email delivery is handled by a managed cloud service. The entire notification pipeline is serverless — no infrastructure to manage, no background worker to monitor.
| Capability | Tracklet | Manual logbook | NFC tap station | RFID fixed readers |
|---|---|---|---|---|
| Setup cost | Tags only (<$100/key) | Near zero | $200–$500/reader | $10,000–$100,000+ |
| Ongoing cost | Tag replacement every 3 yrs | Admin time | Software subscription | Maintenance contracts |
| Passive detection | ||||
| Real-time alerts | ||||
| Audit trail | ||||
| Zero installation cost | ||||
| Scales with facility size |
Tracklet's security model is built into the architecture, not bolted on. Every API call, data record, and authentication flow is designed with a specific threat model in mind.
Every system has limits. Being upfront about them builds more trust than glossing over them. Here is what to expect.
allowDuplicates: true — in theory each tag is reported only once per scan session. A tag sitting still near a phone may only generate a single sighting, not continuous updates. The tag may need to move out of range and back before iOS delivers a second packet. Tracklet's sighting throttle accounts for this; the practical effect is that location freshness may be bounded by movement, not polling rate. Note in practice we rarely encounter this limitation.For engineers, investors, and IT evaluators who want to understand the deeper implementation details and architecture decisions behind Tracklet.
Both platforms impose constraints on background BLE scanning that are either underdocumented or documented only in release notes buried in developer forums. Understanding them is what separates a reliable passive scanning system from one that silently stops working the moment the phone screen turns off.
allowDuplicates: true is silently overridden when the app is in the background. Each CBPeripheral UUID is reported at most once per scan session. A tag sitting stationary next to a phone will not generate repeated advertisement packets until it goes out of range and returns. This is an OS-level constraint with no workaround.bluetooth-central background task, the OS relaunches it headlessly and provides a willRestoreState callback with the saved CBCentralManager state. Without implementing this correctly, background scanning permanently stops after the first app termination. The restoreStateIdentifier must be set at manager construction time — it cannot be added later.startScan() more than 5 times within any 30-second window causes subsequent calls to be silently downgraded to SCAN_MODE_OPPORTUNISTIC. In opportunistic mode, the scanner only delivers results when another app on the same device happens to be actively scanning — making detection completely unreliable. There is no error callback; the call appears to succeed. Tracklet avoids this by starting the foreground service scan exactly once and keeping it running.SCAN_MODE_LOW_POWER (~500ms active window every 5 seconds, ~10% duty cycle) is the default for background foreground services. SCAN_MODE_BALANCED (~25%) and SCAN_MODE_LOW_LATENCY (continuous, ~100%) are available but the highest mode is restricted to foreground use and drains battery proportionally. A tag passing through range during the inactive 4.5-second window of low-power mode will not be detected on that pass.ACCESS_FINE_LOCATION is required on all versions up to API 30. API 31+ (Android 12) adds BLUETOOTH_SCAN and BLUETOOTH_CONNECT runtime permissions — their absence causes a silent scan failure with no indication to the user. API 33+ (Android 13) adds POST_NOTIFICATIONS for the foreground service notification; denial is non-fatal (scanning continues) but the persistent notification disappears.Mobile app — built with React Native and a managed build service that produces production-ready files for Google Play and the App Store. Separate build profiles exist for development, internal testing, and production. Over-the-air updates are possible for non-native changes without a full app store submission cycle.
Admin web app — a React single-page application delivered via a global content delivery network with SSL at the edge. Sub-100ms load times are typical worldwide.
Infrastructure as code — all cloud resources are defined in version-controlled TypeScript. Deploying a new environment is a single command — no manual console configuration, no drift between environments.
No hardware to install. No server to manage. Attach tags to your keys, onboard your team, and you're tracking key custody in under an hour.