← Back to Portfolio
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.
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