The challenge
Every AED Sentinel camera has to be installed, aimed and activated on site, and the wizard that guided the installer ran on Microsoft Power Pages. Nothing in the flow forced proof that the job was actually finished: an installation could be recorded without any evidence that the camera was mounted correctly or that it ever came online.
What we built
A twelve step wizard rebuilt on Softr, run from the installer's phone in front of the cabinet. Custom code handles device validation and registration against the Readiness API, six prescribed photos are mandatory before the flow advances, and the final step polls until the camera returns its own image of the cabinet. A Cloudflare Worker proxies every API call and writes the photos to Airtable, keeping credentials server side.
About the project
Readiness Systems monitors AEDs in the field with AED Sentinel cameras, and every camera has to be registered, mounted, aimed and confirmed working before the installer leaves the site. The Installation Wizard is what the installer runs on a phone while standing in front of the cabinet.
The wizard is twelve steps on Softr. The informational pages stay as native blocks the Readiness team edits on its own, and the steps that talk to the Readiness API run on custom code: device validation, cascading location pickers down to the building, AED model and expiration dates with typeable date entry, and model-specific handling for units that carry a single date instead of separate battery and pads dates. State carries across steps in the browser, so an installer who backs up a page does not lose the entry. The last step polls for activation and renders the first image the camera returns, which is the installer's proof the device is live.
The part that closed the loop is photo capture. Six prescribed photos, taken with the same phone running the wizard, cover the Sentinel ID, the AED serial number, the battery and pads expiration dates, and the cabinet with its door open and closed. Each one previews inline, can be redone, and is compressed on the device before upload. None of it is optional: the wizard does not advance past a capture step without its photo, and the four photos taken before registration are committed only after the device registers successfully, so no images are ever filed against an installation that failed.
Photos land in Airtable as native attachments on a record keyed by Sentinel ID, written by a Cloudflare Worker that proxies the API calls and holds the credentials server side, never in the browser. The capture logic loads from one hosted module, so a single global snippet updates every wizard at once instead of editing each app page by page.
Readiness runs the whole thing as a template. A new subscriber wizard is a clone of the template app plus a duplicated token database and its own subdomain, and it inherits the capture module automatically. Today that is one template and three subscriber wizards in production, documented well enough that Readiness creates new ones without us.