Project 03 · 5-Workflow System
Vinefo Sales
Automation System
n8n · Google Sheets · Google Sheets Trigger · Gmail · Gmail Trigger · JavaScript (Code nodes) · Schedule Trigger
Project Overview
Vinefo is a SaaS platform built for restaurants, hotels, cafés, and lounges — offering POS, inventory management, and business analytics tools. The challenge: how do you reach hundreds of food and hospitality businesses, follow up persistently, detect who is interested, handle bookings, and manage calls — without a sales team doing all of it manually?
I designed and built a complete 5-workflow automated sales pipeline in n8n that handles every stage of the outreach process — from the first cold email all the way through to post-call follow-up — automatically, with zero manual intervention.
What This Replaced
Manual cold emailing · tracking who was contacted · following up · checking for replies · handling Calendly bookings · sending call reminders · writing post-call emails
Overall Results
Full outreach pipeline runs automatically from first contact to post-call follow-up
Every lead personalised by name and business — not a generic blast
Follow-up sequence self-manages — right email, right timing, every time
Reply detection pauses follow-ups the moment a lead responds
Calendly bookings handled automatically — new or existing leads covered
Call reminders sent to both lead and client without any manual action
Post-call follow-up sent automatically after every call
Complete lead history tracked in one Google Sheet at all times
Workflow 01 of 05
Cold Email Outreach — Initial Contact
The Problem
Reaching out to restaurants and hospitality businesses one by one is slow and inconsistent. Manually writing personalised emails and remembering who was contacted — at scale — breaks down fast. Leads fall through before they even get a first message.
The Solution
The moment a new lead is added to the Vinefo Leads Google Sheet, this workflow fires. It runs through two IF nodes — the first checks whether the lead has a valid email address, the second checks whether they have already been contacted. Only if both conditions pass does it send a fully personalised email with a Calendly booking link. Immediately after sending, the lead's status is updated to "Contacted" and the outreach date is recorded in a separate sheet update.
Results
Cold outreach fires automatically the moment a new lead is added
Every email personalised with contact name and business name
Lead status and sent date recorded automatically after every send
Already-contacted leads skipped automatically — no duplicates
Workflow Path
Google Sheets Trigger (Row Added) → Check Email Exists → IF Not Already Contacted → Send Initial Email → Update Status to Contacted → Record Initial Sent Date
Workflow Diagram
Workflow 02 of 05
Follow-Up Sequence — Daily 8AM
The Problem
Most leads do not reply to the first email. Without a consistent follow-up system, potential customers are lost because nobody remembered to check back. Doing this manually across dozens of leads at different stages is impossible to sustain.
The Solution
Every morning at 8AM, this workflow runs through all active leads, filters out anyone who has already replied or been marked dead, calculates how many days have passed since the last touchpoint, and routes each lead to the right follow-up stage via a Switch node. Leads get Follow-Up 1, then Follow-Up 2, then a final closing email — after which they are marked Dead. Every status change is recorded back to the sheet.
Results
Follow-up sequence runs automatically every day — no manual scheduling
Each lead gets the right email at the right stage, every time
Pipeline stays clean — non-responsive leads automatically marked Dead
All status changes logged back to Google Sheets automatically
Workflow Path
Schedule Trigger → Get All Leads → Filter Active Leads → Calculate Days Elapsed → Route by Follow-Up Stage (Switch) → Send Follow-Up 1 → Update Status Follow-Up 1 · Send Follow-Up 2 → Update Status Follow-Up 2 · Send Final Email → Update Status Dead
Workflow Diagram
Workflow 03 of 05
Reply Detection — Hourly
The Problem
When a lead finally replies, timing is everything. Without automatic detection, follow-up emails keep going out even after someone has responded — and the client finds out too late to respond while the lead is warm.
The Solution
Every hour, this workflow reads all leads, filters to those with no reply yet, searches Gmail for a reply from each lead, and checks whether one was found. When a reply is detected, the lead is marked "Reply Received" in the sheet, a notification is sent to the client, and the sheet row is appended or updated accordingly.
Results
Replies detected within the hour — no lead goes cold
Follow-up emails pause automatically the moment a reply comes in
Client notified instantly when a lead replies
Sheet always updated accurately with reply status
Workflow Path
Schedule Trigger → Get All Leads → Filter No Reply Yet → Search Gmail for Reply → Did Lead Reply? → Update Sheet: Mark Replied → Notify You — Lead Replied → If Lead Replies → Append or Update Row in Sheet
Workflow Diagram
Workflow 04 of 05
Calendly Booking Handler
The Problem
When a lead books through Calendly, that information needs to make it into the leads tracker immediately — whether the person already exists in the sheet or is a brand new contact. Without automation, the client has to manually update the sheet every time a booking comes in.
The Solution
When a lead books a call through Calendly, a confirmation email lands in Gmail. This workflow detects it via Gmail Trigger, extracts the booking details using a JavaScript code node, then reads all leads to find a matching email. If the lead already exists, their row is updated and status changed to "Call Booked." If they are new, a new row is added. Either way, the client receives a notification.
Results
Every Calendly booking captured and logged automatically
Existing leads updated; new leads added — both cases handled
Client notified instantly with full booking details
Lead sheet always accurate after every booking
Workflow Path
Gmail Trigger → Extract Booking Data (JavaScript) → Get All Leads → Find Matching Lead → Lead Found? → If Yes: Update Sheet (Call Booked) → Notify You — Existing Lead · If No: Add New Lead Row → Notify You — New Lead
Workflow Diagram
Workflow 05 of 05
Call Reminders & Post-Call Follow-Up
The Problem
Booked calls get forgotten. Leads miss them. The client forgets to prepare. And after the call, nothing gets sent — so the momentum from a good conversation disappears because there was no immediate follow-up to push the lead toward a decision.
The Solution
This workflow monitors all leads with booked calls and handles two moments via a Switch node. One hour before the call, a reminder email goes to the lead and a separate one goes to the client. After the call, a personalised post-call follow-up email is sent and the lead's status is updated to "Call Done."
Results
Reminder sent to lead and client one hour before every call
Post-call follow-up sent automatically after every call
Lead status updated to Call Done without any manual action
No dropped balls — every call is handled from start to finish
Workflow Path
Schedule Trigger → Get All Leads → Filter Call Booked → Calculate Call Timing → Route Pre or Post Call (Switch) → [Pre-Call: Reminder Email to Lead + Reminder Email to You] · [Post-Call: Post-Call Follow-Up Email → Update Sheet — Call Done]
Workflow Diagram
Project 04 · 2-Workflow System
VoiceFlow: AI Morning Call
& Data Logging System
n8n · Vapi (AI Voice Agent) · Google Sheets · Gmail · Webhook · HTTP Request · JavaScript (Code node)
Project Overview
Running a business means there are things that need to be logged every single day — expenses, items, transactions, whatever matters to your operation. The problem is not that you cannot do it. The problem is that life gets busy, the day takes over, and logging is the first thing that slips. By the end of the week you are trying to reconstruct what happened from memory, and nothing is accurate.
This is a 2-workflow AI voice agent system that solves that completely. Every morning at a scheduled time, the system automatically calls you. You pick up, have a short natural conversation with the AI agent, tell it what you need to log — item, amount, category — and it handles everything from there. No app to open. No form to fill. No typing. Just a phone call.
What This Replaced
Remembering to log things manually every day · end-of-week guesswork reconstructing transactions from memory · no real-time record of daily items, amounts, or categories
Overall Results
Agent calls you automatically every morning — you never initiate anything
Data captured through natural voice conversation — no typing, no app, no form
Every entry logged instantly to Google Sheets with a timestamp
Dashboard grows automatically — full history always available
Failed calls trigger an immediate Gmail alert so nothing breaks silently
Zero manual effort required once the system is live
Workflow 01 of 02
The Caller — Outbound Call Trigger
The Problem
An AI voice agent is only useful if it actually reaches you. If you have to trigger it yourself every morning, you might as well just log things manually. The agent needs to come to you — on a schedule, automatically, every single day.
The Solution
This workflow runs on a schedule and fires every minute to trigger an outbound phone call via an HTTP Request to the Vapi API. Once the call is triggered, it checks whether Vapi accepted the request successfully. If the call triggered correctly, the call ID and success status are logged. If the call fails, a Gmail alert is sent immediately with the full error details so the failure is caught fast.
Results
Agent calls you automatically at the scheduled time — no manual trigger
Every failed call fires an immediate Gmail alert
Call success logged with Vapi call ID automatically
Workflow Path
Every 1 Minute → Trigger Vapi Outbound Call (HTTP Request) → Did Call Trigger Successfully? → If True: Log Call Success · If False: Email Alert — Call Failed
Workflow Diagram
Workflow 02 of 02
The Receiver — Data Capture, Validation & Logging
The Problem
When the call ends and the AI agent has collected your data, that information needs to go somewhere immediately and reliably. But what if one of the variables came back empty or missing? Without validation, incomplete data gets logged to your sheet silently and you never know it happened.
The Solution
This workflow sits as a webhook receiver. The moment Vapi sends data after your call ends, two things happen simultaneously — a Respond to Webhook node sends an instant confirmation back to Vapi so the agent flow closes cleanly, and the data is passed to a JavaScript code node that extracts item, amount, and category from the voice agent's tool call payload and cleans them. The cleaned data then hits a filter node — All 3 Variables Present? — the decision point of the entire workflow. If all three fields came through successfully, a Set node organises the data with a timestamp and Success status, then it is logged to the Voice Flow Dashboard in Google Sheets. If any variable is missing or empty, the incomplete data takes the failed path — organised separately with a Failed status, logged to a separate failed entries sheet, and a Gmail alert is sent immediately so you know exactly what went wrong.
Results
Every call logged automatically — zero manual input
Data validated before it reaches the sheet — no silent bad entries
Successful entries logged with timestamp and Success status
Failed entries caught, logged separately, and flagged via email alert
Vapi always gets an instant response — agent flow never hangs
Workflow Path
Receive Vapi Call Data (Webhook) → [Simultaneously: Respond to Vapi] + [Code in JavaScript → All 3 Variables Present? → If Yes: Organise Success Data → Log to Sheets (Success) · If No: Organise Failed Data → Log to Sheets (Failed) → Email Alert — Failed Entry]
Workflow Diagram