Inspiration
A step at the door, a 30-inch doorway, or a parking lot with no accessible stall keeps people out of a building. Owners and property managers often don't know these barriers exist until someone is turned away or files a complaint, and a professional accessibility inspection of every building in a portfolio is slow and expensive. We asked: how much can you learn about a building's barriers from data that already exists, before anyone drives to the site?
We also called a Southern California land development firm to check our assumptions. They told us that accessibility fixes almost always need a building permit, that slope work can trigger a grading permit, that rules differ in every city, and that a surveyor is the person who actually knows the grades. That shaped what Unstuck tells an owner to do next.
What it does
Unstuck screens a commercial property against numeric thresholds in the 2010 ADA Standards using three sources:
- CoStar property record: use type, year built, parking count, linked 3D scans
- Vexcel aerial imagery: the parking lot and site from above
- Matterport 3D scans: doorway openings measured from the floor plan
In about 30 seconds and roughly 10 cents of model usage, it returns a prioritized list of findings, each tied to the evidence it came from. Every finding says what was measured, how, and what a person should verify on site. Anything it cannot measure goes to a person instead of being guessed.
Unstuck is a screening tool, not a certification. It never calls a building compliant or non-compliant.
How we built it
- Agent: a LangChain Deep Agent (
deepagents, Claude Opus 5.5) plans each audit and delegates to three subagents: a property investigator, an exterior inspector and an interior inspector. The interior inspector chooses the best of several linked scans and measures its doorways. - Rule engine: every result comes from a deterministic, tested Python rule engine. The agent decides what evidence to gather; it is not allowed to produce a number or a finding.
- Vision: Gemini suggests accessible parking stalls on the aerial image. Each suggestion only counts after a person accepts it.
- Stack: FastAPI + SQLite backend, Next.js + React + Tailwind frontend with a Three.js building view, live progress over server-sent events, hosted on Vultr behind Caddy at tryunstuck.us.
Challenges we ran into
- A scan measures the wall gap, not the clear width. A 36-inch opening can be under 32 inches once the door and frame are in it, so we report a range and send borderline doors to a person.
- Keeping the AI honest. We cap model calls, block compliance language in summaries, and fall back to a fixed script if the model is unavailable, so an audit always finishes with rule results.
- Data rights. We kept sponsor imagery away from third-party AI until Vexcel approved it at the event, and built that as a switch that is off by default.
- Coverage limits. The Vexcel hackathon key is geofenced, so the app checks the boundary before calling and falls back to public USGS imagery outside it.
Accomplishments that we're proud of
- A real end-to-end audit on live sponsor data: one 1917 Houston office building produced 11 measured doorway openings, 7 flagged for on-site measurement.
- 132 automated tests, including the ADA threshold rules.
- The site passes its own accessibility audit.
What we learned
The valuable output is not "pass or fail". It is a short, evidence-backed list of what to measure first and who to call. And the most useful thing an AI agent can do here is choose where to look, while tested code does the math.
What's next
Portfolio-level screening across many properties, slope and route checks from elevation data, city-specific permit guidance, and a report format that accessibility inspectors can pick up and finish.
