Skip to content
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.

Tags

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.
vn-envy/leadsy-flock★ 01 forksPythonNOASSERTIONCreated Aug 27, 2026 · last push Aug 31, 2026

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>
  &nbsp;·&nbsp;
  <a href="https://flock-api-533880600838.asia-south1.run.app/trace"><strong>Verify the run →</strong></a>
  &nbsp;·&nbsp;
  <a href="https://flock-api-533880600838.asia-south1.run.app/architecture">Architecture</a>
  &nbsp;·&nbsp;
  <a href="https://flock-api-533880600838.asia-south1.run.app/dash">Observatory</a>
  &nbsp;·&nbsp;
  <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

Team