BIZBOT is directly connected and controlled through a web app with three main surfaces: a Control Panel, a Gallery, and an Admin Dashboard.
From the Control Panel, starting the robot calls the backend to launch the main robot loop and place BIZBOT in roam mode. While roaming, the robot continuously captures frames and listens for control or stop events.
The main loop runs CV inference on incoming frames, including person detection and scene-quality checks. When a frame meets capture conditions (sharpness, framing, exposure), it is promoted to a candidate photo and passed to the PhotoPipeline.
The PhotoPipeline scores each candidate image with Gemini for technical quality factors like blur, exposure, subject framing, clutter, and distracting items. Images are uploaded to Supabase Storage, while storage path and score are stored in Supabase Postgres.
The Gallery serves only photos where score is above the threshold, hiding technically poor photos. In Admin Dashboard mode, photos can be approved or removed manually, image scores can be adjusted, and the release threshold can be tuned for each event.
If Gemini fails, score is set to NULL, and that image remains hidden until admin review.