-
-
Delivery blocked: the deal memo says "D. Park," but two contributors match. NEEDS_HUMAN before release.
-
Gemini 3.6 Flash grounds the exact deal-memo clause. It proposes; it cannot decide.
-
A Reviewer cannot approve their own proposal. Real HTTP 403, enforced server-side.
-
A distinct Release Approver authorizes the resolution. The original Reviewer remains recorded as the proposer and cannot self-confirm.
-
Authorized export: HTTP 200, digest-bound package to GCS, resolution.recorded via Confluent Cloud, Firestore projection SYNCHRONIZED.
-
IBM Bob implementing the Confluent transport, with the bounded development checklist complete and live round-trip integration tests passing.
-
Public documentation of IBM Bob's contribution scope - including what Bob did not build.
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 exportjourney. - Real Gemini extraction grounded in exact source text.
- Persistent Firestore state and create-only GCS delivery artifacts.
- A real Confluent
resolution.recordedevent 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
- apache-kafka
- artifact-registry
- chromium
- cloud-build
- cloud-run
- confluent-cloud
- docker
- fastapi
- firestore
- gemini
- gemini-enterprise
- google-antigravity
- google-cloud
- ibm-bob
- javascript
- pydantic
- python
- secret-manager
Log in or sign up for Devpost to join the conversation.