Website publishing from Slack with human approval
Location-specific landing pages generated by Claude and v0, approved in Slack by a named person, deployed to Vercel with metadata, schema markup, discovery files and analytics configured in the generation step.
vercel.app/preview/austin-hvacWhere the pain concentrates
A marketing team running local SEO needs location-specific pages. The conventional path was an engineering ticket per page; the engineering team was not interested in being a copy-paste shop, and marketing was not interested in waiting a week.
Every page became a ticket
Marketing wrote the brief, engineering built the page, QA checked it, deployment shipped it. A one-week round trip for a landing page.
Manual handoffs lost context
Brief in Slack, copy in a Doc, page in a repo, deploy in a dashboard. Something got lost at every hop.
SEO drift
Metadata, schema markup, discovery files, Core Web Vitals. Each page had its own version of correct.
Approval was implicit
Who signed off on this page, when, for what reason? Reconstructable at best.
What marketing leads actually said
Brief, generate, approve, deploy
The design decision came first: generated output does not become a production page without a named human approving it in Slack. That is the whole product. Everything else, generation, SEO configuration, deployment, is in service of making that approval meaningful.
ScroBits built the full stack: Slack as the entry and approval surface; Claude for copy, metadata and schema; v0 for the Next.js page with the brand design system; Python on AWS Lambda for orchestration; Supabase for workflow state; Google Sheets for the brief and catalog; Vercel for deployment with discovery files, analytics and Core Web Vitals in place.
What runs today across multiple US startup clients is location-specific pages shipped at marketing speed, with search configuration consistent across pages and an explicit, auditable approval trail on every production release.
The approval is explicit, in Slack, by a named person, with the preview link they approved. Audit trail is a byproduct of how the workflow is shaped, not an afterthought.
Five building blocks, one auditable publishing path
Each block has a specific job in the Brief -> Generate -> Approve -> Deploy flow. Together they let marketing ship at marketing speed, with SEO and audit intact.

Slack as the entry point
The brief is a message in a channel, not a Jira ticket. The approval is a reply in the same channel, not a separate workflow. Marketing stays where marketing already works.
Claude + v0 generation
Claude generates copy, metadata, schema markup and SEO configuration from the brief. v0 generates the Next.js page structure with the brand design system applied.
Human approval before production
Generated output does not become a production page without an explicit approval. Named person, named preview link, in Slack. Audit trail is a byproduct, not an afterthought.
Serverless backend on AWS Lambda
Python on Lambda orchestrates generation, storage and deployment. Google Sheets and Excel feed the brief and page catalog. Supabase holds workflow state through the lifecycle.
Vercel deploy with search intact
Approved pages deploy to Vercel with Next.js. Metadata, schema markup, discovery files and analytics configured in the generation step, not bolted on after.
Brief
Marketing writes the brief in Slack with location, service, style and tone.
Generate
Claude generates copy, metadata and schema. v0 generates the Next.js page.
Preview
A preview link comes back to Slack in the same thread.
Review
Marketing lead reviews preview, SEO technical score and Core Web Vitals.
Approve
Explicit approval in Slack, by a named person.
Deploy
Vercel deployment with search configuration, discovery files and analytics.
Catalog
The page lands in the Google Sheets catalog with URL, metadata and audit trail.
Before, after, change
In production across multiple US startup clients. Pages shipped at marketing speed; search configuration consistent; approval trail explicit.
| Dimension | Before | After | Change |
|---|---|---|---|
| Page creation path | Engineering ticket per page | Slack brief, generated, approved, deployed | Self-serve |
| Handoffs | Marketing to engineering to QA to deploy | One workflow, one channel | Collapsed |
| SEO configuration | Hand-rolled per page | Built into the generation step | Consistent |
| Approval trail | Implicit | Explicit, in Slack, by a named person | Auditable |
| Scaling response | Hire or wait | Add brief, approve, ship | Elastic |
Extending the workflow beyond landing pages
Multi-brand design systems
Agencies run several clients through the same workflow with different styling.
Automated A/B testing
Generated variants compete; winning variant promoted after a confidence threshold.
Page refresh automation
Stale location pages regenerated against the current brief and re-approved.
CMS integration
Pattern extended to clients already running WordPress or Webflow.
Three principles we are taking into the next engagement
Approval is a product feature
Generated output is not a production release until a named human says so. The approval has to live where the team already works, not in a separate tool.
SEO belongs in generation
Metadata, schema and discovery files bolted on after shipping is how pages drift. Configuring them in the generation step is how they stay consistent.
One channel beats a workflow tool
Marketing is in Slack already. A separate workflow tool is where good ideas go to be reviewed later. Slack brief, Slack approval, Vercel deploy.
Marketing waiting on engineering to ship a landing page?
ScroBits builds the Slack integration, generation orchestration, deployment pipeline and approval surface. Two weeks to a scoped pilot.