← All sessionsHomeSearch
C7 EST | 14 Day AI Sprint·Day 3 | AI Automations - Introduction to Automation with n8n·4:48:00

Day 3: n8n From Zero — Triggers, Fixed vs Expression, an AI Spam Classifier, and Your First Lead-Routing Workflow

Akhil Day mentor - educator and software developer, 5,000+ learners mentored, former learner in this program; builds the whole lead-management workflow live and then rebuilds it from a whiteboard · Harshad Office-hours co-mentor - Head of Growth at a YC company; recurring across the sprint · Cameron Office-hours co-mentor - runs an AI automation agency (Techify AI); vibe-coding lead on Day 7 · Uthappa Host - opens the main session, breakout logistics

The short version

  1. n8n = 'nodemation': node-based automation with 500-1000+ native integrations, ~7,800 templates, SOC2/GDPR, and a self-host option. Akhil calls it the 'gold standard' because anything unsupported can still be reached with a generic HTTP/webhook node.
  2. Canvas rules: every workflow starts with a Trigger (manual, app event, or n8n's own form); data flows left to right; a node shows input on the left, config in the middle, output on the right after 'Execute step'.
  3. The one idea that unlocks n8n: FIXED vs EXPRESSION. A fixed value is hardcoded and never changes; drag a field from the input panel into a box and it becomes an expression that reads live data. 'One of them has to be an expression... else there's no point of having a conditional statement.'
  4. The build: Form (name, company, email, project scope) -> If (scope not empty) -> Message a Model as a yes/no spam classifier with a strict one-word output -> Switch renamed 'spam'/'genuine' -> Google Sheets Append Row into two tabs. One-way write: edits in the sheet do not flow back.
  5. Model economics as taught: GPT-4.1 at $3 in / $12 out per million tokens, 1 token ~ 4 characters, 1M tokens ~ 750k words ('10 books'); Akhil's sizing heuristic - Nano for 100-150 lines of input, Mini 200-400, standard 400-800, Pro 800+. ChatGPT Plus does NOT include API access.
  6. Office hour themes (49 questions): temperature near 0 + RAG as the two hallucination levers; OpenRouter Rankings by category to pick a model; Flow's frames-to-video takes only start+end (chain clips for more, or use 'ingredients to video'); keep one primary reference image for character consistency; 'learning is uncomfortable' - skills over tools.

The concepts

01

n8n in one tour: nodemation, templates, integrations, self-hosting

The name is 'nodemation' with eight letters squeezed out of the middle - and that is the whole product: nodes, automated.

n8n is open-source, node-based automation. The landing-page tour covers the 14-day trial, '500+' integrations (Akhil guesses 1,000+ in practice), SOC2/GDPR compliance, and the GitHub repo (~168k stars) that lets you self-host - 'you don't have to pay subscription' - at the cost of some managed AI features (~80-90% parity), versus roughly EUR 20/month for the starter plan. The Templates tab holds ~7,800 workflows; ~5% are complex, the rest 'plug and play' starters, and searching the node library (Slack, HubSpot) is how you check whether an app is natively supported.

Positioning versus Make.com (mentioned as 'easier' but per-module billing, which gets expensive at scale) is left for Day 4's office hour.

Why it matters

Every automation and agent in this sprint - and most of Paul's Catalyst sessions - is built on this canvas; the self-host option is what OpenClaw/Hermes-style always-on setups later assume.

Go deeper

In one line: n8n = open-source node-based automation; cloud trial or self-hosted; ~7,800 templates; native integrations plus generic HTTP/webhook nodes for everything else.

'nodemation' -> n8n; node-based automation (l3186017 0:15)

14-day free trial; 500-1000+ integrations; SOC2 and GDPR (l3186017 0:16-0:17)

Self-host from GitHub (~168k stars): no subscription, ~10-20% AI-feature loss vs ~EUR 20/month plan (l3186017 0:17-0:19)

~7,800 templates; search nodes to check app support (l3186017 0:21-0:22)

▶ Watch this taught:

02

Triggers and the left-to-right canvas

Nothing runs until something happens. The first node is always the something.

Every workflow begins with a Trigger: 'Trigger manually' for proofs of concept, 'On app event' (Gmail 'on message received', Slack 'on bot mention', a new user), or 'On form submission' - n8n's own embeddable form builder, which means no Google Form is needed. Data moves left to right; open any node and the left panel is what came in, the centre is configuration, the right is what went out after 'Execute step', which Akhil presses constantly to preview the live form and each node's output.

The demo form: 'Project Onboarding Form' with Name (required), Company, Email (email type - validates the pattern), Project Scope (left optional on purpose to teach the empty check).

Why it matters

Reading input-left / output-right is how you debug every n8n workflow; the habit of executing each step is the difference between guessing and knowing.

Go deeper

In one line: Trigger (manual / app event / form) starts the run; nodes read the previous node's output (left), apply config (centre), emit output (right); Execute step previews any node.

First node is always a Trigger; no event, no run (l3186017 0:24)

On Form Submission doubles as a hosted form builder - no external form needed (l3186017 0:37)

Node anatomy: input left, config centre, output right (l3186017 0:31)

Execute step to preview trigger output and test each node while building (l3186017 0:34)

Field types matter: Email type validates format; Required toggle per field (l3186017 0:35-0:38)

▶ Watch this taught:

03

Fixed vs Expression: the one setting that makes a condition mean something

The If node kept checking 'I want to buy Nike shoes' no matter what the form said. Nothing was wrong with the logic - the value was hardcoded.

Every field in a node config is either Fixed - static text typed in, identical on every run - or an Expression - a reference to a field in an upstream node's output, created by dragging the field from the input panel into the box (a live preview appears). Akhil demonstrates the bug: a condition comparing a fixed string to itself always passes. The fix is one drag. Rule: 'one of them has to be an expression... else there's no point of having a conditional statement.'

The If node itself: one condition (value, operator, comparison) routing to a True or False branch; here 'Project Scope is not empty' with String type. Students point out the Required toggle would make the check redundant; Akhil agrees but keeps it to teach the node. The workbook swaps If for a Filter node - the only difference from the live build.

Why it matters

Nine out of ten 'my workflow does the same thing every time' questions in later office hours are a fixed value where an expression was needed.

People get this wrong

Typing the field name into the box is enough for n8n to look it up.

Typed text is a fixed string. Only an expression (dragged, or written in {{ }}) reads the actual value.

Go deeper

In one line: Fixed = hardcoded constant; Expression = live reference to upstream data (drag to create); any condition needs at least one expression side.

Drag a field from the input panel into a box to turn Fixed into Expression with live preview (l3186017 0:49-0:50)

A condition with two fixed sides never changes result (l3186017 0:52)

If node: one condition, True/False branches; here 'Project Scope is not empty' (String) (l3186017 0:45-0:47)

Required on the form would replace the empty check - acknowledged (l3186017 1:42, 1:49)

Workbook uses a Filter node instead of If; otherwise identical (l3186017 2:01)

▶ Watch this taught:

04

Message a Model as a one-word classifier, plus token math and model sizing

You do not need a fancy 'classify text' node. Ask the model for one word and route on it.

Under n8n's AI category, 'Message a Model' sends a prompt to OpenAI, Gemini, Anthropic or Grok and returns text. Used as a binary spam/genuine classifier with a strict output instruction - 'If the lead request is spam, output the word yes. If not, just say no' - so the next node can route deterministically. The prompt mixes fixed role text ('I run a website development agency...') with two dragged-in expressions (Project Scope, Email) and teaches the model an email-genuineness heuristic by example (abcabc@abc.com, xyz123). Live bug: OpenAI GPT-4.1 nano threw a model-ID error; Akhil swapped to a Google Gemini node (2.5 Flash) with a Google API key and moved on.

Economics: GPT-4.1 = $3 per million input tokens, $12 per million output; 1 token ~ 4 characters; 1M tokens ~ 4M characters ~ 750k words ~ '10 books'. His personal sizing heuristic: Nano for 100-150 lines of input, Mini 200-400 (more reasoning), a standard model like GPT-4.1 for 400-800, Pro for 800+ - or just ask ChatGPT which model fits. And a ChatGPT Plus subscription does not include API access; keys are bought separately.

Why it matters

Constraining output to a single token is the cheapest way to make an LLM step reliable inside an automation - the same trick Day 4 formalizes as JSON output.

Go deeper

In one line: Message a Model = plain LLM call in n8n; force a one-word answer for routing; size the model to input length; API access is separate from chat subscriptions.

Used as a yes/no classifier rather than a dedicated Classify node (l3186017 1:00)

Prompt = fixed role/task text + dragged expressions + example spam patterns + one-word output rule (l3186017 1:10-1:15)

GPT-4.1: $3/M in, $12/M out; 1 token ~ 4 chars; 1M tokens ~ 750k words (l3186017 1:03-1:04)

Sizing heuristic: Nano 100-150 lines, Mini 200-400, standard 400-800, Pro 800+ (l3186017 1:09)

OpenAI node model-ID bug -> swapped to Gemini 2.5 Flash live (l3186017 1:17-1:20)

ChatGPT Plus/Pro does not include API access (l3186017 1:04)

▶ Watch this taught:

05

Switch for named routes, Google Sheets Append Row, and the full lead workflow

how-to

If gives you two doors. Switch gives you as many as you can name.

The Switch node routes on equality rules - model output equals 'yes' -> path renamed 'spam', 'no' -> 'genuine' - replacing the default 0/1 labels. An If node could do two branches; Switch scales to N named routes and reads better. Two Google Sheets 'Append Row in Sheet' nodes, one per branch, write to a spreadsheet 'Lead Inquiry Database' with tabs Spam and Genuine (columns Email, Name, Message; Company deliberately dropped). n8n reads the header row and offers the columns; values are dragged from upstream. Live tests: 'abcabc@abc.com / I want to eat chocolate' landed in Spam; 'build a website with ecommerce capabilities for shoes' in Genuine.

Two teaching notes: the write is one-directional - editing the sheet does not update n8n; and the keywords 'route' and 'if' in a requirement map to Switch/Router and If nodes respectively. Akhil then rebuilds the whole flow from a whiteboard sketch to fix the shape in memory.

Do it in this order
Why it matters

This form -> classify -> route -> store shape is the template for half the automations Paul has seen since (lead qualification, support triage, content routing).

Go deeper

In one line: Form -> If (not empty) -> Message a Model (yes/no) -> Switch (spam/genuine) -> Google Sheets Append Row x2; one-way write; Switch = N named routes.

Switch routes on equality against fixed 'yes'/'no'; rename outputs from 0/1 to spam/genuine (l3186017 1:23-1:26)

If = two outcomes; Switch = N named routes (l3186017 1:52)

Sheets Append Row auto-detects header columns; map by drag (l3186017 1:29-1:30, 1:55-1:56)

One-way write - sheet edits do not sync back (l3186017 1:57)

Both test paths verified live (l3186017 1:24, 1:31-1:33)

'route' -> Switch/Router node; 'if' -> conditional node (l3186017 1:40-1:59)

▶ Watch this taught:

06

Office Hour 1 distilled: hallucination levers, picking a model, Flow's frame limits, consistency

Forty-nine questions in an hour. Most of them were the same six questions wearing different clothes.

Grounding: two levers - temperature toward 0 (0-1 scale, 1 = creative/random) and RAG; top-p/top-k exist but matter less; optionally a second 'checker' agent reviews the first. RAG re-explained through the Tesla-manual Dify exercise: chunk the knowledge base, retrieve the relevant pieces per query, generate only from them, refuse the rest ('sorry, I can't help'). Model choice: OpenRouter's Rankings tab filtered by category - Grok Code Fast 1 led programming, Gemini 2.5 Flash had led marketing 'for months'; for video, Sora 2 or Veo 3, with the caveat that 'best' changes monthly.

Video mechanics: Flow's frames-to-video takes only a start and an end frame - for three, chain two clips (end of one = start of the next) or use 'ingredients to video', which blends uploaded images without treating them as frames; generate 16:9 and crop in post; text-to-video is fine when you do not need shot-level control. Consistency for a long piece: one primary reference image, same model, same lighting/angle/aspect ratio, and regenerate from the primary, not from a drifted last frame. Tools: Dify is an interface not a model (no local-disk access without an MCP); Msty's 'knowledge stacks' are its built-in local RAG; NotebookLM for RAG-over-your-docs plus podcast/explainer output; custom GPTs and Gemini Gems are prompt-only, not workflow-embeddable - use n8n for agentic video work. Attitude: 'learning is uncomfortable'; 'there's gonna be thousands of tools' - learn the frameworks.

Why it matters

These answers recur on Days 4, 5, 8 and 9; having them once here saves re-reading three more Q&A hours.

Go deeper

In one line: Grounding = low temperature + RAG; pick models by OpenRouter category rankings; Flow = start+end frames (chain or use ingredients mode); consistency = one primary reference, fixed settings.

Temperature 0-1: toward 0 deterministic, toward 1 creative; RAG is the other main lever (l3302263 0:06-0:07)

OpenRouter Rankings by category: Grok Code Fast 1 (programming), Gemini 2.5 Flash (marketing) at recording (l3302263 0:19-0:20)

Flow frames-to-video = start + end only; chain clips or use ingredients-to-video (l3302263 0:23-0:25)

Character consistency: one primary image, same model/lighting/angle/ratio; regenerate from the primary (l3302263 0:42-0:43)

Dify is an interface, not a model; local files need an MCP server (later) (l3302263 0:10-0:11)

NotebookLM = RAG over uploads + podcast/explainer generation (l3302263 0:37-0:39, 0:54-0:55)

Custom GPTs / Gemini Gems are prompt-only; agentic video pipelines belong in n8n (l3302263 0:44-0:45, 0:51-0:52)

▶ Watch this taught:

Every concept, three clicks deep

The same concepts as a quick reference: the closed row is the glance, open is the study card, and every timestamp jumps into the recording.

01n8n in one tour: nodemation, templates, integrations, self-hostingn8n = open-source node-based automation;

n8n = open-source node-based automation; cloud trial or self-hosted; ~7,800 templates; native integrations plus generic HTTP/webhook nodes for everything else.

'nodemation' -> n8n; node-based automation (l3186017 0:15)

14-day free trial; 500-1000+ integrations; SOC2 and GDPR (l3186017 0:16-0:17)

Self-host from GitHub (~168k stars): no subscription, ~10-20% AI-feature loss vs ~EUR 20/month plan (l3186017 0:17-0:19)

~7,800 templates; search nodes to check app support (l3186017 0:21-0:22)

02Triggers and the left-to-right canvasTrigger (manual / app event / form) starts the run;

Trigger (manual / app event / form) starts the run; nodes read the previous node's output (left), apply config (centre), emit output (right); Execute step previews any node.

First node is always a Trigger; no event, no run (l3186017 0:24)

On Form Submission doubles as a hosted form builder - no external form needed (l3186017 0:37)

Node anatomy: input left, config centre, output right (l3186017 0:31)

Execute step to preview trigger output and test each node while building (l3186017 0:34)

Field types matter: Email type validates format; Required toggle per field (l3186017 0:35-0:38)

03Fixed vs Expression: the one setting that makes a condition mean somethingFixed = hardcoded constant;

Fixed = hardcoded constant; Expression = live reference to upstream data (drag to create); any condition needs at least one expression side.

Drag a field from the input panel into a box to turn Fixed into Expression with live preview (l3186017 0:49-0:50)

A condition with two fixed sides never changes result (l3186017 0:52)

If node: one condition, True/False branches; here 'Project Scope is not empty' (String) (l3186017 0:45-0:47)

Required on the form would replace the empty check - acknowledged (l3186017 1:42, 1:49)

Workbook uses a Filter node instead of If; otherwise identical (l3186017 2:01)

04Message a Model as a one-word classifier, plus token math and model sizingMessage a Model = plain LLM call in n8n;

Message a Model = plain LLM call in n8n; force a one-word answer for routing; size the model to input length; API access is separate from chat subscriptions.

Used as a yes/no classifier rather than a dedicated Classify node (l3186017 1:00)

Prompt = fixed role/task text + dragged expressions + example spam patterns + one-word output rule (l3186017 1:10-1:15)

GPT-4.1: $3/M in, $12/M out; 1 token ~ 4 chars; 1M tokens ~ 750k words (l3186017 1:03-1:04)

Sizing heuristic: Nano 100-150 lines, Mini 200-400, standard 400-800, Pro 800+ (l3186017 1:09)

OpenAI node model-ID bug -> swapped to Gemini 2.5 Flash live (l3186017 1:17-1:20)

ChatGPT Plus/Pro does not include API access (l3186017 1:04)

05Switch for named routes, Google Sheets Append Row, and the full lead workflowForm -> If (not empty) -> Message a Model (yes/no) -> Switch (spam/genuine) -> Google Sheets Append Row x2;

Form -> If (not empty) -> Message a Model (yes/no) -> Switch (spam/genuine) -> Google Sheets Append Row x2; one-way write; Switch = N named routes.

Switch routes on equality against fixed 'yes'/'no'; rename outputs from 0/1 to spam/genuine (l3186017 1:23-1:26)

If = two outcomes; Switch = N named routes (l3186017 1:52)

Sheets Append Row auto-detects header columns; map by drag (l3186017 1:29-1:30, 1:55-1:56)

One-way write - sheet edits do not sync back (l3186017 1:57)

Both test paths verified live (l3186017 1:24, 1:31-1:33)

'route' -> Switch/Router node; 'if' -> conditional node (l3186017 1:40-1:59)

06Office Hour 1 distilled: hallucination levers, picking a model, Flow's frame limits, consistencyGrounding = low temperature + RAG;

Grounding = low temperature + RAG; pick models by OpenRouter category rankings; Flow = start+end frames (chain or use ingredients mode); consistency = one primary reference, fixed settings.

Temperature 0-1: toward 0 deterministic, toward 1 creative; RAG is the other main lever (l3302263 0:06-0:07)

OpenRouter Rankings by category: Grok Code Fast 1 (programming), Gemini 2.5 Flash (marketing) at recording (l3302263 0:19-0:20)

Flow frames-to-video = start + end only; chain clips or use ingredients-to-video (l3302263 0:23-0:25)

Character consistency: one primary image, same model/lighting/angle/ratio; regenerate from the primary (l3302263 0:42-0:43)

Dify is an interface, not a model; local files need an MCP server (later) (l3302263 0:10-0:11)

NotebookLM = RAG over uploads + podcast/explainer generation (l3302263 0:37-0:39, 0:54-0:55)

Custom GPTs / Gemini Gems are prompt-only; agentic video pipelines belong in n8n (l3302263 0:44-0:45, 0:51-0:52)

Tools referenced

ToolCoverageMomentContext
n8ndemonstratedFull lead-routing workflow built twice
Google GeminidemonstratedGemini 2.5 Flash as the working classifier model after OpenAI node bug
OpenAI APIdemonstratedGPT-4.1 nano attempted; pricing walkthrough
Google SheetsdemonstratedAppend Row into Spam/Genuine tabs
OpenRouterdemonstratedRankings tab by category (office hours)
DifyexplainedInterface not model; branching knowledge bases
MstyexplainedKnowledge stacks = built-in local RAG; demo deferred again
NotebookLMexplainedRAG over uploads; podcast/explainer output
Google FlowexplainedFrames-to-video vs ingredients-to-video; Scene Builder
Make.commentionedNamed as the easier alternative
fal.aimentionedPay-per-use video models recommendation
CapCutmentionedFree editor recommendation
HeyGenmentionedAvatar layer over NotebookLM explainers
SoramentionedSora 2 as a top video pick
VeomentionedVeo 3 as a top video pick

Action items

    Resources mentioned

    Resources
    • docDay 3 workbook - Option 1 (required) and Option 2 (preview)
    • docOffice Hour 1 question log (49 Q&As)

    Extraction notes

    This page was built from an auto-generated transcript, which garbles product and people's names. Those were corrected silently in everything above and logged here for transparency. The warnings flag claims that were true on the recording day but change fast.

    Transcript corrections applied

    The transcript saysThe trainer actually means
    n a 10 / any 10 / anything / an item / Enitann8n
    Diffie / DiffyDify
    MistyMsty (local LLM app with knowledge stacks)
    Fode.ai / 4 dot ai4o.ai or similar photo-editing tool - unresolved
    GROC code fast 1Grok Code Fast 1
    DevastoreDevstral (Mistral)
    Speaker Labs, HinkfieldHiggsfield
    Gemini 2.4 FlashGemini 2.5 Flash
    Chagibuty / ChargebeeChatGPT

    True on recording day — verify before relying