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.
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).
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