Do not send the actor home with one line still missing.
Five required lines. Four proven. One actor about to leave set.
That is the moment LastLine is built for.
At wrap, dialogue coverage is fragmented across script revisions, take IDs, sound reports, and crew memory. A sentence discovered after release can become an ADR session involving the performer, studio, engineer, dialogue editor, approvals, and remix. The same sentence caught while the performer is still on set can be three wild reads and 20 seconds.
LastLine turns that point of no return into a clear, evidence-backed decision:
HOLD FOR SOUND -> capture the owed line -> recheck -> human approval -> SAFE TO RELEASE
What LastLine does
LastLine is an actor-release evidence agent - not a chatbot and not a post-production repair tool.
It:
- resolves every scripted line required from a performer;
- maps each obligation to inspectable production-audio evidence;
- uses Gemini to reason across spoken performance, transcript completeness, take notes, and acoustic concerns;
- identifies the exact missing sentence instead of returning a generic warning;
- creates the minimum pickup needed while the performer is still available;
- preserves production sound as the final authority; and
- logs the evidence path behind every HOLD or SAFE decision.
The interface opens on the answer a First AD actually needs: can Maya Chen leave? Judges immediately see 4/5 lines covered, the unresolved Scene 12 / Line 7 sentence, three candidate takes, why none can clear the gate, and the 20-second fix.
Why this is agentic
LastLine completes an operational loop rather than stopping at analysis:
- Observe - resolve the actor's script obligations and available recordings.
- Reason - Gemini aligns spoken audio to the owed line and proposes structured evidence.
- Gate - schema, inventory, and deterministic policy reject incomplete, invented, or unapproved paths.
- Act - LastLine requests exactly three wild reads for the one unresolved sentence.
- Verify - it rechecks the new recording, asks production sound for approval, and recomputes the release verdict.
One screen. One owed sentence. One action. A closed release loop.
Real Gemini and Google Cloud execution
The public judge route sends the repository's synthetic WAV through a same-origin server endpoint to the Gemini Developer API using Gemini 3.5 Flash Lite and a strict response schema. A fresh live request transcribed "Because he followed you." exactly, returned one complete candidate with a visible run ID and token usage, and correctly kept release on HOLD at 0/1 because no human had approved the recording.
The repository contains three inspectable Google paths:
- the deployed server-side Gemini REST route used by the public app;
- an executable verifier that imports
@google/genaiand callsai.models.generateContent; and - a FastAPI service that imports Google ADK and Google Gen AI, constructs an
LlmAgentandRunner, and callsrunner.run_async, ready for the documented Vertex AI/Cloud Run path.
Gemini is essential where byte-for-byte matching fails: performances vary, partial reads can sound plausible, and sound notes change whether a take is usable. But Gemini never receives authority to release the actor.
IBM partner track
Selected track: IBM.
IBM Bob Shell 2.0.2 was used as a real development partner to audit LastLine's most dangerous trust boundary: could a model invent a convincing recording ID and accidentally clear an owed line?
Bob authored the focused phantom-recording regression test in agent/tests/test_policy.py. The test supplies an otherwise perfect evidence candidate tied to nonexistent recording PHANTOM-999 and proves the policy remains HOLD with Scene 12 / Line 7 unresolved. The dated Bob task, output, resulting code, and focused 6/6 verification are preserved in docs/ibm-bob/usage-2026-09-03.md.
This is exactly where Bob added value: not cosmetic code generation, but adversarial review of a decision boundary that protects real production work. Confluent is not claimed or required for this build.
The trust architecture
Gemini proposes evidence. Deterministic policy decides eligibility. Production sound authorizes release.
Every required line must have a complete, non-missing evidence path tied to a submitted recording ID and explicitly approved by a human. High confidence alone is never enough. API failure, malformed output, partial dialogue, a phantom recording, or missing approval all fail closed to HOLD FOR SOUND.
The demo uses synthetic audio only - no performer voice or private production material. Credentials remain server-side, request schemas are bounded, and live errors are shown honestly instead of being replaced with seeded results.
Judge it in 90 seconds
- Open the hosted app and confirm Maya shows 4/5 with HOLD FOR SOUND.
- Inspect Scene 12 / Line 7 and the rejected candidate evidence.
- Click Capture wild line.
- Click Finish reads & recheck and verify the new evidence still requires human approval.
- Click Approve WL-001 & release and confirm 5/5 - SAFE TO RELEASE with authorization logged.
- Reset, click Run live Gemini, and inspect the real transcript, candidate, confidence, policy result, model, run ID, and token count.
Proof, not promises
- Public, anonymous hosted product with the complete release workflow.
- Public MIT-licensed repository with source, synthetic assets, architecture, setup, and judge instructions.
- Real audio-backed Gemini execution with visible runtime evidence.
- Official
@google/genaiand Google ADK imports and executable call paths. - IBM Bob-authored phantom-recording regression coverage with dated evidence.
- 12 TypeScript tests + 16 Python tests, clean production build, dependency audit, and public CI.
- Separate seeded workflow for demo reliability and live cloud proof for technical verification - clearly labeled, never substituted.
Why it matters
Film sets already have tools for recording audio and repairing dialogue later. LastLine owns the overlooked decision between those systems: whether the evidence is complete before the performer becomes unavailable.
That narrow timing advantage is the product. LastLine does not try to replace the First AD or production mixer. It gives them the missing control surface: the exact obligation, the best available evidence, the smallest recovery action, and a release decision no model can approve by itself.
The MVP proves the workflow with one synthetic performer packet. The same evidence model can extend to imported script revisions, digital sound reports, slate metadata, multi-actor coverage, role-based approvals, and encrypted studio retention - without weakening the human release gate.
Links
- Live product: https://lastline-release-gate.cinevault7.chatgpt.site
- Open-source repository: https://github.com/vivekyarra/LastLine
- Repository license: MIT
Built With
- fastapi
- gemini
- github-actions
- google-agent-development-kit
- google-cloud
- google-gen-ai-sdk
- ibm-bob
- pydantic
- pytest
- python
- react
- tailwind-css
- typescript
- vinext
- vitest
Log in or sign up for Devpost to join the conversation.