Skip to content
Clickhouse - 3rd Place

Locaish

The location scout you can send anywhere.

Core trick

Sweeps camera poses from a scanned room into ClickHouse, then an agent queries candidate shots, renders each lens view, and rejects bad framing.

Tags

Built with

brush-3dgsclickhousecloud-runcolmapgeminigoogle-adkgoogle-genaimcp-clickhousenumpyopenmvspythonscipy

Description

Inspiration A location scout's day rate exists because someone has to physically stand in a room and answer real questions: does the dolly move fit, where does the sun come in, which lens works from which corner. That trip happens after a location is already a finalist. Which means every finalist got picked from a photo and a guess. We wanted the guess gone. What it does Locaish turns a sixty-second phone walkthrough into a metric, gravity-aligned 3D twin of a room, then hires a Gemini agent as its tech scout. Every physically possible camera setup in the room gets swept into ClickHouse: position, height, lens, subject distance, sightline, depth of field, background depth, where the window light lands. One of our demo rooms holds 102,852 of them. Describe a scene in plain prose and the agent breaks it into coverage, queries ClickHouse for candidates, renders the actual view through each chosen lens, and then looks at that frame the way a cinematographer would. If the framing is wrong it says so, changes its constraints, and tries again. We have watched it reject its own pick with "16 mm is far too wide for an emotional close-up, go to the 35." It was right. The deliverable is what a crew actually uses: rendered frames, an overhead camera plan, lenses and marks, a written shot list. And a viewfinder, so you can stand in any setup yourself and look through the lens before anyone rents a van. Film craft is not vibes here. The 180 degree line is a SQL predicate. Matched reverses are a lens and distance constraint. Every rule in the ranking is sourced from working cinematography practice (docs/CINEMATOGRAPHY.md lists the citations) and compiled once into both SQL and numpy, so the database and the fallback planner cannot disagree. How we built it The reconstruction is deliberately classical: COLMAP structure-from-motion, OpenMVS dense stereo, and a per-scene gaussian splat fit with Brush for the photoreal view layer. No pretrained models, no neural reconstruction. Partly because the rules say Google AI only, mostly because a measurement you can't audit is just a confident guess. The twin ships with a QA report that grades its own scan and says how far to trust it. The agent side is google-adk : a breakdown agent, a per-shot placer, and a frame reviewer, all Gemini. The agent's only database access is the official mcp-clickhouse MCP server, read-only, spawned as a stdio toolset. Its instructions forbid stating any number that did not come from a tool. Hosting is one Cloud Run container: the studio in showcase mode, a local ClickHouse loaded from baked dumps at startup, and the scanned rooms. Scanning itself runs locally (it wants a GPU and fifteen minutes), so the hosted gallery serves rooms we scanned and approved, and anyone who clones the repo can scan their own. Challenges we ran into Metric scale from video without a depth network: we anchor on camera height and door leaves, because a door is a manufactured standard hiding in every room. Hand-held stereo on textureless walls: most of what stereo returns there is correlated noise, so we learned to delete it and let the splat carry the look while the crisp points carry the measurements. Cost: our first agent loop resent the whole conversation every shot and burned 85 cents a scout; fresh sessions per shot and trimmed tool results got it to 31 cents. Cloud Run: it caps responses at 32 MiB and our viewer page was 130 MB, so the hosted rooms serve an 800k-point render, pre-gzipped, under the cap. Accomplishments we're proud of The agent argues with the database and wins for the right reasons. The craft rules survive being read by a film person. The whole thing runs end to end on a phone video of an ordinary kitchen. And when the scan is bad, Locaish says so instead of decorating a guess. What we learned A self-check that reuses the thing it is checking will happily confirm an answer that is 90 degrees wrong; our gravity cross-check now compares two quantities that share no arithmetic. Phone cameras know which way is up better than sparse geometry does. ClickHouse partition drops make "reload this room's 100k setups" feel instant. And the fastest way to make an LLM trustworthy is to take away every excuse to guess: give it tools that measure, and instructions that forbid numbers from anywhere else. What's next Scale the shot space: a production location library is thousands of rooms at 100k setups each, which is exactly the columnar search ClickHouse was built for. Multi-location answers ("which of our five candidates holds this scene" is already a GROUP BY away). Heading from ARKit so sun schedules work on every scan. And dolly moves as first-class citizens: sweep the track, not just the tripod. Data sources Everything is generated by the pipeline from our own phone captures: the twins, the swept setups, the plans. The cinematography ranking rules are sourced from public film-craft references, cited in docs/CINEMATOGRAPHY.md. Sun position comes from a solar ephemeris calculation, not an API. Checklist (rule by rule) [x] Only Google AI models: Gemini via google-adk and google-genai , both on the accepted package list. Reconstruction is classical, no other vendor's models or APIs anywhere. [x] ClickHouse at runtime via the official mcp-clickhouse MCP server, read-only, self-hosted cluster. [x] Hosted URL live and public, uploads disabled, two scanned rooms, scout and chat fully working: https://locaish-564007129146.us-central1.run.app [x] Public repo, MIT LICENSE detectable at top, partner usage visible in code ( locaish/agent/core.py , locaish/warehouse.py ). [x] Built inside the contest window (first commit 2026-08-21).
JoshuaA1292/Locaish★ 20 forksPythonMITCreated Aug 21, 2026 · last push Sep 6, 2026

README excerpt

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="assets/logo-dark.svg">
  <img src="assets/logo.svg" alt="Locaish" width="240">
</picture>

**Live demo:** [locaish-564007129146.us-central1.run.app](https://locaish-564007129146.us-central1.run.app) — two scanned rooms, the Gemini scout, and the ClickHouse shot table, hosted on Cloud Run.

**Scan any room. Get a filming-ready digital twin and an instant tech scout
report — camera angles, sun schedule, equipment fit, acoustics — before anyone
drives out.**

Built for [Agentic Cinema: The Blockbuster Hackathon](https://agentic-cinema.devpost.com/),
ClickHouse track. Gemini (through the Agent Development Kit, served by
Vertex AI on the hosted demo) drives
an agent over a real measurement engine — every number in the output traces
to a ray cast, an ephemeris lookup, or a ClickHouse query, never to the model.

## The problem

A location scout's day rate exists because someone has to physically stand in
a room and answer: does the light do what the script needs, does the dolly
track fit, will the room ring on the boom mic. That trip happens *after* a
location is already a finalist — which means every finalist got picked on a
photo and a guess.

## What it does
1. **Scan** — any room, any scanner that exports a point cloud or gaussian
   splat (Scaniverse, Polycam, Luma, or raw COLMAP output), *or* just a video
   of someone walking around the space, from any phone with any camera.
2. **Reconstruct** — the scan becomes

Team