Problem

Small Victorian screen productions can commit crew, equipment, locations, and money before they discover that a council permit, public-land manager, police coordination step, or published lead time makes the proposed shoot impossible. The information is split across different authorities, and a small team may not have a dedicated location manager or permit specialist to join the pieces together.

The cost is not just research time. A requirement found too late can force a date change after people and equipment have already been booked.

Solution

SetReady Victoria is a human-supervised production-planning workspace for shoots in the City of Melbourne and City of Stonnington. A producer enters one structured shoot brief. Gemini turns the declared activities into structured triggers and evidence-grounded dependency candidates. Parallel researches current official Victorian sources at runtime. Deterministic Python then validates every citation, applies Victorian business-day rules, and assigns blocker-first readiness states.

The result identifies authority ownership, the requirement and supporting citation, the timing effect, uncertainty, and the next human action. When the evidence supports it, SetReady offers one bounded timing recovery. It never represents that recovery as approval.

The prepared Prahran After Dark path makes the payoff concrete: seven business days are available against a recorded ten-working-day council minimum, so the date is blocked. Moving the shoot to 15 September creates twelve working days—enough for the recorded minimum plus SetReady's two-day planning buffer—while an unresolved parkland question remains explicitly visible.

Why This Matters

SetReady moves permit and coordination research to the moment when a shoot is still cheap to change. It gives a small production team an operational answer—not a generic chat response—and lets the producer inspect the official evidence before acting.

The idea is intentionally local and narrow. It addresses a real media-production workflow across two councils and relevant Victorian authorities, while refusing to imply statewide coverage, legal certainty, or automated government approval. That combination of useful specificity and honest uncertainty is the product's core value.

How We Used AI

Gemini 3.5 Flash runs on Vertex AI inside a bounded Google Agent Development Kit workflow. It:

  • extracts possible production triggers without overriding the user's twelve explicit activity answers;
  • converts accepted official evidence into schema-constrained dependency candidates; and
  • explains an alternative only after deterministic code has tested it.

Parallel Search is an essential runtime service, not a documentation-only integration. For each live analysis, the backend selects relevant authorities and runs bounded, concurrent searches against a server-owned allowlist of five official apex domains. The application preserves safe Parallel search identifiers in the result and revalidates every returned URL outside the model.

AI does not decide the authoritative readiness state. Pydantic schemas and deterministic Python enforce evidence acceptance, Victorian calendar calculations, fixed status precedence, and alternative admission. Missing, contradictory, or weak evidence becomes Human verification required. The model cannot submit a permit, contact an authority, browse arbitrary domains, or turn missing evidence into confidence.

Key Features

  • Guided brief for location, timing, crew, scene, constraints, and twelve explicit activity types.
  • Five visible streamed stages: Reading brief, Identifying triggers, Researching authorities, Checking timing, and Preparing plan.
  • Official-source research restricted to City of Melbourne, City of Stonnington, Parks Victoria, Victoria Police, and Bureau of Meteorology domains.
  • Claim-level citations with authority, excerpt, link, and source-check time.
  • Deterministic Victorian business-day and calendar-day calculations.
  • Blocker-first dependency timeline with concrete next human actions.
  • Explicit Human verification required outcomes for evidence or ownership gaps.
  • One bounded, deterministically timing-tested recovery when supported.
  • Safe live-provider proof showing the Gemini model and Parallel search IDs.
  • Out-of-date protection after the brief changes, plus a printable planning report.
  • Labelled prepared snapshot for a stable judge path, separate from genuine live analysis.

Architecture

SetReady is one stateless container on Cloud Run in Melbourne (australia-southeast2). React and TypeScript capture the brief and render a streamed result. FastAPI validates the input and owns a single NDJSON analysis request. Google ADK runs schema-constrained Gemini 3.5 Flash steps on Vertex AI. Parallel's Python SDK performs official-source search. Pydantic and deterministic domain code validate evidence, calculate timing and status, and admit or reject the alternative.

Cloud Run uses a least-privilege runtime service account. Vertex AI uses Application Default Credentials, while the Parallel key is a pinned Secret Manager version available only to that identity. Cloud Build and Artifact Registry build and store the production image. Application logs retain safe IDs, timings, status, and counts while excluding credentials, prompts, full briefs, source excerpts, and private reasoning.

There is no database, account system, background queue, cross-session storage, or browser-side credential. Refreshing the page can discard a user-created plan.

Built With

Recommended Devpost Built with entries:

  • Gemini 3.5 Flash
  • Vertex AI
  • Google Agent Development Kit (ADK)
  • Google Cloud Run
  • Parallel Search
  • Python 3.12
  • FastAPI
  • Pydantic
  • React
  • TypeScript
  • Vite
  • Docker

Additional implementation and verification tools: Secret Manager, IAM, Cloud Build, Artifact Registry, Cloud Logging, parallel-web, React Hook Form, Zod, uv, pytest, Vitest, Playwright, Ruff, and ESLint.

Testing Instructions

Public judge path

  1. Open https://setready-victoria-779794891053.australia-southeast2.run.app/ in a signed-out browser.
  2. Open the labelled Prahran After Dark prepared example.
  3. Inspect the blocked council dependency, the official citation, the human-verification item, and the 15 September timing-tested recovery.
  4. Select Run live analysis and observe all five streamed stages.
  5. In the live result, confirm the trace names gemini-3.5-flash and shows real Parallel search IDs. The live path may correctly decline to assert an alternative when current evidence cannot support one.
  6. Open an official citation and confirm its domain matches the named authority.
  7. Edit an analysed field and confirm the previous result becomes Out of date.
  8. Open the print view and confirm the evidence and planning-support disclaimer remain visible.

Local verification

Requirements: Python 3.12, uv, Node.js, and npm.

make install
make lint
make test
make e2e
make build

Verified release evidence:

  • 87 Python tests passed.
  • 5 frontend unit tests passed.
  • 14 Playwright desktop/mobile journeys passed.
  • Python and TypeScript lint/format gates passed.
  • Production frontend build passed.
  • Public health endpoint returned HTTP 200.
  • Two earlier live command-line smokes passed in 10.6 and 13.2 seconds with Gemini 3.5 Flash, four Parallel searches, and allowlisted official citations.
  • Verified local release-candidate commit: ebd1630; publish this commit or a documented successor and verify it in the public repository.

The live smoke is deliberately separate from the default suite because it spends provider quota.

Public Demo Link

https://setready-victoria-779794891053.australia-southeast2.run.app/

Public Repository Link

https://github.com/zhangshen20/setready-victoria

The repository's main branch and MIT license are public and verified without authentication.

Demo Video

https://youtu.be/ZciPls88YSQ — the approved 2:51.92 English master is public. YouTube reported a 2:52 duration, completed its copyright and Community Guidelines checks with no issues, and the watch page returned HTTP 200 without authentication.

Recording script: docs/hackathon-build/demo-recording-script.md

Known Limitations

  • Planning support only: not a permit, approval, legal opinion, or compliance guarantee.
  • Initial jurisdiction coverage is limited to City of Melbourne and City of Stonnington, plus the configured Victorian authorities.
  • No permit submission, authority contact, accounts, database, collaboration, or automated cadastral/land-ownership resolution.
  • Official pages can be incomplete or inconsistent; unresolved evidence stays human-supervised.
  • Weather is operational planning evidence, not a guarantee of shoot conditions.
  • A timing-tested recovery does not resolve unrelated uncertainty and is not an approval claim.
  • The prepared snapshot is versioned demo evidence, not a live research result.
  • User-created state is browser-owned and may be lost on refresh or navigation.

Built With

Share this project:

Updates

Submission history