Best Architectural Design
Leadsy
We are an autonomous premium content engine for Indian SMBs who can't afford Ad agencies. We take in a single business/shop url and produce a complete content kit in less than 15 mins.
Core trick
Gates an agent pipeline behind a human YES, then generates a short video from the shop's own photos via Veo and a paste-ready bilingual kit.
Built with
flash3.5gcpgeminigoogleveo
Description
Inspiration
Neighbourhood shops do not have agency retainers. They have a Google listing, a courtyard, and a phone.
For a decade, “AI for business” meant a chatbot on a homepage or a slide in a Fortune-500 deck. The models that could actually shoot a film sat behind specialist teams. The kirana, the salon above a chemist, the bakery in Indiranagar still bought ads the old way: a cousin with a phone.
Google’s 2026 stack changed the unit economics. Gemini 3.5 Flash is cheap enough to read a listing. Veo 3.1 is cheap enough, at list price, to shoot eight seconds. Cloud Run and Pub/Sub are cheap enough to run that work without a GPU laptop. All Things Agentic asked for agents that
do the work
, not chat about it.
We pointed that brief at India’s SMBs. Search and Maps already
are
the grass roots. The missing piece was an agent that treats a listing the shop owns as a brief, spends a few dollars of Vertex like a producer, and hands the owner a kit they still control. Cheap film posted without consent is just a cheaper mistake.
This repo is a ground-up built on Gemini 3.5, Google ADK, and Cloud Run.
What it does
Leadsy Flock is a five-bird studio. A shop pastes a Google listing or site it
owns
. Flo waits for a human
YES
. Then the flock produces a bilingual paste kit. Flo never autoposts.
Scout
grounds the listing with Google Search, Maps, and URL context. Evidence only — no invented second address, no fake UGC.
Inka
writes copy and starts Veo 3.1 from
this shop’s own photos
. Gemini Image fills a still only when there is no usable visual.
Harvest
polls Veo off the request path, muxes English + one Indic voice (Gemini TTS), crops with ffmpeg, retries Lyria.
Ledge
fail-closes copy: regex + Gemma classifier + Gemini judge. A reject revises once. It does not ship.
Stella
publishes a consent-first landing. Discovery is not consent.
Ad Kit
fans one master into Meta 4:5 / 1:1 / 9:16, WhatsApp, Google display / RSA, with UTMs. The owner pastes into Ads Manager.
Judges open the already-finished
Glen’s Bakehouse seeded kit
(
google-listing-eaf57cae
). Public listing, pipeline proof — we do
not
email, call, review, or YES that bakery. Hire, campaign writes, and ADK
/run_sse
are closed on the public roost so a blog link cannot burn Vertex.
The
observatory
shows tokens, tools, models, and Vertex
list-price
reconstruction for the seed:
$6.41 · ₹545
, almost all of it Veo at $0.40/s. That is not a Google invoice and not a sell SKU.
How we built it
Mandatory stack, used as the product spine rather than a checklist:
Piece
Job
Gemini 3.5 Flash via Vertex
Flo, brief, copy, gate judge
Google ADK + A2A AgentCard
Flo is an agent, not a prompt file
Cloud Run
flock-api
+
flock-worker
(
asia-south1
)
Request-shaped work vs long work
Pub/Sub
campaign-steps
One message, one step, one receipt; at-least-once + idempotency
Model Armor
Inbound text is not a prompt-injection toy
Search + Maps + URL context
Scout’s grass-roots record
Veo 3.1
8s place film + proof film, then stop
Gemini Image
Fallback still, not the default
Gemini TTS
English + Indic on the same picture
Gemma
Creative Gate classifier
Lyria
Jingle when quota allows; skip, don’t fake
Memory Bank, Firestore, GCS, Cloud Trace
Long context, receipts, films, audit
Inka
starts
Veo and returns. A harvest sidecar polls
operations.get
, sleeps 12s, republishes itself (max 24). We do not hold a Cloud Run request open for eight seconds of video. ffmpeg derives 4:5 / 1:1 / 9:16 / 1.91:1 from one master so we do not buy the film twice.
Public surfaces for the event:
/demo
,
/k/google-listing-eaf57cae
,
/l/google-listing-eaf57cae
,
/blog
,
/architecture
,
/dash
. Everything else that could hire the flock or open ADK 404s.
Challenges we ran into
Veo-in-Inka was a timeout dressed up as a model failure.
Waiting on the LRO in the same step that started it killed the worker. The fix was architectural: start, ACK, poll on a sidecar, never mark the campaign complete until bytes land in GCS.
Vertex is not one regional soup.
Imagen 3 publisher IDs 404 after 30 Jun 2026 — stills moved to
gemini-3.1-flash-image
on global.
gemma-3-12b-it
404s as a publisher model on this project’s
us-central1
, so the gate still fail-closes on regex + Gemini judge. Lyria 429s on this quota; harvest skips after two tries so a jingle cannot stall Scout → Ad Kit. Ephemeral
google-genai
2.x clients raise
Cannot send a request, as the client has been closed
— we process-cache clients.
Veo RAI-filters faces
when asset refs look like a person. Harvest falls back (9:16 no refs, then 16:9) instead of stopping on
done_no_bytes
.
person_generation="dont_allow"
. We do not fake UGC to dodge the filter.
Do not contact a real shop.
Glen’s is a public listing, not a customer. The seed is already finished. The theatrical
/demo
play does not
POST /v1/campaigns
.
A public write-up is an attack surface.
Once the blog pointed at the roost, hire / YES /
/run_sse
were a way for a stranger to burn Vertex. We locked the API in the app (Cloud Run stays reachable so the kit still loads).
GET /
redirects to
/demo
.
Never autopost.
The tempting last mile — push the kit to a Page — is the one we refused.
Accomplishments that we're proud of
A
ground-up
Gemini + ADK + Cloud Run rebuild in the submission window, with a public disclosure of the earlier prototype.
A
deterministic
kit: same listing, own photos, fail-closed gate, same paste shape — not a slot machine.
Honest COGS
on the observatory: $6.41 Vertex list-price for a bilingual courtyard kit, Veo as ~99% of the burn, no fake invoice, no hire SKU on the roost.
Own pixels first.
Scout +
own.py
feed Veo. Gemini Image is a refine/fill, not a generated shop.
ffmpeg as a first-class engine.
One 8s master, many crops. Lowest cost is a refusal to regenerate.
Harvest sidecar
so Flo can stay interactive while Veo works.
Fortified fleet pieces with jobs:
Model Armor, Memory Bank, Cloud Trace, A2A AgentCard, Gemma on the gate.
A
seeded Glen’s kit
judges can open without us ever contacting the bakery — and a public lock so the tweet cannot become a Vertex bill.
What we learned
Lowest cost is a series of refusals: no Veo until YES, no wait on Veo in the interactive path, no second Veo for a square, no fake UGC, no autopost, no hiding the burn.
Determinism is a product feature for SMBs. Inventing a second branch or a dish the bakery does not sell is liability.
Long-running models belong on workers. Bonus models need real jobs or they are slides. Transparency is cheaper than a PDF. A demo URL is part of the threat model.
Google already has the grass-roots dataset: millions of listings, photos, hours, reviews. The agency was the missing runtime.
What's next for Leadsy
After the hackathon we will open hire again
only
for listings the operator owns — never a cold campaign on a stranger’s bakery. Telegram and Whatsapp Flo opens door to the simplest GTM strategy for businesses that are already on these channels.
On the engine: quota for Lyria so the jingle is a track, not a skip; Gemma as a publisher model where this project can actually reach it; The observatory should keep showing list-price burn in the open.
The product stays the same: paste a listing you own. Scout reads it. Inka films from this shop’s photos. Stella hands you a kit. Flo never autoposts.
README excerpt
<p align="center"> <img src="app/static/flock/flo.webp" alt="Flo, director of Leadsy Flock" width="112"/> </p> <h1 align="center">Leadsy Flock</h1> <p align="center"> <b>An AI growth agency for neighbourhood shops.</b><br/> Paste a listing you own. Scout reads it. Inka films from this shop’s own photos.<br/> Stella hands you a paste kit. Flo never autoposts. The owner says YES. </p> <p align="center"> <a href="https://flock-api-533880600838.asia-south1.run.app/demo"><strong>Watch the demo →</strong></a> · <a href="https://flock-api-533880600838.asia-south1.run.app/trace"><strong>Verify the run →</strong></a> · <a href="https://flock-api-533880600838.asia-south1.run.app/architecture">Architecture</a> · <a href="https://flock-api-533880600838.asia-south1.run.app/dash">Observatory</a> · <a href="https://flock-api-533880600838.asia-south1.run.app/blog">Blog</a> </p> <p align="center"> Google All Things Agentic · 27–31 August 2026 · Gemini 3.5 · Google ADK · Cloud Run <code>asia-south1</code><br/> <em>This project was created for the purposes of entering Google's All Things Agentic hackathon.</em> </p> <p align="center"> <img src="app/static/flock/hero.webp" alt="The flamingo flock roost" width="920"/> </p> --- ## For judges — how to see the demo You do **not** need a login, a Google Cloud project, or a YES on a live campaign. The public roost is a **seeded Glen’s Bakehouse kit** (`google-listi