{"name": "Ep14 - Front Desk Package calculator (5 automations, $500/month)", "nodes": [{"parameters": {"formTitle": "Business Snapshot", "formDescription": "Six answers from the first call. The five automations value themselves.", "formFields": {"values": [{"fieldLabel": "Business name", "requiredField": true}, {"fieldLabel": "New leads a month", "fieldType": "number", "requiredField": true}, {"fieldLabel": "Calls missed a week", "fieldType": "number", "requiredField": true}, {"fieldLabel": "Average job ($)", "fieldType": "number", "requiredField": true}, {"fieldLabel": "Jobs a month", "fieldType": "number", "requiredField": true}, {"fieldLabel": "An hour of staff time ($)", "fieldType": "number", "requiredField": true}]}, "options": {}}, "id": "e1", "name": "Business Snapshot", "type": "n8n-nodes-base.formTrigger", "typeVersion": 2.2, "position": [0, 0], "webhookId": "ep14-business-snapshot"}, {"parameters": {"jsCode": "// Five front-desk automations: what each is worth to the client a month, and what it costs you to run.\n// Assumptions are deliberately modest. Change them for your trade.\nconst f = $input.first().json;\nconst n = k => Number(f[k]) || 0;\nconst leads = n('New leads a month'), missedWeek = n('Calls missed a week');\nconst job = n('Average job ($)'), jobs = n('Jobs a month'), hour = n('An hour of staff time ($)');\nconst missedMonth = Math.round(missedWeek * 4.33);\n\n// Value a month (revenue, not profit)\nconst leadReply = Math.floor(leads * 0.05) * job;          // 1 extra job per 20 leads answered in a minute\nconst missedCalls = Math.floor(missedMonth * 0.10) * job;  // 1 in 10 missed callers booked by text\nconst reviews = 1 * job;                                   // softest number: 1 extra job a month\nconst reminders = Math.floor(jobs * 0.03) * job;           // 3 in 100 no-shows saved\nconst invoices = 5 * hour;                                 // time only: 5 hours a month of chasing\nconst value = leadReply + missedCalls + reviews + reminders + invoices;\n\n// Cost to run a month (list prices, rounded up)\nconst AI = 0.01, TEXT = 0.02, NUMBER = 5, HOSTING = 20;   // per AI reply, per text all in, number + US texting registration, n8n cloud\nconst cost = leads * AI + (missedMonth * 2 * TEXT + NUMBER) + 1 + jobs * 2 * TEXT + 1 + HOSTING;\n\nconst price = 500;\nconst usd = x => '$' + Math.round(x).toLocaleString('en-US');\nreturn [{ json: { business: f['Business name'], leadReply, missedCalls, reviews, reminders, invoices, value, cost: Math.round(cost), price, multiple: Math.round(value / price * 10) / 10, margin: Math.round(price - cost),\n  line: `Lead reply ${usd(leadReply)} · Missed calls ${usd(missedCalls)} · Reviews ${usd(reviews)} · Reminders ${usd(reminders)} · Invoices ${usd(invoices)}` } }];"}, "id": "e2", "name": "Value It", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [260, 0]}, {"parameters": {"operation": "completion", "completionTitle": "={{ $json.business }}: ${{ $json.value.toLocaleString('en-US') }} a month of value for ${{ $json.price }}", "completionMessage": "={{ $json.line }}. Runs on about ${{ $json.cost }} a month. They get {{ $json.multiple }}x back; you keep ${{ $json.margin }}.", "options": {}}, "id": "e3", "name": "Offer", "type": "n8n-nodes-base.form", "typeVersion": 1, "position": [520, 0]}], "connections": {"Business Snapshot": {"main": [[{"node": "Value It", "type": "main", "index": 0}]]}, "Value It": {"main": [[{"node": "Offer", "type": "main", "index": 0}]]}}, "settings": {"executionOrder": "v1"}}
