Inspiration

Shops, schools and homes in Uzbekistan have cheap cameras, but making them do a job with computer vision needs a programmer. And most camera AI is built for surveillance. Hidden cameras in toilets and changing rooms are a real problem. I wanted a camera you can simply talk to, and that refuses to spy.

What it does

You type a job in Uzbek, Russian or English ("Do'konga kirgan odamlarni sana", "find the green ball", "найди мой телефон"). Ko'z turns it into a recipe of tested OpenCV 5 blocks. It runs the recipe on the live camera for 3 seconds and checks the result with numbers from OpenCV. If the check fails, it changes one setting based on what the camera measured (for example the ball's colour, hue 52 → 31) and tries again, up to 3 times. Then the job runs: counting people through a doorway, following a coloured ball, or finding everyday objects.

Privacy lives in fixed code, not in the AI:

  • faces are blurred before anything else;
  • frames never leave the computer; the cloud gets numbers only;
  • a privacy guard stops the camera when it sees a toilet, a bed, a sink in a bathroom, or a covered lens;
  • no face recognition, no profiling, no audio.

How we built it

  • Vision: Python + OpenCV 5: YuNet (faces), NanoDet (people and objects), Places365 (rooms), plus colour-finder and line-counter blocks.
  • Recipe contract: a fixed contract checked by code. The AI can only propose a recipe, and the code rejects anything unknown.
  • Runner: a WebSocket runner on the Mac.
  • Web app: on AWS (CloudFormation, EC2, DynamoDB with auto-delete). It receives only numbers.
  • Help: Claude and Codex were my coding assistants (logged in AI_LOG.md). The product's own agent loop is separate.

Challenges we ran into

  • A room classifier called my bedroom an "airplane cabin". So the guard now stops on objects it can actually see.
  • On 71 real photos, the default mode still let 4 of 23 bathroom and bedroom photos through. Strict mode let none through. It is an alarm, not proof.
  • The fly-brain robot car is built and passes its software tests. The real trials were stopped for safety when the camera board overheated.

Accomplishments that we're proud of

  • On the live camera, the agent fixed a wrong colour by itself (52 → 31) and then followed the ball.
  • Every private view I tried live was stopped: toilet, bathroom sink, bed and covered lens.
  • The planner got 20/20 on new sentences after tuning; I mark that as tuned, not fresh.
  • Every failure is kept in docs/TRIALS.md.

What we learned

Safety has to be fixed code, not a promise from the AI. An AI that tries to "make it work" could otherwise remove the blur. And an honest measurement on real photos beats a nice demo.

What's next for Ko'z

  • Find anything from words (open-vocabulary detection).
  • Several cameras in one job.
  • Voice in Uzbek.
  • My own Uzbek model as the planner.
Share this project:

Updates

Submission history