AI chatbot SaaS built in 4 days.
Live at curbchat.ca
CurbChat lets any small business embed a fully customized AI chatbot on their website in about 60 seconds. The chatbot is trained on the business's own website, and pre-styled using the website's styling — no manual setup, no writing prompts. The chat integrates lead capture through web3forms. Just paste in a URL and it's ready.
- Instant onboarding — paste your website URL, CurbChat scrapes it and auto-generates a custom system prompt and visual style for your chatbot
- Prompt & style editor — tweak the generated prompt and chatbot appearance from a clean dashboard
- One-line embed — a single
<script>tag drops the chatbot onto any site (Squarespace, Webflow, custom HTML, etc.) - Lead capture — chatbot collects visitor info automatically during conversations using web3forms tie-ins
- Analytics dashboard — see conversation counts, leads captured, and usage over time
- Stripe billing — subscription management with promotion code support
- Magic links — passwordless login, no password to forget
Every user gets a unique API key scoped to their account. The chatbot widget authenticates against this key — no key, no chatbot. Keys are issued at signup and can be rotated from the dashboard.
All chatbot API routes are public and key-authenticated. Everything else — user data, prompt management, styling, analytics — sits behind auth middleware.
The outreach pipeline is fully automated and runs through a private admin API that is only accessible with a server-side secret:
- Demo generation API (
POST /api/admin/generate-demo) — given any business URL, it scrapes the site, generates a personalized chatbot prompt and visual style using AI, spins up a live demo, and returns a shareable link that expires in 14 days - OpenClaw skill — an AI agent skill that searches Google Places for businesses by city and industry, generates a live CurbChat demo for each one, then sends a personalized cold email with the demo link attached
The whole flow from "find businesses in Kelowna" to "cold email sent with a working demo" is one command.
Blog posts live in a Supabase blogs table and render through a markdown-backed /blog page with incremental static regeneration. A private REST API lets n8n workflows AI-generate full posts and publish them with no commits, no rebuilds, and no Vercel deploy.
POST /api/blogs— create a published post (title, slug, content, category, keywords, etc.). SameADMIN_SECRETauth as the demo generator.PATCH /api/blogs/[slug]— update any field, flip status betweendraftandpublished, rename slugs, etc.- On every mutation —
revalidatePathbusts the ISR cache for/blog,/blog/[slug], and/sitemap.xml, so the post is live within seconds.
An n8n workflow runs on a schedule, prompts an LLM to write a full SEO-targeted article (markdown body, meta description, keywords, category), then hits /api/blogs to publish. The blog grows on autopilot while the Next.js app stays fully static for the rest of the routes.
| Layer | Tech |
|---|---|
| Framework | Next.js (App Router) |
| Database | Supabase (Postgres + Auth) |
| AI | DeepSeek (prompt + styling generation) |
| Web scraping | Jina Reader API |
| Payments | Stripe |
| Gmail SMTP | |
| Outreach automation | OpenClaw + Python |
| Content automation | n8n + DeepSeek |
| Deployment | Vercel |
| Date | Milestone |
|---|---|
| Apr 2 | First commit — landing page + prompt generation |
| Apr 2 | Auth, login, widget rendering on client sites |
| Apr 3 | Stripe billing, analytics dashboard, styling editor |
| Apr 3 | Docs section, Squarespace integration guide |
| Apr 4 | Promotion codes, magic links, sitemap scraping |
| Apr 5 | Admin demo generation API |
| Apr 6 | Automated outreach pipeline (OpenClaw + cold email) |
| Apr 11 | Supabase-backed blog + n8n auto-publishing API |
Shipped in 4 days, still iterating.
Ethan Breitkreutz — curbchat.ca — 778-581-9151






