Firas Mohammed
← All work
Computer vision · Platform engineering

Idle site cameras turned into a searchable record in three weeks

Incumbents charge from ten thousand dollars a project, and most sites already own cameras nobody reviews. ConstructVision turns that footage into something a site manager can search in plain language, review and report from, with the tenancy, migrations and release gates of a product meant to be sold.

ConstructVision AI · personal venture · 480 commits, 15 July to 7 August 2026

Context

Construction sites already have cameras. What they do not have is a way to answer a question. A project manager wanting to know when a particular pour happened, or whether scaffolding was up on a given week, scrubs through a timelapse by hand — which means the footage is used for disputes after the fact rather than decisions during the build.

The premium end of this market — OpenSpace, Buildots, Doxel — solves it by aligning capture to a BIM model and a schedule, and charges from ten thousand dollars a project upward. That tier was not the target. The gap was a fixed-camera product that could still answer questions in natural language.

What I built

480 commits · ~205,000 lines · 138 test files

Backend, frontend, mobile app, CV pipeline, migrations and CI — designed, directed and shipped over roughly three weeks, with AI coding agents doing the typing under my direction and review.

The part I am actually proud of

Not the model work. The release engineering. One command runs the full gate on a clean clone: backend tests against locked dependencies, a migration validation that proves a fresh database and a legacy database adopted into the migration system arrive at byte-identical schemas, a check that no release file is accidentally untracked, then typecheck, lint and production build on the frontend. CI runs the identical gate with locked installs only, and the dependency audit is blocking, gated on a triaged allowlist rather than a blanket ignore.

That is the difference between a demo and something you can hand to a client and still sleep. A late wave of work was entirely unglamorous for the same reason: MFA, session revocation, JWT validation, channel-bound refresh tokens, a verified content-security policy, and making backpressure fail closed rather than silently dropping frames.

The document that made the product better

Partway through, I stopped building and had the product torn apart against its three strongest competitors — capture model, AI, monetisation, and where each one is soft. The resulting assessment was not flattering, and that was the point. It stated plainly that inference was CPU-only and serialised one frame at a time, that billing was demonstration-grade, that detecting a hard hat is not the same as having a safety product, and that the BIM overlay named in my own project description did not exist anywhere in the code.

Writing down what your product cannot do, in the same document you use to plan, is the cheapest quality control there is. Every roadmap I have seen fail was optimistic in exactly the places nobody had written down.

Status, stated honestly

Deployed to staging and taken through a client-readiness audit with the findings remediated. It is not running a production customer today, and the scaling constraint is known and documented rather than discovered later: inference is CPU-bound and serialised, which is fine for a handful of cameras and not for a hundred.

Where this transfers

What it means for an employer: I take a product from idea to audit-ready in weeks, scope it truthfully, and build the controls in from day one. This is the full shape of delivering a technical product: a domain problem, a build, an honest competitive read, a security posture, and a release process that makes shipping boring. For an operations role the relevant part is that I can sit between a technical team and a commercial one and be genuinely useful to both — I have written the migration validation and the competitor teardown for the same product, in the same month.