jachacks 2026
foco: web ui and live map view
overview

i was in montreal the weekend before jachacks for a normal trip, then went back the next weekend for the hackathon.

coco wang and i built foco: cctv plus a floor plan turned into a 3d map with motion as heat. we got 2nd place overall at jachacks 2026.

rest of the page is idea, build, what broke, stack, next.

timeline24 hours, jachacks 2026
team
faiz mustansarcoco wang
submitted tojachacks 2026, montreal, quebec
award🥈 2nd place, best overall
tools
next.jsthree.js / react three fibertailwindfastapiultralytics yoloopencvgoogle geminisupabase storagevercelrender
where the idea came from

we did not jump straight to foco. the first thing we threw around was a silly site about touching grass, just something fun and pointless. we thought it was funny but we scrapped it pretty fast once we started thinking about what we actually wanted to build.

the real inspo was person of interest on netflix: lots of feeds, but the interesting part is what you can infer about a space, not a sci fi prediction engine. we wanted something closer to "how is this room used" than "is someone there".

for the pitch we tried to keep it clearly not a surveillance product: label what is pixels, what is geometry, and what the llm is guessing.

what we built

foco takes a clip + floor plan, runs motion and detection, draws heat on a 3d slab. rooms link to a footprint strip. gemini summarizes single frames (people, activity, short blurb). demo flow: pick clip, watch the map, click rooms, read the card.

24 hours meant rough edges: homography when calibration worked, frame differencing when it did not. tiling and stride so yolo and video io did not cook the laptops.

weekend war stories

both our laptops were running hot the whole time. we had heavy backend work going constantly in the background, and on top of that the ui was hitting the backend with calls nonstop during testing. it got to the point where everything started slowing down noticeably. after the demo, our google cloud bill had jumped to somewhere between $30 and $40, and the reason it spiked that hard is that we were running two instances at the same time, so double the compute, double the cost. the hardest bug was getting the heat to sit correctly on the 3d floor plan. it kept drifting or covering areas that had no actual activity.

foco: 3d floor map with activity heat

herzberg library stack in 3d: heat on rooms, vibe tags, floor labels lined up to the real plan.

via train ran a

kingston sub maintenance detour

that weekend (metrolinx work, slower toronto to montreal runs). i had to switch up ticket to get home earlier rather than 2 am and it means that i had to drop business for an earlier economy ticket, and paid more than i wanted. roughly 12 hours round trip and ~$300 all in.

judging and the floor

jachacks used a science fair style expo, which was the first time i had done that format. i expected mostly judges rotating through. instead we got a steady line of people at the table: judges, other teams, organizers, and a few guests who were just curious. they actually wanted to hear the pitch and poke at the demo, not only score rubrics.

we counted something like twenty people through over the block, which felt neat for a 24 hour build. honestly a proud moment.

foco demo at jachacks expofoco demo at jachacks expo
architecture notes

next.js ui, clips in supabase. fastapi behind cors for opencv, yolo, gemini. ui on vercel, api on render. r3f: memo + stable refs so handlers did not break under expo wifi and reloads.

data flow (high level)
timelapse

24 hours condensed — building foco at jachacks 2026.

what is next

plan is to open source it so others can fork. links at the top.

polish: phone live feed, tighter room masks, faster presets, clearer labels for motion vs model text. live runs on your infra and your bill, not mine.

credits: coco wang

last updated: 04/23/2026