Inspiration

Film and television delivery often ends with credit obligations scattered across abbreviated deal memos, contributor registries, and rendered end cards. A name such as “D. Park” can refer to more than one person. Guessing risks miscrediting a contributor; stopping everything manually delays delivery.

AI-assisted document retrieval can surface a clause, but retrieval alone cannot safely decide who receives credit or whether a production may ship. CreditLock was inspired by that last-mile problem: connect source evidence to the actual rendered credit, expose ambiguity, enforce accountable approval, and carry verifiable proof into the delivered package.

The demonstration uses synthetic enterprise-shaped deal memos, contributor records, manifests, and productions. It contains no customer data and does not claim customer adoption or replace legal or guild review.

What it does

CreditLock starts an ambiguous production in NEEDS_HUMAN.

Gemini 3.6 Flash reads the deal memo and produces a schema-validated candidate obligation grounded in an exact source quotation. A deterministic policy engine compares that evidence with the contributor registry and Chromium-rendered credit frames.

The model can interpret evidence, but it cannot activate an obligation, select the final identity, change the release gate, or authorize delivery.

A REVIEWER proposes a resolution. If that same reviewer tries to confirm it, the server refuses with HTTP 403. A distinct RELEASE_APPROVER must confirm the proposal before the production becomes READY_TO_EXPORT.

An authorized export returns HTTP 200 and creates a content-addressed delivery package in Google Cloud Storage. It publishes a resolution.recorded event through Confluent Cloud Kafka. A warm worker consumes the event, projects the release checkpoint into Firestore, and the UI reports SYNCHRONIZED.

The downloaded package can then be verified outside the hosted service. Offline replay recomputes the evidence chain and returns MATCH.

How we built it

CreditLock is a Python 3.12 application built with FastAPI, Pydantic, Uvicorn, HTML, CSS, JavaScript, and headless Chromium.

The production API and event worker run on Cloud Run. Gemini is accessed through the official google-genai SDK and Gemini Enterprise Agent Platform using Google Cloud service identity. Firestore stores persistent production and event state. Google Cloud Storage stores content-addressed frame and delivery artifacts through application-enforced create-only writes, while Secret Manager supplies runtime secrets. Container images are built through Cloud Build and stored in Artifact Registry.

Confluent Cloud is a real runtime dependency: authorized exports publish Kafka events and the independent worker projects their outcomes into Firestore.

IBM Bob was a substantial part of CreditLock’s development—not a one-time promotional trial. We used the initial 40 promotional coins provided for the event, purchased an additional 40-coin allocation, purchased two further 160-coin plans, and added further credits as development continued. Bob completed documented implementation and verification tasks across those cycles. Google Antigravity was also used for later bounded implementation phases through a personally funded Google AI Pro subscription that provides monthly Antigravity usage credits. Its contributions and IBM Bob’s contributions are kept separate and supported by public development evidence.

Challenges we ran into

The hardest design decision was separating useful model reasoning from release authority. Gemini needed enough freedom to interpret inconsistent human-authored evidence, while deterministic code and accountable humans retained every consequential decision.

Serverless persistence created another challenge. Rich rendered-frame bytes belong in GCS, while durable metadata and release state belong in Firestore. Export packages also had to be bitwise deterministic so that the same release digest could never address different ZIP bytes.

Finally, a background Kafka consumer on Cloud Run required instance-based billing and continuously allocated CPU. We also had to publish enough evidence for judges to verify the project without exposing credentials or private production material.

Accomplishments that we're proud of

  • A complete hosted NEEDS_HUMAN → proposal → 403 refusal → distinct approval → HTTP 200 export journey.
  • Real Gemini extraction grounded in exact source text.
  • Persistent Firestore state and create-only GCS delivery artifacts.
  • A real Confluent resolution.recorded event projected back into Firestore.
  • Offline anti-tamper replay returning MATCH.
  • A 15-stage hosted verifier with 25 checks.
  • A current test suite with 693 passing tests and 8 intentional skips.
  • A public Apache-2.0 repository with truthful claim-to-evidence documentation.

What we learned

The most trustworthy agentic system is not necessarily the one with the most autonomy. Gemini is strongest when it interprets messy evidence inside a narrow contract; deterministic software is strongest at enforcing invariants; and humans must retain authority over consequential release decisions.

We also learned that a green UI is not sufficient proof. Persistent state, reproducible packages, explicit authorization failures, event synchronization, and replayable evidence turn a demo into an inspectable operating workflow.

What's next for CreditLock

Next steps include enterprise identity federation, integrations with production-management and credits systems, cryptographically signed delivery receipts, broader authorized domain testing, and controlled evaluation with real production professionals.

Those extensions will preserve CreditLock’s core rule: AI may interpret and recommend, but it may never silently clear an ambiguity or authorize a release.

Built With

Share this project:

Updates

Submission history