Inspiration

The camera came back. The charger did not.

That simple scenario captures the problem KitProof addresses. A returned case can look complete until someone needs the small accessory inside it. The useful time to catch that omission is at the return desk, while the kit can still be checked and corrected.

Shivam Gupta created KitProof around one practical question: can an ordinary camera help an equipment team make that handoff more dependable, without adding electronics to every accessory?

What it does

KitProof gives an AV rental desk a guided visual completeness check. An operator enrolls a complete kit, photographs the empty mat, and names the regions that matter. Every return is compared with those references.

A blurry capture requests a clearer view. A missing charger triggers a named recheck. A fresh second clear observation of the same omission holds the kit. A matching layout requests human review. Only the operator can approve release.

The application includes account login, an isolated judge demo, custom kit enrollment, camera and file capture, annotated evidence, inspection history, deletion, and a downloadable evidence manifest. The supplied demo images are synthetic, visibly labeled, and processed through the actual vision service.

Try it: https://kitproof-ai.web.app

How we built it

The React and TypeScript interface connects to a FastAPI service running OpenCV 5. Four ArUco markers establish the mat geometry. A homography rectifies the view before capture-quality checks and regional analysis compare the return with complete and empty references.

Foreground occupancy alone is insufficient: a wrong object still occupies space. KitProof combines shape overlap, Lab color similarity, and edge agreement to distinguish a plausible match from a region that needs inspection.

The agent is a bounded, deterministic policy. OpenCV results select the next action, including recapture, targeted recheck, hold, or human approval. The trace records perception, decision, and action. Reusing the identical capture does not count as a fresh recheck, and the server enforces release preconditions.

The live application uses Firebase Hosting, with same-origin API requests routed to Google Cloud Run. OpenCV 5 executes there; a dedicated Firestore database stores records and private Cloud Storage stores image evidence. The hosted smoke test verifies a missing-item recheck followed by a hold and a complete kit progressing through the explicit release endpoint.

The separate AWS configuration places the substantive vision workload in an Arm64 Lambda behind API Gateway, with DynamoDB records, private S3 evidence, and CloudWatch monitoring. Actual AWS execution remains unverified and still requires account authentication. The Google deployment does not fulfill that competition requirement. Local operation uses SQLite and files. No COOL claim is made.

Challenges we worked through

Small illumination changes initially made valid matches look different. Exposure normalization also risked concealing glare. The implementation now smooths color comparisons and checks raw saturation before normalization. The initial evaluation remains in the repository, alongside a fresh final seed split, so the iteration is inspectable.

We also retained a conservative failure instead of tuning it away: one complete perspective scene requests another camera-region check. A useful inspection system needs an understandable recovery path as well as successful examples.

What we can demonstrate

The reproducible evaluation uses eight synthetic scenarios, 240 frames, and 1,440 region decisions.

Measure Result
Intended next action 239 / 240 frames
Correct region status 1,439 / 1,440 regions
Challenge frames incorrectly eligible for human review 0 / 180
Same metric with appearance checks removed 60 / 180
Complete frames requesting an unnecessary recheck 1

The comparison retains the same calibration, masks, and quality gates while removing shape, color, and edge verification. These measurements support the role of appearance analysis on this corpus. They do not establish field accuracy. Standalone local analysis measured 55.57 ms median and 57.62 ms p95, excluding decoding, browser, network, storage, and AWS overhead.

The hosted browser workflow passes 11 checks spanning registration, demo inspection, recheck, hold, human release, custom enrollment, evidence export, and deletion. Automated axe checks report zero violations on ten screens. The Python suite passes 105 tests, including transactional cloud-adapter tests. A separate public API audit passed 69 checks across 145 requests. The evidence files and retained failure image accompany the code.

Why this could be useful beyond the hackathon

The initial buyer hypothesis is an equipment manager handling repeatable AV kits. Existing inventory platforms already manage bookings and custody. KitProof's proposed role is a visual check at the physical handoff, with evidence that can complement that workflow.

The commercial test includes unpacking, staging, recapture, and repacking. Fast inference is only valuable if the whole check helps the operator. A proposed US$49 monthly station price is a discovery experiment, not a launched plan or validated willingness to pay. No customer interviews, paid pilots, or savings have been claimed.

What we learned and what comes next

Reference-based vision makes a narrow task explainable, but geometry and appearance are not proof of identity. KitProof cannot test electrical function, serial identity, authenticity, hidden damage, or the physical presence of an item that a convincing photograph imitates. Human release remains mandatory.

The next evidence milestones are meaningful AWS execution, a held-out physical-camera study, and an operator pilot measuring total handling time against a checklist. Account recovery, email verification, operational recovery, and representative load testing also remain gates for a paid production service.

Creator and assistance

Created by Shivam Gupta, product owner and builder. Research, implementation, testing, and documentation used AI assistance. The narrated demonstration uses a generic AI voice and discloses that fact; it does not imitate Shivam's voice.

Built With

Share this project:

Updates

Submission history