Engineering / Workflow Presets
Paste a website URL, get a service-ad pipeline
A product story with real engineering underneath: workflow presets materialize a full automation graph, and website presets bootstrap branding from the live site.
March 2026 · Product · Engineering · Workflows · By Alfred Pararajasingam
The product problem
Turning a website into recurring Instagram service ads is a chain of decisions: scrape the page, extract a business profile, write ad copy, generate a background, overlay copy, place a logo, compose slots, schedule posting. Power users can wire that on the canvas. Most people will not.
We wanted one action that feels product-simple ("paste your site URL") and expands into a real, editable workflow they still own afterward.
What the user experiences
- Create a project with an empty workflow canvas
- Open Workflow Presets → choose Website Service Ads
- Paste a website URL and apply
- Land on a wired canvas: scrape source, business profile, ad copy, image, overlay, tip-card compose
- Logo, brand styles, and business profile update shortly after (background import)
- Review outputs, then connect an Instagram poster
Same pattern for other presets (app review video, presenter video, clips, blog): different graphs, same apply model. Website Service Ads is the square-graphic path that starts from a live link.
Presets are a graph DSL, not form defaults
Each preset declares nodes and edges in code: inputs (data source, knowledge files), automations (action + prompt + file type), templates (slot layout), and canvas positions. That graph is the source of truth for both preview and apply.
Product benefit: adding a new preset is mostly declarative. Engineering benefit: preview, illustration, and materialization all read the same config instead of drift between UI and runtime.
Apply: one transaction, then async polish
Applying a preset only works on projects with an empty workflow canvas. That constraint is intentional: merging a full graph onto an existing one is a product and engineering mess we chose not to solve on day one.
Inside a single DB transaction we:
- Create library resources (scrape endpoint, stock/knowledge placeholders)
- Create automations with their prompts and process types
- Resolve / attach the content template
- Create chains (edges between nodes, including template slots)
- Save canvas layout so the graph opens where it should
Then, for website presets, we enqueue a background job to refresh site assets. The user can explore the canvas immediately; branding catches up without blocking apply.
The interesting bit: bootstrapping brand from a URL
A service ad without a logo, business profile, and brand tone still “works,” but it doesn’t feel like their site. So after apply we import:
- Business profile: services, benefits, CTA, audience, and tone from page copy.
- Site logo: crawl the page (and a few related paths like About),
collect image candidates, score them (header marks, schema.org, common
/logopaths), and let a vision model pick the best match against a prompt like “main brand logo, not favicon.” - Brand styles: pack visible page text + CSS cues, then ask a text model for short reusable notes (colors, fonts, tone), not a dump of raw CSS.
Heuristics first, AI as judge: that keeps cost bounded and avoids asking vision to score dozens of noisy images. If import fails, stock fallbacks keep the pipeline runnable.
How this differs from Agentic Transform
Website Service Ads (preset)
- Starts from a URL + scheduled scrape
- Fixed, editable multi-node chain
- Business profile + logo + brand styles as knowledge inputs
- Tip-card template compose for Instagram ads
Agentic Transform
- Starts from a document
- One automation; agent chooses tools in a loop
- Vision QA retries for readable overlay text
- Best for one-shot “make a graphic from this copy”
Same platform building blocks (text-to-image, overlay, merge layers); different product shapes. Presets encode a known happy path; the agent explores within a small tool kit.
What we’d tell another team
- If the workflow has more than a few nodes, ship a graph preset, not a wizard of disconnected forms
- Keep apply atomic; enrich branding async
- Refuse messy merges (empty canvas) until you have a clear product model for them
- Pair heuristics + AI for site assets; always have a fallback
- Let users edit the graph after apply: presets are a head start, not a black box
Try it / read more
Apply Website Service Ads from Workflow Presets, or read how Agentic Transform plans a graphic in a tool loop.