Case Study

Concept Build

Social Media Production Engine

A two-part n8n system that turns a cold lead list into LinkedIn, Facebook, and Instagram content — grounded in what each lead's own website actually talks about, not a template repeated across every name on the list.

Concept Build — Not a Client Project

The modeled result below uses a reasonable range for manual research-and-drafting time (20–30 minutes per lead), not measured data from a live engagement. If this gets attached to a real client rollout, their actual per-lead time and batch volume should be swapped in before any of this copy goes client-facing.

Type
Concept Build — not a client project
Sector
Concept: Any business working a cold lead list
Batch Size
50 leads (modeled)
Built
2026
Status
Concept Build — not yet client-deployed
Core Feature
Site-grounded angles, then 3-platform content

At a Glance

~20 hrs
research & drafting saved per batch (modeled)
5 angles
per batch, grounded in the leads' own sites
3 platforms
written in parallel from one angle
Zero
drafting until a human picks an angle

01

Executive Summary

A cold lead list is usually used once, for outreach, and then sits idle. This concept build puts it back to work: it scrapes every lead's site, turns what those companies actually say about themselves into five distinct content angles, and — once a human approves an angle — writes a LinkedIn post, a Facebook post, and an Instagram caption from it in parallel.

At a modeled 25 minutes of manual research and drafting per lead (range 20–30 minutes) across a batch of 50 leads, this replaces roughly 20 hours of manual work per batch. That figure is an illustrative estimate based on a reasonable time range, not a confirmed client result.

02

The Problem

Turning a lead list into social content usually means a person opening each company's website, figuring out what they actually do and care about, and drafting a post around it by hand. That research step is the easiest thing to skip under time pressure, and skipping it leaves a generic template repeated across every lead, which reads exactly like what it is.

  • Cold lead lists get used once for outreach, then sit idle
  • The research step — reading each site to find what a company actually cares about — is the first thing dropped under time pressure
  • Without it, the fallback is one generic template repeated across every name on the list
  • Even when the research gets done, writing for three platforms triples the work, so one platform gets the good version and the rest get copy-paste

03

The Approach

Separate idea generation from content writing. The system runs in two stages instead of one pass. Part 1 scrapes every lead's site and turns the combined content into five distinct angles per batch: cheap to generate, nothing committed yet. Part 2 only runs once a human picks a specific angle worth using, and that is when the system spends effort writing three platform-specific versions. Content generation that nobody will use never happens.

Ground every angle in the lead's actual site, not a prompt template. Each batch's five angles come from scraping and combining the real text of every site in that batch, so the audience appeal and messaging points are specific to what those companies say about themselves rather than a generic industry angle applied to everyone on the list.

Catch API shape mismatches before they silently break downstream steps. Two response-shape gotchas would otherwise have failed quietly. The OpenAI Responses API (v2.3) returns generated content at output[0].content[0].text rather than the older message.content shape, so the angle array lived at output.0.content.0.text.angles. Get that path wrong and the “split into five rows” step just returns nothing, with no obvious error. Separately, Airtable's get-record operation nests all fields under fields["Field Name"] while create-record does not. Mixing the two up in Part 2's angle-lookup step would have silently read undefined into every generated post instead of the actual angle text.

04

Architecture

LayerImplementation
Lead sourceGoogle Sheet trimmed to Company Name + Website, from a raw Apollo CSV export
ScrapingHTTP Request node per lead, continue-on-error so one dead site never halts the batch
Idea generationOpenAI GPT-4.1 (Responses API), one call per batch, returns 5 structured angles as JSON
Review layerAirtable "Possible Angles" table plus a manually-added button field that triggers Part 2 via webhook
Content generation3 parallel GPT-4.1 branches (LinkedIn / Facebook / Instagram) per approved angle
OutputAirtable "Created Content" table, each row tagged by platform

05

Modeled Results

Modeled illustration based on a 20–30 minute per-lead baseline and a 50-lead batch. Not measured data from a live engagement.

~20 hours
of manual research and drafting saved per 50-lead batch, based on an illustrative 20–30 min/lead baseline — not a client-confirmed figure
3 pieces
of platform-ready content per approved angle, generated in parallel, instead of one platform getting full attention and the rest getting copy-paste
Zero wasted
no angle is committed to full drafting until a human has actually picked it, so nothing is generated for ideas nobody will use

06

Why This Matters

The instinct with content is to generate more of it. The better move is to generate less, later. Splitting idea generation from writing means the expensive step only runs on ideas a human has already judged worth using, and the cheap step can afford to be thorough because nothing is committed yet. The human stays where judgment actually belongs: picking the angle.

The rest of the work was not the AI part. It was the two response shapes that fail silently: a JSON path one level off, and an Airtable operation that nests fields differently depending on which one you call. Neither throws an error. Both just quietly hand the next step nothing. That is usually where the real work is, in the details that look fine right up until the output is empty and nothing tells you why.

Stack

n8nOpenAI GPT-4.1 (Responses API)Google SheetsAirtableHTTP Request-based scraping
Soulwire Studio

Systems with soul: custom websites, AI automation, and the digital ecosystems behind them, built for mission-driven businesses.

© 2026 Soulwire Studio · Veteran-owned · San Antonio, TX