Inspiration

A PCB defect changes more than appearance: a short joins traces, an open splits them, and a pin-hole introduces a hole in copper. An inspection assistant should expose these measurements and preserve uncertain findings for an operator.

What it does

ContourPilot compares a golden template with an aligned, binarized board image. OpenCV 5 checks comparability and proposes changed regions. TopoLab cubical persistence supplies multiscale H0/H1 features to a trained classifier. A model disagreement selects a bounded larger-context measurement; its output changes the next action to human review or a request for another aligned capture.

Operators can inspect measurements, keep review notes on the inspection host, and export results. An explicit in-product AWS action registers a digest receipt, verifies it by reading DynamoDB, and disables Lambda execution afterward. The judge web UI and all OpenCV/TDA inference now run on the existing AWS EC2 t4g.small (ARM64), independently of the creator computer. Uploaded images are processed in EC2 memory without persistence; review metadata is stored in SQLite on EC2. Only digests, status and counts enter the separate receipt ledger. No action automatically releases a board.

How it is built

Python 3.12, pinned OpenCV 5 and NumPy; a bundled TopoLab Rust/WASM persistence engine runs through Node.js. A numeric random forest uses 31 geometry and 120 persistence features without training dependencies at inference. SQLite on the inspection host stores operator metadata. The private AWS component is a small Python Lambda and provisioned DynamoDB evidence ledger, with a one-time cleanup schedule.

Results and limitations

On 500 previously inspected DeepPCB test pairs, classifier-only detection F1 is 84.00%, precision 92.53%, recall 76.91%; pin-hole F1 is 96.17%. These are defect detection scores, not board safety accuracy. The quality-gated workflow analyzes 457/500 pairs and leaves 43 unresolved; its 85.50% conditional F1 must not be presented as an all-input result. Full-denominator annotation recall is 72.13%.

The fixed-image remeasurement obtains no new optical information. Natural clean boards, camera acquisition, calibrated abstention and industrial operation remain unvalidated. The separate synthetic loop's final 100% includes ten oracle-human decisions out of 100; it is not 100% autonomous performance.

Challenges and lessons

Candidate recall and crop context remain substantial failure sources. We preserved misses and disagreements rather than editing them away. Cloud cold-start testing also exposed a too-small 128 MB / 3-second limit; 256 MB / 5 seconds succeeded, and shutdown was verified on both failure and success.

AI development assistance

Codex assisted implementation, packaging, reviews and verification. Gemini through Antigravity assisted bounded proposal/classifier experiments. Numerical exports and runtime predictions were checked independently. Coding-assistant use itself is not our agentic workflow: the running vision system chooses follow-up tools from image-derived evidence. The runtime does not require an LLM.

Next steps

Independent natural clean-board and camera evaluation, better candidate recall, and a separately validated review/abstention policy before any release automation.

Team

Solo creator: Kazari Uiharu.

Code and demonstration

Source code: https://github.com/uiharu-kazari/ContourPilot (private; a complete source ZIP is attached in the private judge materials). The technical report, reproducible private archive and a 3-minute-27-second application walkthrough are complete. The walkthrough uses genuine captured application states and ElevenLabs AI narration with a premade voice, not a cloned creator voice or continuous live-camera footage. A solo-creator title card presents the team. Video: https://youtu.be/D9l9SkBzqOI (unlisted, 3:27).

EC2 hosting update (2026-10-26)

The password-protected judge endpoint runs on the existing 2-vCPU/2-GB AWS Graviton EC2 instance. systemd supervises the inspector and its EC2-hosted HTTPS tunnel. Detection is serialized, with the inspector limited to half a CPU core and 768 MiB memory to protect co-hosted services. No new instance or volume was created. External sample inspection returned nine regions with the frozen model in about 3.4 seconds including network latency. The earlier demonstration video remains an accurate recording of the local workflow and AWS receipt verification; hosting was migrated afterward. The temporary tunnel URL may change on tunnel restart; it has no production uptime guarantee. Uploaded images pass through the HTTPS tunnel to EC2 memory. Live-camera and industrial release claims remain out of scope.

Built With

Share this project:

Updates

Submission history