05 / SAMI
SAMI supports the live picture between human reports
SAMI is an optional sensor for participating venues. Its machine-learning models process ambient activity on the machine itself. Only the datapoints required for reporting are sent to OUTBND.
One job: fill reporting gaps
SAMI helps OUTBND detect changes when staff and patrons have not submitted a recent report. Its signal is one input. It does not replace verified venue facts or human updates.
01 / Processes signals locally
Machine-learning models run on SAMI. Raw acoustic and nearby-device inputs stay on the machine.
02 / Sends only what reporting needs
SAMI pushes only the datapoints OUTBND requires to support a report. Sensitive source data is never collected.
03 / Keeps raw inputs off the network
Raw inputs never leave SAMI, and OUTBND never stores them in the cloud.
Sensitive inputs stay on the machine
The machine-learning models run on SAMI itself. OUTBND never collects or stores the sensitive source data they process.
06 / Technical Architecture
Built to move updates quickly while labeling them honestly
A report moves from its source to the OUTBND API, through the venue database, and out to nearby phones. Each layer preserves where the report came from, when it arrived, and how much confidence it carries.
Open a layer to inspect its stack.
01 // CLIENT LAYER iOS 17+ · Native iPhone Client
SwiftUI · Mapbox Vector Maps · MapKit
The iPhone app puts nearby venues, current status, and walking time on one map designed for quick, one-handed use at night.
02 // API & COMPUTE Python 3.12 · Async FastAPI Backend
Fly.io Dual-Node Dedicated Compute
The API receives reports, validates them, applies freshness rules, and sends accepted changes to connected phones without waiting for a refresh.
03 // SPATIAL ENGINE Postgres 16 · PostGIS Postgres & PostGIS
Supabase Dedicated Database + RLS
PostGIS stores venue facts and finds active venues within three kilometers of the user, so the phone only receives relevant results.
04 // REAL-TIME DISPATCH Redis · Sub-15ms Event Loop WebSocket & Redis Sync
In-Memory Pub/Sub Event Broker
WebSockets push accepted status changes to open maps. Redis distributes each update across the running server instances.
05 // TYPE CONTRACT OpenAPI 3.1 · Automated Schema & Contract Safety
Automated Swift Model Codegen
The API contract generates Swift models during the build, helping the app and server keep the same fields and data types.
06 // OPERATOR SECURITY Cryptographic Token Gate Verified Staff Access
Cloudflare Mail Auth + Salted Tokens
Approved venue staff receive single-use access links, so only authorized operators can publish official updates. Browsing remains passwordless.