-
-
Landing page
-
Architecture
-
Dashboard
-
Human-in-the-loop: agent node asks question, in chat view
-
Human-in-the-loop: agent node asks question, in node view
-
Node details
-
Human-in-the-loop: agent offers to generate image
-
Node details with generated image
-
Export preview: flow image
-
Export preview: full report
-
Docs page
-
Deployment: artifact repository
-
Deployment: Cloud Run
-
Deployment: Vertex AI
Inspiration
Turning an idea into a real business means standing up a whole team — engineering, finance, marketing — and making a hundred judgment calls along the way. It's slow and expensive, and most AI tools just hand you a wall of text you can't steer.
I didn't want a chatbot that generates a business plan. I wanted an autonomous co-founder that builds one with me — a team of AI specialists that does real work, pauses for the decisions that are genuinely mine, and compiles everything into a founder-ready blueprint. That's the spirit of Track 2: a collaborative partner, not a black box.
What it does
You give ConsultingDAG a known asset — a GitHub repo or a startup idea. An orchestrator agent reads it and plans a directed acyclic graph (DAG) of specialist agents tailored to that asset: a CTO for architecture, a CFO for pricing, a CMO for go-to-market, and more. Every node on the canvas is its own agent, with its own role, instructions, and tools, and they hand work down the graph.
Then you hit Collaborate & Run. The agents execute autonomously — until the plan
reaches a decision that's really yours to make. The CFO stops and asks: freemium, or
strictly paid? You answer; the choice propagates to every downstream agent (so no one
re-asks it); the flow resumes. Beyond text, a node can generate an image — on approval
it calls Gemini's image model to produce an ad poster on the spot. When the run
finishes, every per-node deliverable — tables, a mermaid architecture diagram, a
slide deck, the poster — compiles into a single business blueprint you can read
and export. Individual artifacts, the flow JSON, and a canvas image are all
exportable too.
How we built it
Stack: Next.js (App Router) · React Flow · Zustand · the Google Agent Development Kit (ADK) for TypeScript · Gemini · SQLite — deployed on Google Cloud Run.
- Builder + Runner, not a monolith. The ADK runtime has two roles: a Builder
agent plans the DAG (returns strict JSON, hardened into a valid, laid-out graph),
and a Runner executes each node as its own
LlmAgentover a shared session. The executive roles are generated per run to fit your asset — not a fixed template. - Google AI throughout. Every agent calls Gemini via the ADK, routed through an
AI Studio key or Vertex AI (ADC) with a single env flip, all behind one
resolveModelConfighelper. Image generation uses Gemini's dedicated image model. - Human-in-the-loop that steers the graph. The orchestrator plants exactly one human checkpoint; the answer folds into shared state so the whole team stays in sync.
- Model Armor guardrails. Real ADK
before/afterModelCallback+beforeToolCallbackblock prompt injection, redact secrets/PII, and veto unsafe tool calls — at the framework level. - Persistent Memory Bank. A SQLite-backed ADK
BaseMemoryServicegives the team durable, cross-session memory that survives restarts. - Deployed on Google Cloud. Built locally for
linux/amd64, pushed to Artifact Registry, and served on Cloud Run (scale-to-zero, stateless), with a per-IP rate limiter, Vertex quota caps, and a budget kill-switch Cloud Function as cost/abuse controls.
Challenges we ran into
- A page-freeze that only happened in real Chrome. The report view locked up in a
GPU browser but ran fine headless. The culprit wasn't markdown or
mermaid— it was abackdrop-bluroverlay composited over infinitely-animating SVG edges, starving the compositor. Pausing edge animations whenever an overlay is open fixed it. - Vertex model availability by region.
gemini-3.5-flashreturned a clean 404 on regionalus-central1but 200 on theglobalendpoint — Gemini publisher models aren't "enabled," they're served in specific locations. Verifying the model with a raw REST call before deploy saved a runtime failure. - Containerizing a native dep behind a corporate proxy.
better-sqlite3needs the build's Node major to match the runtime's, and a TLS-inspecting proxy broke npm in the Docker build. Pinning node:22 + pnpm and trusting an extra root CA via a build-time secret (never in the runtime image) got a clean, portable build. - Keeping the team in sync. Preventing agents from re-asking a decided question meant propagating human answers into shared state that every downstream node reads.
Accomplishments that we're proud of
- A genuinely multi-agent system where the team is generated per asset, not hardcoded — and where a single human answer visibly reshapes the downstream plan.
- Real guardrails and real memory using the ADK's own callback and memory primitives, not bolted-on wrappers.
- End-to-end on Google Cloud, with both the app (Cloud Run) and the model (Vertex AI) in the same project — plus real cost/abuse controls so a public URL is safe to share.
- Demoable offline. No key falls back to a deterministic heuristic planner + preset artifacts, so the whole flow still runs.
What we learned
- The ADK's Builder/Runner split and shared sessions are a clean way to model a human-in-the-loop multi-agent graph — the checkpoint and memory fall out naturally.
- "Works headless" ≠ "works on a GPU": some bugs are compositor-level, not logic-level.
- With Gemini on Vertex, region/endpoint is as important as the model id.
- Good agent UX is about where you pause — one well-placed decision beats a dozen confirmations.
What's next for ConsultingDAG
- Parallel execution via the ADK
ParallelAgentfor independent branches. - A durable, multi-user backend (persistent Memory Bank beyond a single instance).
- Richer artifacts — real slide-deck export, and optionally a distinct Google model (e.g. Gemma for a mixed-model team, or Veo/Lyria for richer marketing assets).
- Deeper repo analysis tools for the technical-due-diligence path.
Built With
- artifact-registry
- cloud-run
- docker
- gemini
- generative-ai
- google-adk
- google-cloud
- mermaid
- multi-agent
- next.js
- node.js
- react
- react-flow
- sqlite
- tailwindcss
- typescript
- vertex-ai
- zustand
Log in or sign up for Devpost to join the conversation.