Inspiration

Going live should be a moment of attention, but a livestream also creates a second job: find a promotional moment, make a vertical asset, rewrite the announcement for every channel, validate the release, publish it, check failures, prevent duplicates, and prepare a recap. A chat box would still leave the creator supervising that checklist.

What Creator Duty does

Creator Duty starts from a creator.live.started event rather than a planning prompt. Once the event is inside its narrow preauthorized boundary, the workflow owns the campaign while the creator stays with the audience.

The agent loads the approved livestream source, asks Gemini for a structured campaign plan and channel-native variants, renders one immutable promo, runs typed policy checks, publishes to four clearly labeled sandbox destinations, verifies every receipt, retries only a failed target, and rejects an exact replay. When the stream ends, a creator.live.ended event closes the same campaign with a recap and question clusters.

How it works

  1. Pub/Sub delivers the livestream event to Cloud Run through an authenticated push.
  2. Firestore atomically claims the event and maps the stream to one campaign.
  3. Gemini proposes the angle, tone, and copy as structured JSON within source bounds.
  4. Deterministic code owns authorization, channel set, dimensions, duration, budget, link allowlist, claim rules, and copy limits.
  5. The release receives one immutable artifact hash and one bounded idempotency key per destination.
  6. Durable receipts make the injected failure and target-only recovery visible.
  7. Replaying the same event returns duplicate_ignored with zero new posts.

Why it is agentic

Gemini makes bounded creative decisions from the event and source material, but it never receives release authority. The typed state machine and policy layer control side effects, so the system can act autonomously without turning free-form model output into an unrestricted publishing command. The important behavior is the complete loop: event ownership, planning, production, policy, publishing, verification, recovery, replay protection, and post-live continuity.

Safety and recovery

The public judging panel is read-only. Mutation actions are protected by a demo key and remain inside a synthetic sandbox. The workflow is limited to one creator, four destinations, one video, an estimated model-budget cap, and bounded retry attempts. Three destinations commit once; one target fails before commit and succeeds on its target-specific retry. Firestore ledgers preserve the campaign, event claim, stream index, and provider publication identities.

Built with

  • Gemini 3.7 Flash on Vertex AI for structured planning, channel variants, and recap.
  • The official Google GenAI SDK (@google/genai) with models.generateContent.
  • Google Cloud Run for the event-driven runtime.
  • Pub/Sub for authenticated event delivery.
  • Firestore transactions for durable state and idempotency.
  • Private Cloud Storage for immutable campaign artifacts.
  • Node.js 24, TypeScript, Zod, and a deterministic local provider for reproducible judging.

The public walkthrough video uses Gemini 3.1 Flash TTS Preview on Vertex AI with the Kore voice. That narration path is Gemini-only; it does not silently fall back to local Kokoro or another provider.

Demonstration scope and disclosure

The demo uses synthetic livestream, transcript, creator, and destination data. “Publishing” means durable simulated sandbox receipts, not external social-network posts. Generated media and sandbox destinations are labeled in the product and video.

Creator Duty was started on August 29, 2026 for the All Things Agentic Hackathon. Sigmora is a pre-existing proprietary creator platform. The competition-created work is the Creator Duty event contracts, orchestration, Google model integration, policy and recovery system, evidence panel, tests, deployment, and release package in this repository. Sigmora’s private services, credentials, customer data, and unrelated product functionality are not included or relicensed.

Built With

Share this project:

Updates

Submission history