AI Workflow Automation: Build, Sell, and Scale
Design revenue-grade AI workflows and agents—from capture to communication—using your choice of builder. Ship faster, win clients, and run reliable automations without drowning in tools.
What you'll build
A client-ready AI workflow system that captures data, enriches it, makes AI decisions, and takes action across email, chat, sheets, and even voice calls. You’ll wire real APIs, structure data, add agents, and launch a polished automation that’s easy to sell and scale.
Pick your primary builder (Make.com, n8n, Zapier, Lindy, Claude Code, or Retail AI), then follow the same business-grade blueprint end to end.
- Intake via webhooks, forms, email, or PM tools
- Scrape/fetch data, enrich with AI, validate with rules
- Write to Sheets/DB, notify via Gmail/Slack/Telegram/SMS
- Optional voice agent to call, route, and summarize
- Sell as retainers, track KPIs, scale with multi-agents
Platforms & tools
Step 1 — 🧭 Decide what to build
Pick the right automation pattern before touching tools. Use this decision tree to scope: If you must be in the loop each time, create a custom GPT; if steps are fully rules-based, build a standard workflow; if steps are sequential but need AI judgment, build an AI-enhanced workflow; if you need autonomy and flexible tool use, build an AI agent.
Match solution level to complexity: Level 1 (use built-in AI features), Level 2 (connectors via Zapier/Make), Level 3 (custom multi-agent builds).
Half of automations you can deploy quickly don’t need AI at all—ship those first for fast wins.

ChatGPT — where you'll do this
Step 2 — 🧱 Pick and prep your primary platform
Start a fresh project and enable a fast deploy path. If self-hosting n8n, get hosting live first; if Make/Zapier, start a scenario/zap; if building agents, open a new project/workspace.
Optionally import a starter workflow template to accelerate build-out.
| Platform | What to do in this step |
|---|---|
| Make.com | Create a new Scenario. Name it “[Client] Intake → AI → Sheets → Notify”. Turn Scheduling OFF until testing. Save frequently. |
| n8n | Spin up n8n (fast path: host on Webspace Kit). Click “New Workflow”. Name it clearly. Optional: Import a template (e.g., WSK technical analysis agent JSON). |
| Zapier | Create a Zap. Choose an initial Trigger (webhook or app). Name steps with verbs, e.g., “Parse → Enrich → Append → Email”. |
| Lindy | Start a new Agent. Set goal, tools, and context. Remember Lindy context stacks across nodes—be explicit when you need isolation. |
| Claude Code | Create a new Project. Enable MCP servers/skills you need (Sheets, Slack, GitHub, etc.). Use /loop to maintain tasks on a schedule. |
| Retail AI | Create a new voice agent. Choose an outbound or inbound agent type. Note Agent ID and number assignment workflow. |
If you want revenue quickly with less technical overhead, creators report Make.com often ramps 2–3× faster than heavier self-hosting setups early on.

N8N — where you'll do this

Make.com — where you'll do this
Step 3 — 🔐 Set up Google OAuth and APIs
Create a Google Cloud project, configure OAuth consent, and enable the APIs you’ll use (Sheets, Gmail, Drive, Docs, YouTube Data API v3). Create OAuth client credentials (Web App). Add your platform’s redirect URI exactly. Copy Client ID/Secret into your builder’s Google credential panel.
Repeat per API if you scope credentials separately. Publish the consent screen when ready for production.
During OAuth, Google may show an unverified warning—use “Advanced → Go to [app]” for your own projects while you await verification.
Step 4 — 📓 Design your data tables (Sheets first, DB later)
Use Google Sheets as your operational source of truth; it’s transparent and client-friendly. Create separate tabs for each pipeline:
- Leads: name, phone, email, job_title, job_description, job_opportunity, status, last_contacted, icebreaker.
- Icebreakers: url, first_name, last_name, email, website_url, headline, location, phone, multi_line_icebreaker.
- Source_Posts: post_id, url, content, author_linkedin_url, posted_date, post_image_url_1..3.
- Destination_Posts: generated_content, original_post_url, original_linkedin_url, generated_date, post_status.
- Content_Spec: title, word_count, primary_keyword, secondary_keywords, internal_links, external_links, addl_instructions, outline_doc, article_doc, website_url.
- YouTube_Videos: id, published_at, title, views, likes, comments, favorites, description, tags, duration, definition, small_thumb, medium_thumb, large_thumb, standard_thumb, channel_id, channel_title, embed_html.
- Video_Analysis: video_id, project_id, video_url, video_ms_duration, title, transcript, viral_score, viral_reason, related_topic, clip_editor_url, generated_caption.
- Ad_Archive: timestamp, ad_archive_id, page_id, original_image_url, page_name, ad_body, date_scraped, spin_prompts, asset_folder, source_folder, spun_folder, direct_spun_image_link.
n8n data tables write fast for small batches (≈1–60 rows). For 400+ rows, performance is comparable to Sheets—default to Sheets for client visibility.

Google Sheets — where you'll do this
Step 5 — 🔌 Connect Sheets and Gmail in your builder
Create platform credentials using the Google OAuth client you made. Test a simple read (Sheets) and a draft send (Gmail) before wiring logic. Keep scopes minimal (read/write only what you need).
| Platform | What to do in this step |
|---|---|
| Make.com | Add Google Sheets and Gmail modules. Authorize via OAuth. For custom APIs, use “Make an OAuth 2.0 request” with your client ID/secret and Make’s redirect URL. |
| n8n | Create Google Sheets and Gmail credentials. Paste Client ID/Secret. Authorize via the n8n redirect URL. Map a test sheet and send a test email. |
| Zapier | Connect Google Sheets and Gmail accounts under “My Apps”. Insert a sample action for each to validate authentication. |
| Lindy | Expose Sheets/Gmail via MCP skills or integrate through middle-tier webhooks to your Make/n8n service. |
| Claude Code | Configure MCP servers for Sheets/Gmail or use HTTP with OAuth. Store secrets securely; avoid hardcoding in code. |
| Retail AI | Email and Sheets are typically called via your workflow backend (n8n/Make) through HTTP; keep Retail AI focused on telephony. |
When calling Google Sheets directly via HTTP, the append URL pattern is: spreadsheets/{spreadsheetId}/values/{range}:append. Extract spreadsheetId from the sheet URL.
Step 6 — 🧲 Configure intake triggers (webhooks, email, forms, PM, chat)
Decide how work enters your system and standardize payloads. Common triggers: Webhook (contact forms, sites), Gmail (inbound), ClickUp (tasks), Typeform (responses), Slack/Telegram (commands). If using WordPress, embed a simple HTML form posting to your webhook URL.
| Platform | What to do in this step |
|---|---|
| Make.com | Use “Custom webhook” or app triggers (Gmail/ClickUp/Typeform/Slack/Telegram). For ClickUp HR flows, watch task → route to email invite. |
| n8n | Add Webhook node for forms; Gmail node for email; ClickUp/Slack/Telegram nodes as needed. Replace dev with prod webhook URL on your site. |
| Zapier | Use Webhooks by Zapier or native app triggers. Map sample payloads immediately for robust field mapping later. |
| Lindy | Trigger agent via webhook or connect to Slack to receive commands; log results to Sheets via your backend. |
| Claude Code | Expose a webhook endpoint (serverless) or poll task systems with scheduled runs. Use Slack MCP for on-demand tasks. |
| Retail AI | Generally triggered by calls; use an HTTP node in n8n/Make to start outbound calls on events in your backend. |
For Slack event subscriptions, your webhook must echo back the challenge parameter during verification—run the trigger step while verifying.
Step 7 — 🕸️ Scrape or fetch structured data
Use Apify to scrape dynamic sites safely. Learn its three primitives: Actors (headless programs), Tasks (runs), and Datasets (results). Add your Apify API key in your builder, execute an Actor or Task, and collect the dataset items for processing.
For channel analytics or job boards, use prebuilt actors (e.g., YouTube/Instagram analytics, Upwork listings) or authenticated scrapers where permitted.
User-generated platforms like LinkedIn have heavy anti-scraping—favor Apify actors over homegrown scrapers to reduce breakage and risk.
Step 8 — 🧠 Add AI reasoning and content generation
Connect your model provider (OpenAI, Claude, Gemini). Use system prompts to define role and constraints; pass user/context inputs; ask for JSON where structure matters. Choose models by task: use more capable models for analysis/coding, lighter/cheaper ones for templated writing.
When you need very long context, consider routing via OpenRouter to models with larger windows.
System: You analyze resumes against a job description. Output strict JSON with fields: strengths[], weaknesses[], risk_factor, reward_factor, overall_fit (0–100), justification. User: Candidate resume: [RESUME_TEXT] Job description: [JOB_DESCRIPTION] Return only JSON.
System: You are a HR policy agent for [COMPANY]. Answer using the latest policy in Google Docs named [DOC_NAME]. If unknown, say you’ll forward to HR—do not invent facts.
System: You are a support bot. When asked about order status, check the tracking sheet [SHEET_NAME] and return the latest update in plain language. If missing, escalate.
System: Expert research agent. Use [RESEARCH_TOOL] to summarize what [COMPETITOR_NAME] has shipped/announced in the last [TIME_RANGE]. Return sources with exact quotes and links in JSON: {summary, highlights[], quotes[{text, source_url}]}.System: Trend research assistant for approachable small business ideas. User: Search the web and return top 3 trending, novel, approachable ideas. For each: one-sentence summary and one content angle I could post today. Return a clean numbered list.
System: Concise market intelligence assistant. Use [WEB_TOOL] to pull last 24h stock news. Cross-reference Google Sheet [PORTFOLIO_SHEET] (held tickers). Output buy/sell/hold notes with 1-line rationale each.
System: Expert newsletter planner. Given 3 articles from the past week, create a creative/fun title and main topics for a weekly email. Keep it skimmable.
System: Podcast script writer for a solo monologue show. Write only the intro, under 60 seconds, about [TOPIC] in [TONE].
System: You are a video prompt agent for a video-generation subworkflow. Collect missing prompt fields from the user, validate constraints, then call tool create_video with the final prompt JSON.
System: You are a helpful writing assistant. User: Convert the following transcript to a comprehensive blog post in Markdown (ATX). Tone: casual Spartan. Transcript: [TRANSCRIPT]
User: Turn this transcript into at least 5 concise LinkedIn posts, separated by |. Tone: Spartan laconic. Emojis sparingly. Style like Microsoft’s content marketing. Transcript: [TRANSCRIPT]
Use structured JSON outputs for reliability (schemas for strengths/weaknesses/ratings, etc.). Pick exact model versions—generic defaults can drop quality and cost control.

OpenAI — where you'll do this
Step 9 — 🔁 Iterate, branch, and append to Sheets
Transform arrays into rows, branch logic, and write outputs to Sheets. Use iterators to handle lists, routers to split paths, and a final append to your destination tab with mapped fields.
Where native modules fall short, call the Google Sheets API directly with the values:append endpoint.
| Platform | What to do in this step |
|---|---|
| Make.com | Iterator → AI/format nodes → Aggregator (if needed) → Google Sheets “Add a row” or HTTP values:append. Keep iterator/aggregator inside the gray zone. |
| n8n | Split in Batches/Item Lists → AI nodes → Set/IF nodes → Google Sheets Append or HTTP Request to values:append. |
| Zapier | Code/Formatter steps to explode arrays → Filter/Path → Google Sheets Create Spreadsheet Row(s). |
| Lindy | Return structured JSON from the agent → Webhook to your backend → Append via Make/n8n. |
| Claude Code | Generate JSON → use an HTTP client to call Sheets API values:append with OAuth token. |
| Retail AI | Send call outcomes to your backend (HTTP) → your backend appends to Sheets. |
In Make.com, only modules inside the iterator–aggregator gray zone can see iterator variables; map outputs from the aggregator for downstream steps.
Step 10 — 🧮 Filter, validate, and add rules
Apply guardrails before actions. Common patterns: filter posts with an AI relevance boolean; remove shorts from YouTube by rejecting items where duration string length ≤ 5; compute freshness with date math (now − createdAt in days).
Add decision trees: e.g., if shipping_status == delivered → send delivery confirmation; if delayed → send apology + ETA; else → escalate.
Template most long-form text and have AI fill only the variable parts—this improves predictability and reduces hallucinations.
Step 11 — ⏱️ Add delays and human-in-the-loop
Space communication with sleep/delay modules (e.g., wait 4 minutes before thank-you email, then 3 minutes before next-steps). For approvals, branch to a human review channel, then merge back on approval.
Use a respond-to-webhook step to immediately return a structured JSON acknowledgment to upstream apps while the workflow continues asynchronously.
Use plan-first, execute-later: have an agent propose a step plan for a task, then switch to auto mode only after you approve the plan.
Step 12 — 📨 Wire communications (email, chat, SMS)
Send emails via Gmail: set subject/body from AI outputs. Post to Slack/Telegram for status and errors. For SMS, format a personalized expression with first name and clear context.
If your intake is Gmail-based, connect Perplexity (or another research tool), generate a summary, and email it back automatically.
Generate an email to invite [CANDIDATE_NAME] to schedule an interview. Include the link: [CAL_COM_EVENT_LINK]. Keep it concise, friendly, and specific about the role.
Write a clear task request email from [HR_NAME]. Include the task details: [TASK_DETAILS] and submission form link: [FORM_LINK]. Subject and body only.
Always map dynamic variables—if a field like {{first_name}} isn’t populated, your message may literally say “Hi, first_name.” Filter and join to the correct record first.
Step 13 — 📞 Add a voice agent (optional but high-impact)
Provision an AI voice agent to follow up leads or handle inbound. Configure its system prompt, call settings, and knowledge base, then connect it to your workflow via HTTP.
Set transfer and end-call functions and reference them explicitly in the prompt to avoid hanging calls.
| Platform | What to do in this step |
|---|---|
| Retail AI | Create agent; note Agent ID. Configure: responsiveness (0.8–0.95), interruption sensitivity (~0.8), backchanneling on low, speech normalization, end-on-silence (30–60s), max duration (12–20 min). Add knowledge (site map/Docs). Make call transfer a global node. Retrieve phone number (verify identity). |
| n8n/Make | HTTP Request: set JSON body with from (Twilio/assigned number), to (+1[PHONE]), callType:'phone', agentId, and dynamic fields (first_name, job_title, description, opportunity). Store the API key securely. |
| Zapier/Lindy/Claude Code | Trigger calls indirectly via your n8n/Make backend’s HTTP endpoint. Log outcomes to Sheets and notify Slack. |
Include an explicit “end call” instruction—many voice agents won’t hang up on their own. Enable voicemail detection to auto-terminate on voicemail.
Step 14 — 🖼️ Media handling (images, Cloudinary, JSON bodies)
For product or creative assets, upload originals to Cloudinary and store URLs in Sheets. When generating images, use edit endpoints with a source image to preserve resemblance; set size and model parameters explicitly.
When calling media APIs, trim JSON bodies to only required fields to reduce errors.
Transform this product photo into a high-quality studio-style image. Keep true to the original shape and color. Remove background imperfections. Lighting: softbox neutral. Output square crop.
Using text-only image generation often yields off-model results—use the image edit endpoint with a proper source image to keep fidelity.
Step 15 — 🧵 Content pipeline (scrape → filter → generate → post)
Collect posts into Source_Posts, filter by AI relevance, generate variants, and append to Destination_Posts with metadata (original URLs, dates, status). Randomly send ~25% back to AI for bullet/subheading edits to add variability.
For multi-channel distribution, add a router after publish to cross-post to social platforms or queue for a social scheduler.
Auto-video pipelines often reuse the first frame as the thumbnail—avoid repetitive thumbs when auto-posting by overriding cover frames.
Step 16 — 📺 YouTube analytics pipeline (optional)
Enable YouTube Data API v3, fetch channel videos, and append structured metrics to your YouTube_Videos sheet. Filter out Shorts by duration string length (≤5). Optionally, add clip scoring and topic tagging for repurposing.
When researching top content, sort by views, then filter by upload date range to find recent winners.
Step 17 — 🧑💼 Recruiting & screening pipeline (optional)
Trigger on new applications (ClickUp/Typeform). Enrich candidate data, email interview invites with a Cal.com link, and score resumes with an AI node wired to output structured JSON fields. Map outputs to your Candidates sheet (strengths, weaknesses, risk, reward, overall fit, justification) and update ATS fields.
Subject: [Personalized hook for [Name]] Hi [FIRST_NAME], I'm [SENDER_NAME], an AI recruitment assistant from [COMPANY]. I’ll call you in ~10 minutes to discuss [ROLE]. Looking forward to our chat.
Step 18 — 🔑 Custom OAuth2 and raw HTTP APIs
When a provider lacks a native module, register an OAuth2 app, set authorization and token URIs, and point redirect to your platform’s OAuth redirect URL. Store tokens securely and refresh automatically.
For POST bodies, remove unused fields; include only what the API needs (dimensions, asset IDs, text input, etc.).
Some telephony APIs require two requests (initiate, then poll for completion). If you don’t poll, you’ll miss final status data.
Step 19 — 🧪 Test end-to-end and add monitoring
Run the full pipeline: intake → fetch/scrape → AI → transform → append → notify. Verify every field, link, and conditional path. Add a Slack channel for errors, timeouts, and guardrail violations. Exercise chat commands (Telegram/Slack) for summaries and status checks.
Return structured responses from webhooks so upstream systems can render results instantly.
Compare [TOOL_A] vs [TOOL_B] for [USE_CASE]. Return a concise table of pros/cons and sources. Then list 3 emerging trends I should watch next quarter.
If a run fails mysteriously in n8n (e.g., “destination node not found”), refresh and re-run—the visual editor can desync during edits.
Step 20 — 🔒 Security, boundaries, and change management
Minimize scopes, prefer app-specific credentials, and log sensitive actions. For MCP or agent tools, restrict capabilities and avoid over-scoped access. Decide boundaries before changes: what to extract, what depends on it, and how the new service should communicate back.
Choose horizontal scaling (new agents for distinct responsibilities) or vertical scaling (add tools/subagents to an agent) deliberately; document handoffs.
Avoid hardcoding secrets and URLs. If you must for speed, track them and migrate to environment variables before production.
Step 21 — 📦 Package, price, and position your offer
Productize by outcomes: missed-call capture, lead follow-up, recruiting screeners, content ops, analytics digests. Offer deliverable-based retainers with weekly strategy, priority plans, training, and unlimited maintenance within scope.
Price by tier (starter automation → lead gen → full suite) or by value (25–50% of annual savings). Include simple, visible deliverables clients touch.
Clients judge you by visible outputs—emails, Slack pings, meetings, reports—not backend wizardry. Over-communicate and show artifacts.
Step 22 — 🧲 Prospect with focused outreach
Hyper-niche to a wedge (e.g., AI receptionists) to avoid competing with large firms. Find leads in niche communities, comment sections, job boards, and among followers of relevant pages. Use omni-channel: email + LinkedIn DM + Instagram DM + X message.
On Upwork, optimize profile, apply to 3–5 jobs/day with a tailored Loom and custom asset based on the post.
Subject: [Personalized hook for [Name]] Hey [NAME], noticed you might be missing leads after hours. I help businesses automate lead follow-up with AI so more inquiries turn into appointments—no extra staff. Want a quick 10-min look?
Subject: [Personalized hook for [Name]] Hey [NAME]—I built you an AI employee that can follow up and book new appointments automatically. Interested in trying a small proof of concept this week?
Subject: [Personalized hook for [Name]] Hi [CLIENT_NAME], I built a quick [CUSTOM_ASSET] for your brief so you can see approach and quality. 2-min Loom: [LOOM_URL]. If helpful, I can ship a small milestone in 48h so you get value before committing.
Benchmark reply rates: <2% weak, 2–5% improve copy/targeting, 5–10% solid, >10% excellent (source-reported).
Step 23 — 🤝 Discovery, proposal, and onboarding
Run discovery with a 70/20/10 split: problems/goals (70%), outcome-framed solutions (20%), objections/next steps (10%). Send a short proposal with timeline, deliverables, and KPIs. Onboarding call: cadence, timelines, communications, platform signups, 2FA, Q&A.
Build a short slide pitch highlighting current problems and how automation boosts bookings or reduces lag—end with a scoped solution and next step.
Make a concise 5–10 slide deck diagnosing [BUSINESS_NAME]’s online bottlenecks and how AI automation can lift bookings by improving speed-to-lead and follow-up. Slides: pain points first, solution path, small POC, KPIs, timeline, pricing options.
Step 24 — 📊 Track metrics and iterate
Log per-channel KPIs: open/response rates, booked calls, cost/lead, CTR, conversion, CPA, proposals sent/accepted, closed deals, engagement, traffic, inbound leads. Use AI to summarize feedback/comments into: what’s working, what’s disliked, what’s wanted more.
Increase communication frequency—most clients want more touchpoints than they receive.
Step 25 — 🤖 Scale with agents and long-context research
Automate your own fulfillment: proposal generation, onboarding, lead scrape/enrich, campaign drafts, and auto-replies. Use different models per agent to optimize cost/perf. For very long briefs or docs, route via OpenRouter to models with million-token windows or use Gemini 3 Pro for extended context.
Start each agent in plan mode to ask clarifying questions, then allow autonomous execution with tight tools and guardrails.
Mistakes to avoid
Chasing complex agent stacks before shipping simple, high-ROI workflows delays revenue.
Over-scoped permissions and hardcoded secrets increase risk. Use minimal scopes and env vars.
If your trigger doesn’t echo challenge, Slack event subscriptions will fail.
Forgetting to map dynamic values makes agents read placeholders aloud or in emails.
Voice agents may never hang up if you don’t include an explicit end-call instruction.
Don’t generate entire documents—template most text and fill only variable parts.
DIY scrapers for protected platforms waste time. Use Apify actors where possible.
In Make, modules outside the gray iterator zone can’t access its variables.
Using generic or cheapest GPT-4 variants can reduce output quality—pick versions deliberately.
Triggers and sending often use different credential types—configure both if applicable.
Random editor bugs can appear; refresh and re-run before deep debugging.
If clients can’t see outputs (emails, Slack, reports), they undervalue your work.
Income Forecast
Resources
Table of Contents
This guide is 1% of what members get
All 7 tools, 100+ grounded playbooks and 252 vetted tools, prompts and repos — on one membership.
Land your dream job. Start your dream business.
Swipe real ATS jobs — we fill out and submit each application.
Score your resume 0–100 against live roles before you apply.
Recruiter-tested one-page resume, auto-built from your LinkedIn.
Paste a job link — get tested + your fastest study path.
252 vetted tools, prompts, repos and GPTs across 86 categories.
338,947+ live ATS jobs across 18,000+ company boards.
100+ grounded, step-by-step income playbooks.
Join free today — All-Access is $7 for 7 days, then $27/month. Cancel anytime.
Learn More →