Case study: business coaching crew in about 7 minutes
Wall-clock timings for a business-coaching crew in CrewDefine → Zero, plus why a specialized crew differs from a generic chat model for repeatable advisory work.
Wall-clock measurements from a single local session (20 Aug 2026): author a crew in CrewDefine, load it into Zero, ask a coaching question, then time follow-ups on the same thread.
Scope: founder / operator business coaching (seed–Series B B2B SaaS and services). Environment: CrewDefine CLI + Zero via Docker Compose on localhost. With Zero already running, authoring through first useful answer was about 7 minutes. Install and image pull are out of scope; see Getting started for that path.
The timings matter because they are cheap enough to treat the crew as a product artifact — not a one-off prompt. What you get after those minutes is a reusable division of labor, domain tools, and a UI that operators can share. That is the Lab Z bet relative to “open a generic model and ask carefully.” Broader market framing: Where Lab Z fits.
Why a crew instead of a generic model
A frontier chat model can improvise a coaching answer. It will not, by default:
- Keep the same specialist roles across sessions
- Force financial claims through a calculator or benchmark table before narrative
- Separate diagnosis, market research, and planning so each step is inspectable
- Expose answer verbosity as a product control (
summary/light/extended) rather than another prompt rewrite - Leave a trace of which agent and tool produced which claim
Those are the consistency mechanisms. They do not replace judgment or a formal eval harness, but they change the failure mode: instead of an eloquent monologue that silently skipped unit economics, you get a roster that is supposed to run diagnostics, call runway_and_scenarios / industry_kpi_benchmark, cite sources, and only then synthesize. When something is wrong, the execution graph shows where.
Fine-tuning here is mostly procedural and contractual — YAML personas, tool wiring, output composition — not a custom base model. You still call Claude / Gemini / OpenAI underneath. The specialization sits in the crew package you own in git and can load into Zero without rebuilding the app.
Who this is for
The same crew serves different jobs depending on who is in the seat:
| Persona | What they get |
|---|---|
| Founder / operator | A structured coaching pass (risks, KPIs, 90-day focus) without assembling a consulting stack |
| In-house strategy / finance partner | Repeatable runs with shared org context; answer modes for exec vs deep dive |
| Product / eng shipping an advisory surface | A loadable roster + plugins instead of hard-coding prompts in the UI |
| Coach / practice lead | A draft agenda grounded in tools and citations; human remains accountable for advice |
| Evaluator / teacher | Visible agent/tool traces for critique — not an opaque paragraph |
Lab Z’s wider set of offerings supports those personas beyond this one crew: CrewDefine for authoring and validation, Zero for multi-user runtime and traces, DataMaker for synthetic tables when demos must stay honest, pgLens for inspecting Postgres/SQLite before agents reason over extracts. See the apps catalog and Bring your data.
Timings
| Step | Wall clock | Notes |
|---|---|---|
| CrewDefine interview + persona draft + emit | ~4.0 min (242s) | Rich --seed brief; only 2 confirmation questions |
| Load crew into Zero + backend restart | ~5 s | Agents + 3 plugin tools registered |
First coaching question (summary mode) | ~2.6 min (159s) | Full multi-agent run; Gemini→OpenAI fallback under rate limits |
Follow-up: runway + KPI stress-test (light) | ~27 s | OpenAI provider; used runway_and_scenarios + industry_kpi_benchmark |
Follow-up: competitor foil (light) | ~85 s | Used competitor_snapshot + research tools |
Authoring → first useful answer: ~7 minutes with Zero already up (4 min define + 5 s load + 2.6 min answer).
Follow-ups are the more interesting operational number for day-to-day use: once the crew is loaded, a light runway/KPI pass returned in under half a minute on OpenAI; a competitor foil with research tools took a bit over a minute. That is the cadence of “ask again with the same roster,” not “rebuild the prompt.”
What we built
Crew: business-coaching-crew (display name Business Coach)
| Agent | Job | Notable tools |
|---|---|---|
director | Orchestrate, sufficiency checks | validate_information_sufficiency, generate_followup_questions |
diagnostician | Internal SWOT / docs | swot, knowledge_base, document |
market_researcher | Market + competitors | web_search, news_search, scrape_website, competitor_snapshot, citations |
financial_analyst | Unit economics | calculator, industry_kpi_benchmark, runway_and_scenarios |
action_planner | 90-day plan | generate_recommendations, generate_followup_questions |
synthesizer | Final report | visualizer, extract_citations |
Custom tools (implemented for this run):
industry_kpi_benchmark— heuristic CAC / LTV / churn / margin / burn-multiple ranges by industry + stagerunway_and_scenarios— cash + burn → base / optimistic / pessimistic runway tablescompetitor_snapshot— structured profile skeleton (optional URL fetch) for coaching comparisons
These are deliberately small and deterministic where possible (especially runway math and KPI tables). The point is not that they replace a FP&A model; it is that the financial specialist has a fixed interface to call instead of inventing numbers in prose. Answer modes: Summary · Light Coaching · Full Coaching Report. Output composition requires citations and allows charts/tables.
Step 1 — Author with CrewDefine (~4 min)
Interview model: claude-sonnet-4-6. Seed included roster, built-in tool assignments, and the three custom tools. With that detail in the seed, the interviewer mostly confirmed and drafted rather than re-deriving requirements. Most of the ~4 minutes was persona drafting, not Q&A.
Emit layout:
crews/business-coaching-crew/
crew.yaml
agents/{director,diagnostician,market_researcher,
financial_analyst,action_planner,synthesizer}.yaml
tools/{industry_kpi_benchmark,runway_and_scenarios,competitor_snapshot}.py
crewdefine validate passed (custom tools warn as non-built-in — expected). Validation is part of the consistency story: unknown agent IDs, missing director / synthesizer, and broken tool references fail before load.
Step 2 — Load into Zero (~5 s)
With Zero already running (docker compose on localhost:3000 / :3001):
- Copy agents + tools +
crew.yamlintobackend/crews/active/ - Set
AGENT_CONFIG_DIR/AGENT_PLUGINS_DIR - Restart backend
GET /api/crew returned Business Coach with the three answer modes. GET /api/tools listed the three custom plugins beside the built-ins. From an operator’s perspective the product switched roster without a redeploy of the frontend.

Step 3 — First question (~2.6 min)
Prompt (seed-stage SaaS founder vignette): ARR ~$180k, burn $45k, cash $320k, churn ~3.5%, CAC ~$2,800, weak wins vs Tableau-like tools — ask for top risks, KPI vs typical seed SaaS, and the single highest-leverage 90-day move. Mode: summary.
Observed in UI: 6 agents · 23 tools on the live execution graph; response wall-clock ~2:35 in the chrome, ~159s measured end-to-end on the SSE stream (includes Gemini 429 retries then OpenAI fallback).


The answer called out ~7.1 months runway, CAC near the high end of seed benchmarks, generic-BI positioning risk vs Tableau/Power BI, and a focus move: stop broad feature-parity acquisition, run tight customer interviews + a measurable retention pilot. Whether you agree with that advice is a separate question; what the run demonstrates is that the path to the answer exercised the intended specialists and tools rather than a single undifferentiated completion.
Step 4 — Follow-up latency
Two more questions on the same thread:
| Question | Mode | Time | Result |
|---|---|---|---|
| Runway scenarios + KPI compare | light | 27s | Used financial custom tools |
| Looker as positioning foil | light | 85s | Competitor snapshot + research |
First attempts under Gemini failed with a thought_signature tool-call error (400 INVALID_ARGUMENT). The same prompts succeeded with LLM_PROVIDER=openai / LLM_MODEL=gpt-4o. Timings should always name the provider; multi-agent tool loops are not provider-invariant yet.
Compared with starting a fresh generic chat for each follow-up, the thread keeps organization context and the same loaded crew. The second and third questions are not “new products”; they are additional passes over an owned roster.
What consistency does and does not buy
Does:
- Make expected work explicit (who runs, which tools exist, what output shape is requested)
- Make runs comparable across users and days
- Make failures localizable via traces
- Let you version and review the crew like application code
Does not:
- Guarantee better advice than a strong human coach or a carefully prompted specialist
- Remove provider quirks (see Gemini tool error above)
- Substitute for evals on your domain corpus
If you need a one-shot answer and never reuse the division of labor, a generic model is simpler. If you need the same coaching system available to founders, partners, and internal tools with inspectable behavior, the crew is the unit that holds that promise. Relative positioning against chat products and frameworks is spelled out in Where Lab Z fits.
Limits
- Does not include cold install (clone, image pull, keys) — see Getting started.
- Measures latency and workflow; not a scored coaching-quality study.
- Sparse CrewDefine seeds take longer than this dense-seed run.
- Custom KPI tables are coaching heuristics, not audited market data.
Reproduce
# Zero — Business Coach is bundled
cp .env.example .env
./scripts/demo.sh business-coaching-crew
# http://localhost:3000 — crew badge: Business Coach
# Or from a sibling CrewDefine checkout:
./scripts/load-crew.sh --restart ../CrewDefine/crews/business-coaching-crew
Timing scripts used for this note: CrewDefine/scripts/case_study_*.py. Formal protocol: WP-02.
Lab Z Field Note · August 2026 · local Docker · Claude (authoring), Gemini/OpenAI (runtime)