Vibe-coded SaaS needs embeddable Onboard
If you are building a SaaS with Cursor, Claude Code, Codex, or similar tools, you can move very quickly.
That speed is real. So is the danger.
A vibe-coded product can quietly turn into a pile of locally rational subsystems: auth, onboarding, billing glue, import/export, notifications, a home-grown setup wizard, internal admin.
All of them looked "easy enough" when the agent generated version one.
First-run setup is exactly the kind of thing you should question
A checklist is seductive because the first pass looks small: a list, a progress bar, skip buttons.
A few real users later, it is no longer that simple:
- who is the user when someone is signed in on two devices?
- which steps are personal vs shared with the workspace?
- how do facts mark billing connected without double-firing complete?
- do admins see the same items as members?
- where does progress live, your Postgres or a hosted store?
- what happens when someone dismisses — did that look like 100%?
Now you own onboarding software. That may be fine. It may also be nonsense if your actual business is something else.
What a vibe-coded SaaS usually needs
Not "the most advanced digital adoption platform on earth." Usually: "My customers need to finish setup inside the product, and I need that to behave like a real feature."
That is Onboard's lane: embed-only, host-asserted user.id, free local adapter for demos, BYO ($9.99) or Hosted ($19.99) when you go live with publishable keys. Not a $500/mo DAP.
Keep the velocity, drop the accidental ownership
- Use AI tools to build the parts that are special to your SaaS.
- Buy the narrow boring parts once they become obviously recurring.
- Keep the integration simple: widget + session user + workspaceKey + adapter or Hosted keys.
- Keep your own backend in control of authz and (for BYO) storage.
<Onboard
flowId="flw_..."
publishableKey="bsw_live_pub_..."
user={{ id: session.userId, name: session.name }}
workspaceKey={workspace.id}
authorToken={authorTokenFromBff}
/>Hand your agent a bounded prompt from Agent prompt template or Give this to your coding agent. Never put host context through MCP.
Pitfalls
- Generating a Userflow clone when a first-run checklist would ship faster.
- Inventing
user.idinstead of the real session id. - Leaving secret keys in client env because the agent "just made it work."
- Treating dismiss as completion.
Related: Onboard · AI coding agents · Embed checklist · vs Userflow · Cursor