When a workflow beats an agent

▶ Watch (06:09)

Bouchard’s autonomy slider runs from a single prompt to multi-agent crews, and most client work sits at the cheap end. A Canadian CRM company asked for a multi-agent marketing chatbot to win an AI grant. The actual job (plan, retrieve, generate, validate, fix) ran in fixed order with the same context, so Towards AI shipped one agent with specialist tools instead. Ticket triage was even simpler: six steps, same order every time, a workflow with no branching. Agents earn their overhead only when the system must react to the environment.

Splitting research and writing into two systems

▶ Watch (20:22)

Research is open-ended: scrape pages, digest YouTube videos, pull GitHub repos, search again when something is missing. Writing is the opposite, locked to a tone, a structure, and a banned-word list. Towards AI split the two so each side gets the freedom or the constraint it needs. The research agent dumps everything into a research.md file. The writing workflow reads that file plus a human-written guideline.md. No orchestration framework sits between them, just a Python script that runs one then the other.

Wiring the research agent through MCP

▶ Watch (34:46)

Vaid registers three tools on a fast MCP server: deep_research (Gemini grounded search with cited sources), analyze_youtube_video (Gemini reads the video frame by frame, two to three minutes per call), and compile_research (writes research.md). Claude Code is the harness; an mcp.json in the repo root spawns the server over stdio. Vaid then ran the Claude Code calling the MCP tools live (53:41), and the agent spotted gaps in its first answer and fired follow-up queries on its own.

tools do the work

The same workflow can be served as a Claude skill, loading only its frontmatter until invoked.

Controlling generation with guideline, profiles, and few-shot

▶ Watch (70:57)

Iusztin’s writer feeds the LLM four things: the user’s structured guideline (topic, angle, key points, target audience, character constraint), three static profile files (LinkedIn structure, a terminology profile with a long banned-word list, and Iusztin’s own bio for voice), and three few-shot example posts. The guideline can override profile defaults per post. Three example posts is a guess that worked; he started higher and trimmed because every token in the system prompt costs latency, money, and accuracy. Fine-tuning would shrink the prompt further but adds friction the team did not want.

The evaluator-optimizer review loop

▶ Watch (81:30)

A second LLM call with a fresh context window reviews the draft against guideline, research, and the three profiles. Separate context kills the writer’s bias toward its own prose. The reviewer outputs Pydantic objects with profile, location, and comment fields, so the editor (the writer again) sees exactly which paragraph violated which rule and why. Iusztin runs four iterations and keeps every version on disk, because writing is subjective and the most aggressive rewrite is rarely the best one. He demonstrated the slop-score check on a generated post (74:35) scoring lower than human writing.

Building an LLM judge with a labeled dataset

▶ Watch (97:00)

Vibe-checking 100 posts is impossible, so Iusztin built a binary classifier. He pulled 20 high-traction posts from his LinkedIn, reverse-engineered each guideline, ran the deep research agent on it, and regenerated the post through the real writing workflow rather than letting the model fabricate the target.

you actually want to see results

He labeled each generated post pass/fail with a two-or-three-sentence critique, split into train/dev/test, then ran the LLM judge on dev and test splits (107:43) and tuned against F1 until both scores matched, guarding against overfit.

Notable Quotes

tools do the work Samridhi Vaid · ▶ 1:00:16

you actually want to see results Paul Iusztin · ▶ 1:40:29

Key Takeaways

  • Start with the simplest prompt; only add agency when the system must branch dynamically on user input.
  • Split research and writing because one needs flexibility and the other needs strict tone and structure.
  • Calibrate an LLM judge with a labeled train/dev/test split before trusting any production score.