← Back to Portfolio Handyman Ops Desk (n8n Multi-Agent)

Handyman Ops Desk — n8n Multi-Agent Business Workflow

Handyman Ops Desk is a no-code/low-code multi-agent workflow built in n8n Cloud that automates the front-office of a handyman business. A customer submits a service request through a Google Form; an Orchestrator workflow then coordinates four specialized agent workflows — Intake (Gemini-powered structured extraction), Pricing (rules-based JavaScript estimator with zip-aware travel and rush-fee logic), Scheduling (live time API + slot selector that respects customer day preferences), and Comms (Gemini-drafted confirmation message) — and emails differentiated confirmations to the client and operations team based on job urgency and estimate size.

My Role
Student
Company
Baylor University
Industry
Workflow Automation, AI Agents, Operations

Challenges

  • Coordinating four independent agent workflows over HTTP while preserving job, pricing, and scheduling context across each step
  • Forcing Gemini to return strictly valid JSON — the model often wrapped responses in markdown code fences (```json ... ```), breaking downstream parsing
  • Handling n8n quirks where embedded {{ }} expressions inside literal JSON in Respond-to-Webhook nodes failed validation
  • Routing high-priority or high-value jobs (urgency = high OR estimate > $300) to operations while normal jobs go straight to client confirmation
  • Normalizing inconsistent free-text address fields into structured address, unit, and zip components

Solutions

  • Designed an Orchestrator workflow that calls four sub-agent webhooks in sequence, using Set nodes (Store Job, Store Pricing, Store Scheduling) and Merge nodes to carry context forward between steps
  • Added strict JSON-only system prompts to every Gemini node and a JavaScript Clean JSON node that strips markdown fences before JSON.parse, with a clear error message preserving the raw output for debugging
  • Switched Respond-to-Webhook nodes to Expression mode (or Text + JSON.stringify with application/json content-type) to avoid literal-JSON validation errors
  • Built rules-based pricing in JavaScript: catalog lookup by service, zip-based travel cost (76706 = $0, 76708 = $10, else $20), and a 20% rush surcharge for high-urgency jobs
  • Implemented an IF node that branches on urgency or estimate threshold, routing to a Comms (Operations) path or Comms (Client) path with separate Gmail templates for each audience
  • Used Google Sheets Trigger (rowAdded) on a public Google Form response sheet so new customer requests automatically kick off the workflow with no manual intervention

Impact

  • Demonstrated a working agentic-orchestration pattern (one orchestrator, four specialized agents) entirely in a no-code GUI, with each agent independently activatable and testable via its own Production webhook
  • Reduced a manual triage workflow (read request → estimate → schedule → reply) into a single form submission that produces a fully-drafted customer email and an operations alert
  • Captured reusable n8n + Gemini integration patterns — JSON-only prompting, fence-stripping cleanup, and HTTP-body object passing — that generalize to any LLM-in-workflow project
  • Showed how rule-based deterministic logic (pricing, slot filtering) can be cleanly composed alongside generative AI (intake parsing, message drafting) in the same pipeline
  • Delivered a complete end-to-end business automation as a graduate-coursework mid-term project, from form ingestion to differentiated client and operations email outputs