Every technology. One canonical fix. No lock-in.
WillowCreek doesn't sell you a positioning engine. It consumes the one you already own. Every technology attaches through an adapter, every position normalises to one canonical fix, and every fix carries enough honesty about itself to be trusted or discarded.
One fix, whatever produced it
Positioning vendors speak incompatible dialects: different schemas, different units, different ideas of what a "position" even is. The adapter seam absorbs that variety so nothing above it ever has to. Normalisation is proven across two independent vendor dialects in the lab. Both resolve to the identical canonical object, and every consumer above the seam is untouched by which vendor produced it.
The canonical fix carries five things
- Identity. Who or what this position belongs to: a person or a thing, never a bare device.
- Position. Site, floor, zone or coordinate, at whatever resolution the source honestly supports.
- Quality. How much this fix should be trusted, stated rather than implied.
- Freshness. How old the observation is. A perfect position from four minutes ago is a different claim from one made a second ago.
- Provenance. Which source produced it, traceable to the raw message. Every fix can answer "says who?"
Adapters are first-class
- Replaceable. Deployed, upgraded and rolled back without touching the platform.
- Health-checked. Continuously supervised, visible at site, tenant and provider level. An adapter with no endpoint reports unconfigured, never healthy.
- Never metered. No per-adapter charge, ever. An adapter is work we do with you, not an item picked from a shelf.
Consumed through adapters, not built in
These are the technology classes the architecture consumes through its adapter seam. The platform takes resolved fixes from the engine you run. It doesn't care which radio produced them.
BLE angle-of-arrival
High-precision indoor positioning from AoA locator arrays.
BLE RSSI
Zone-level presence from signal strength, and honest about being zone-level.
UWB
Ultra-wideband ranging where fine indoor precision is the requirement.
Wi-Fi
Positioning from the wireless estate a site already operates.
RFID
Chokepoint and portal reads. Knowing something passed a door is a position too.
GNSS
Satellite positioning outdoors, from handsets and vehicle or lone-worker devices.
Dead-reckoning
Carrying a track through the gaps between fixes, marked as inferred, never dressed up as observed.
Your engine stays the expert
Multilateration and AoA resolution stay in the positioning engine. The platform consumes resolved fixes and leaves the radio domain to the engine that knows it.
One person, one history, indoors and out
Concurrent heterogeneous feeds at one site resolve to a single continuous position history per subject. A nurse tracked by BLE inside the building and by GNSS in the carpark is one person with one track, not two records in two systems with a gap at the door. The seams between technologies are the platform's problem, not the operator's.
That continuity is what makes the safety runtime work: a duress carries the person's position with it, whichever technology happened to be the best witness at that moment.
The right room rather than a confidently wrong dot
Every fix competes, and the winner explains itself
When several sources claim to know where someone is, the platform scores the candidates and arbitrates, with hysteresis, so a position doesn't flap between sources on every packet. Confidence and staleness gating sit in front of everything: a stale or low-confidence coordinate is demoted to the coarser zone the platform can still stand behind. The platform prefers a coarser known zone to a confidently wrong coordinate. The right room rather than a confidently wrong dot.
Arbitration is explainable. Which source won, what it scored, and why the alternatives lost is recorded with the selection, so "why did the map say that?" always has an answer.
Candidates are scored, gated and damped, and the selection records its own reason.
We track the person, not the gadget
The platform reasons about people and things. Devices are plumbing: bound to an identity, swapped without ceremony, and kept out of sight.
- You never see a MAC address. Operators see names, roles and things, not device identifiers. The tag inventory is an administrative concern, not an operational one.
- Any number of devices, one identity. A badge, a handset and an access card can all position the same person, and the history stays one history.
- Unregistered tags are positioned anonymously. A tag with no bound identity still appears, as an anonymous tag, with no invented name attached.
- Identity binding is an explicit act. A person and a device are joined by an authorised action that is audited. The platform never guesses the pairing.
Keep the hardware you already own
WillowCreek is ingest-first. It doesn't compete with your positioning engine; it consolidates on top of it. That is a structural position, not a slogan. Because the platform doesn't sell positioning hardware, it never has a reason to push you toward any particular vendor, and consolidation never quietly becomes a new lock-in. The architecture is vendor-agnostic; every technology attaches through an adapter and normalises to one canonical fix.
The supervision layer then watches every feed with the platform's own liveness clock. When a vendor system goes quiet, you get one honest infrastructure alarm, not silence and not a storm.
The integration burden sits with the platform, not with your other vendors. Adapters are included, never metered, and built as work we do with you. How integrations work →
Two dialects in. One fix out.
Vendors do not agree on the shape of a position. Below the seam a payload keeps its vendor form; above it, the same physical point arrives as the identical canonical fix whichever engine produced it. That equivalence is verified by test across two deliberately incompatible dialects.
An illustration of the contract, not a live feed. Nothing above the seam knows which vendor produced a position, which is what makes changing engine a configuration exercise rather than an application rewrite.
Age the fix. Watch it refuse to guess.
Most platforms keep painting the last coordinates they were given. Drag the age of this fix past its threshold and the platform stops drawing a dot and names the zone instead.
- Age
- 4s
- State
- trusted
- Reported as
- Ward 4W, bay 2, with coordinates
The threshold shown is the shipped default of thirty seconds, and it is measured on the positioning engine's own clock so a clock difference cannot invent staleness. A duress raised on an untrusted fix names the zone and carries no coordinates, because a duress naming a room the person has left is worse than one naming no room.
One track, across the front door
Outdoors a satellite fix is loose. Indoors, angle of arrival is tight. A worker walking from the car park into a ward crosses between them, and the platform arbitrates which source is authoritative rather than showing two half tracks or a gap.
- Source
- satellite
- Authority
- Reported as
- Car park, north
An illustration of the mechanism. The engine scores every candidate source on accuracy, freshness and continuity, applies hysteresis so the position cannot flap between them, and records which source it chose and why. The ring shows the fix loosening and tightening across the handover; it carries no distance, because we have not measured this platform's location accuracy and will not put a number on it until we have.
Bring the positioning system you already have
An hour with your floor plan and your hardware list. We will show you what one canonical fix looks like.