ad-creative sprint line · brief in, reviewed package out

SprintOS

Twelve angles written, eight killed by a critic, four survive to a human. Nothing reaches an ad account.

status running · private n8nrole designed + built end to end
recorded runlive
The live dashboard reviewing the add+ coffee sprint: research with sources, the twelve scored angles with the eight the critic cut greyed out, the four ads that survived, and the reviewer starting to reject the whole batch with a reason. Recorded against the deployed app, not a mockup.
interactive · click and scroll itlive
The same run, readable: what it found about the real shop, five cited competitors, the nine gaps it admitted, all twelve angles with the critic's reasoning, and the four ads waiting on a human.
12 to 4angles generated, then cut by a critic scoring on thumb-stop, specificity, believability, and novelty.
5 sourcesreal Calapan competitors found and cited, each with the URL the claim came from.
9 gapsquestions the search could not answer, reported rather than filled with plausible guesses.
0 publishedno ad account is connected. The batch parks at a person and stops.
What it solves

The first run of this pipeline is the reason it exists in its current shape. Given a brief for add+ coffee, a real cafe in Calapan City, it wrote confident ads about bean sourcing and premium price points, because it had researched the coffee category and a national direct-to-consumer brand instead of the shop. The output was fluent and completely useless. A creative pipeline that cannot tell a local business from its category will produce that failure every time, and it will always look finished.

The constraint

Research had to be a stage in the line, not a tool the model may choose to reach for. Search runs deterministically before any writing, so it either happens or the run fails loudly. The research stage may only work from fetched results, every competitor claim carries the URL it came from, and anything the search could not establish goes into a gaps list instead of being inferred. A brief with no location is now a brief the planner treats as incomplete.

Who it serves

Anyone running paid social for a real business, especially a local one that a category-level search will describe wrongly.

Who it is for

A creative process with the judgment step kept: generation is cheap, so the interesting engineering is in what gets thrown away and who signs off.

How it works
  1. A brief, including where the business isName, product, location, audience, competitors. The location field exists because its absence is what caused the original wrong-business failure.
  2. Planner writes the searchesThe first queries look for the business itself: its pages, its menu, its prices, what customers say. Competitors come after.
  3. Firecrawl runs them as a stageSearch is deterministic and always executes. A failed search is visible, not silently skipped.
  4. Research, with citations and gapsFindings come only from fetched results, each with its source URL. Anything unanswered is listed as a gap.
  5. Twelve angles, then a criticAngles are scored 1 to 10 and cut to four, selected for different mechanisms rather than the four highest near-duplicates.
  6. Copy, then a personPaid-social copy for the survivors. Approve or kill each one, or reject the batch with a reason that is handed to the rerun.
The decision that was not obvious

Spend the first searches on the business itself, not the market. Queries one through three hunt the actual place by name and city, its social pages, its menu and prices, and what customers say about it. Only then does the planner look at competitors. The critic is the other half: it scores all twelve angles harshly and selects for mechanism diversity, so the four that survive cannot all be the same idea wearing different words. On the verified run it kept a liability inversion, a common-enemy list, an identity-coded exclusion, and a curiosity gap, and cut every hidden-gem and you-deserve-it frame.

What I would change if I rebuilt it today

The critic scores angles against a rubric, and nothing scores the finished copy. An angle can survive on a strong mechanism and then be written flat, which the pipeline currently cannot see. I would add a second gate on the copy itself, checking the claims in each ad against the research the way the SEO line checks its stats, so an ad that invents a price or a menu item never reaches the reviewer.

Built with
n8n Claude Firecrawl React dashboard on Vercel n8n data table as the store header-auth webhooks