Marketing sites for SaaS
A SaaS marketing site your team runs with AI
We build or fix it fast, then set your team up to run it with AI, safely. The funnel improves one sprint at a time.
Nobody has capacity to own the marketing site
Designer on the product, marketer in the queue, or founder at 11pm. Different setups, same story.
Your site today
- Every page change pulls a developer off the roadmap.
- The changelog is four months stale, and the pricing page still shows a plan you killed.
- No owner means no numbers: nobody knows which funnel stage is broken.
- A page prompted into prod at 11pm is the fifth button variant and the third shade of blue.
With saassite.dev
- Your team ships on-brand pages with AI, the same day.
- A human approves every page, then it goes live.
- The funnel reports exactly where it leaks.
- Developers stay on the product.
Website, system, workflow
A website, a design system, and a publishing workflow
Most agencies hand over the first one. The other two are why your team stops waiting on specialists.
A website built to convert
Built on pricing, comparison and feature-page patterns that already convert. Not a blank page you pay someone to stare at.
A design system an LLM can drive
Components and copy rules written in your repo, so AI builds the next page right the first time.
A publishing workflow with a human check
Idea in, draft on a preview URL, human approves, live. Links, sitemap and analytics handled.
Setup, not prompting
Prompting is still you doing the work
Most teams keep the AI in a chat window and babysit it page by page. We put the conventions where agents can read them.
Prompting in a chat window
- You paste the brand rules into every new chat.
- The copy comes out confident and wrong, claiming a feature that is still on the roadmap.
- Nobody can find the file it wrote, so the next person starts over.
- Nothing comes wired: no events, no feeds, no redirects, no llms.txt.
Agents set up on your repo
- Your conventions live in the repo, and agents read them before they write.
- Every page comes out in your components and your voice.
- Jobs run unattended. Scheduled posts publish themselves.
- Events, feeds, sitemap and llms.txt ship with the page.
Requests, not tickets
Ask for it. It ships wired and measured.
These are the jobs that used to eat a week of someone's month. After the setup they are a sentence your team types, and the plumbing comes along: feeds, redirects, meta tags, events, llms.txt.
"Ship the changelog entry"
The last entry does not have to be four months old. Release notes go from a bullet list to a dated entry, a feed item and a live page. Minutes, not a ticket.
"Publish the drafted post"
Your marketer writes it. The setup adds meta tags, social image, RSS, sitemap entry and internal links.
"Schedule it for Tuesday 9am"
A date in the front matter and it publishes itself. Nobody logs in on Tuesday morning.
"Spin up the campaign page"
No more pointing the ads at the homepage because there was no time. Form, UTMs, thank-you page and tracking attached.
"A/B test the pricing headline"
The variant page ships and the PostHog experiment is wired with it. You read a result, not a hunch.
"Thirty comparison pages, please"
One template plus your data. Every page gets its own meta, sitemap entry and internal links.
"Keep llms.txt current"
llms.txt and llms-full.txt regenerate on every build, so ChatGPT and Perplexity quote the story you wrote.
"Route this form to sales"
Lands in HubSpot with first touch and campaign intact, plus spam handling and a confirmation mail.
"Move the old URLs"
Redirects mapped before launch, Search Console and sitemap updated. You keep the rankings you paid for.
"Announce the feature"
Not six weeks after it shipped in the product. The page, the changelog entry and the social card go out the day it ships.
You have the tools. You still can't see the funnel.
Analytics installed is not a funnel. Sometimes it is installed twice, disagreeing. Either way, nobody can say which page produced last quarter's best lead.
The visitor and the user are two different people
Someone reads three pages, then signs up. In your data those are two strangers. Nobody joined them, so the funnel stops at the signup form.
The funnel spans four tools and lives in none of them
Revenue in Stripe. Leads in the CRM. Search demand in Search Console. Behaviour in your product analytics. Every stage has a home. The funnel does not, and the form submissions land in an inbox instead of any of them.
Event names were invented by whoever shipped the feature
signup, Signup Completed, user_registered. All three exist. None of them counts everyone.
There is a dashboard. Nobody has opened it.
Built once, by someone who has since left, and it has never survived contact with a real question.
One funnel report, wired from the tools you already pay for
We connect the tools, name the events once, and stitch the stages into a single view. Every stage gets a number, so the worst one stops being a matter of opinion.
One event schema, in your repo
Names written down once, next to the components. Every new page gets them right by default, whoever builds it.
Visitor stitched to user
The anonymous reader and the signed-up account become one person, so the funnel keeps going past the signup form.
Money events fire server-side
Signups and subscriptions reported from the backend, not the browser, so ad blockers can't hide your best numbers.
After the build
You run it. We're on call.
The report tells you which stage is worst. Your team ships the fixes that don't need a specialist. We take the ones that do, one sprint at a time.
Your team takes the everyday work
Campaign pages, changelog entries, copy tests, the blog post. The design system already knows the rules, so nobody waits on a developer.
We take the sprint-sized ones
One stage, one fix, measured against the number it was meant to move. The work that genuinely needs a specialist, and only that.
The conventions stay maintained
Event names, redirects, dashboards. The plumbing that rots quietly when nobody owns it stays owned, whether or not you have a sprint running.
We start where your number is worst, not where the letter comes first. See what a sprint week looks like, stage by stage.
Frequently asked questions
Isn't this just vibe coding?
No. Vibe coding is prompting until something looks fine, and nobody owns the result. We apply battle-tested agency conventions, then use AI to execute them fast. Automation runs, a human approves before anything goes live. The conventions are the product; the AI is just the labour.
Do you stick around after launch?
Yes, that's the point of the sprint model. The system is built to run without us, so you're never dependent on us. But funnels don't fix themselves; most clients keep a sprint cadence going.
Will this replace our marketing person?
No. It deletes the boring half of their job: waiting on developers, rebuilding the same layouts, chasing broken links. Thirty comparison pages become one template plus your data, not a month of hand-building. They keep the strategy, the voice and the ideas; we don't write your content.
What do you build with?
Git-based and markdown-first. Astro for marketing sites, Next.js and Supabase when an app or POC is attached. Wired into PostHog, HubSpot and Search Console. No WordPress.
Why not WordPress?
LLMs read and write files. Markdown in a git repo is the format they handle best; a database behind an admin UI is not. Static pages render fast, every change is versioned and reviewable, and your AI tooling becomes the CMS. If it has to run on WordPress, we're honestly not your agency.
What happens when better AI models come out?
Your setup gets better, not obsolete. Proven patterns are exactly what LLMs handle well, because they've seen them a million times. The conventions are written down in your repo, so a stronger model executes them faster and cheaper. Recurring sprints keep them current as tools change.
Have you actually run this anywhere?
Yes. We run this in production for a developer-tooling SaaS: site, publishing workflow, ongoing sprints. Every project sharpens the system, so the next client gets it better than the last.
No product yet
Not sure the thing is worth building?
Before there is a site to run, there is a question: does anyone want this. We ship a landing page, or a thin version of the app, with the funnel wired from day one, so the go or no-go call runs on numbers instead of encouraging conversations.
See how a POC runsOne call, no deck
Talk to the person who would do the work
Thirty minutes. Bring your site and whatever numbers you have. You get a straight read on what to fix first and a rough idea of scope and days. If we are not the right fit, we will say so on the call.