-
-
Mid-session: the page was built while the team talked. The rail shows it exporting Slides, holding a calendar slot and drafting Gmail.
-
Created by the agent in one spoken session: a Slides deck, a Gmail draft with real metrics, and a calendar hold. Deckhand writes; you send.
-
One Cloud Run service runs the UI and the ADK agent side by side; Gemini 3.5 Flash reasons, Firestore remembers, Pub/Sub defers the work.
-
The deployed app on Cloud Run. Workspaces are real sessions - notes, pages and members persisted in Firestore between visits.
-
FrontEnd CloudRun Deployment Cloud Run : serves the UI and runs the FastAPI + ADK agent in a sidecar container. Scales to zero.
-
Worker Cloud Deployment the asynchronous half. A Pub/Sub push wakes it after a session ends to export, email and create follow-ups.
-
Pub/Sub delivers each job to the worker over authenticated push - the decoupling that lets the work finish after the browser closes.
-
Firestore is the memory and the safety net: each job records its completed steps, so a redelivered message resumes instead of repeating.
Deckhand — the agent that builds while the room talks
An agent that helps prepare, present, and follow up on your pitch—while keeping people in control of every important decision.
Category: Collaborative Partner
Inspiration
Modern teams do not have a meeting problem as much as a meeting-to-outcome problem.
Microsoft’s 2023 Work Trend Index found that employees spent 57% of their Microsoft 365 time communicating and 43% creating. Inefficient meetings ranked as the leading productivity disruption; 55% of respondents said meeting next steps were unclear, and 56% found meetings difficult to summarize [1].
An Atlassian survey of 5,000 knowledge workers found that 54% frequently left meetings without clear next steps or task ownership [2]. Research on “meeting bridges” also found that teams need meeting information for task reminders, shared understanding, and follow-up collaboration—but ordinary notes and recordings often fall short [3].
A transcript preserves what was said. It does not decide what the group agreed to, update the shared artifact, verify the numbers, record owners, or prepare the next action.
We built Deckhand around a simple idea: a useful collaborative agent should know when to act, when to wait, and when to ask the room.
What it does
Deckhand listens to a working session and makes one structured decision for every turn:
- Act when there is clear, unopposed direction.
- Hold while the room is still discussing or when an action should not change the shared page.
- Ask when participants disagree, blocking further edits until a person resolves the conflict.
When it acts, Deckhand can build or update a visual brief using Google Search grounding, spreadsheet evidence, or generated images. It records decisions, commitments, owners, open questions, and explicit presentation preferences.
A hold can still complete a tool-only request. Deckhand can prepare a PowerPoint export, email draft, or calendar hold without silently rewriting the shared artifact.
The workspace begins with one empty page. The conversation—not a fixed template—determines which pages exist at the end.
The repository also contains a separate presentation flow for interviews, outlines, deck building, talk notes, versions, and background follow-up processing. This flow is implemented but is not yet connected to the public live workspace.
How we built it
Deckhand uses a Next.js frontend with a FastAPI backend.
Two Google ADK agents divide the core work:
- The Conductor, powered by Gemini 3.5 Flash through Vertex AI, interprets the conversation and returns a typed
act,hold, oraskdecision. - The Composer receives only approved changes and turns them into complete visual pages with structured claim information.
Application code executes tools from a fixed registry. The model can request search, spreadsheet, image, draft, calendar, or export actions, but it cannot run arbitrary tools.
Firestore stores workspace pages, transcript events, notes, preferences, facts, and unresolved questions between otherwise short-lived agent calls. OAuth credentials remain on the server, and generated page HTML is displayed inside a sandboxed iframe.
Cloud Run hosts the public application. The separate presentation flow uses Pub/Sub and Cloud Storage for background exports, recaps, follow-up actions, and suggested edits.
Deckhand can use live Google Search, authorized Google Drive spreadsheets, repository-provided demo files, meeting utterances, human decisions, notes, and explicit user feedback.
Challenges we ran into
Knowing when not to act. Meetings contain tentative ideas, questions aimed at other people, and criticism without a requested change. We made hold a first-class outcome instead of forcing the agent to edit something after every turn.
Handling disagreement safely. Prompt instructions alone were not enough. A conflict now becomes persistent application state, and Deckhand blocks further edits until a person makes the decision.
Keeping generated content trustworthy. The Composer reports hard claims separately from the visual page. Reported claims without a source are visibly flagged rather than silently presented as fact.
Balancing speed and quality. Social judgment and visual rendering use separate agents and reasoning settings. Utterances are queued so slower requests do not reorder the meeting.
Accomplishments that we are proud of
- Deckhand can start with an empty workspace and let the conversation shape the final artifact.
- The room—not the newest speaker or the model—retains control when experts disagree.
- Search and spreadsheet evidence can flow directly into source-aware visual pages.
- Reasoning, tool use, page composition, notes, and persistence operate as one connected loop.
- Useful outputs can be created without unnecessarily changing the shared page.
- The public application runs on Google Cloud and includes a reproducible guided demo.
- Fallback files and placeholder visuals are clearly labeled instead of being presented as successful connected actions.
What we learned
Autonomy is not measured by how often an agent acts. In a collaborative setting, waiting can be the most valuable decision.
We also learned that human control is stronger when represented in application state rather than prompt language alone. Separating social judgment from visual composition makes the system easier to understand, while bounded tools and visible source warnings make it easier to trust.
What’s next for Deckhand — the agent that builds while the room talks
Next, we plan to:
- Add real-time multi-browser synchronization and presence.
- Add version history, comparisons, and rollback.
- Move primary media to durable Cloud Storage.
- Add automated agent evaluations, end-to-end tests, and continuous integration.
Deckhand’s long-term goal remains simple: let the people in the room own the decision while the agent owns the work around it.
References
[1] Microsoft, 2023 Work Trend Index: Will AI Fix Work?
https://www.microsoft.com/en-us/worklab/work-trend-index/will-ai-fix-work
[2] Atlassian Team Anywhere Lab, New research: better meetings start with a page, 2024.
https://www.atlassian.com/blog/productivity/page-led-meetings
[3] Wang, Qiu, Cranshaw, and Zhang, Meeting Bridges: Designing Information Artifacts that Bridge from Synchronous Meetings to Asynchronous Collaboration, PACM HCI, 2024.
https://doi.org/10.1145/3637312
Built With
- cloud-build
- cloud-storage
- cloudrun
- docker
- fastapi
- firestore
- gcp
- gemini
- gemini-live
- gmail-api
- google-adk
- google-calendar-api
- google-drive-api
- google-sheets-api
- google-slides-api
- next.js
- opentelemetry
- pub-sub
- python
- react
- typescript
- vertex-ai
- websockets
Log in or sign up for Devpost to join the conversation.