I Built a SaaS Company in 3 Weekends Using AI

A few months ago I set myself a challenge: how much of a real, shippable SaaS product could I build using nothing but AI coding tools and a few weekends?

Not a toy. Not a proof-of-concept. A real product — with user accounts, a rich-text editor, subscription payments, native desktop apps, an admin dashboard, and a marketing website. The kind of thing that would normally take a small team months.

The answer, it turns out, is: pretty much the whole thing.

What is Noteshelf?

Noteshelf is a note-taking platform I built under my company Senbee A/S. It's positioned as a lightweight, privacy-first alternative to tools like Evernote and Notion. EU-hosted, no tracking, no bloat — just a fast editor and clean organization.

The feature list is not small:

  • Rich-text editor with 20+ block types, slash commands, drag-and-drop reordering, and Markdown shortcuts
  • Syntax-highlighted code blocks supporting 40+ languages
  • KaTeX math rendering for inline and block equations
  • AI assistant powered by OpenAI — summarize, rewrite, translate, expand — with bring-your-own-key support
  • Encrypted notes with per-note toggle and at-rest encryption
  • Shared spaces with role-based access and real-time presence
  • Public notes and folders with clean shareable URLs
  • Version history with up to 75 snapshots per note and one-click restore
  • Import from everywhere — Evernote, Bear, Notion, Obsidian, Craft, Joplin, Markdown, HTML, and more
  • Export to PDF, DOCX, ODT, and HTML
  • Extension store — emoji picker, GIF search, math tools, embeds (YouTube, Spotify, Figma), reading tools
  • Themes — four built-in themes plus light/dark toggle
  • Templates — built-in and custom reusable templates
  • A gamification layer — unlock custom app icons by inviting friends or hitting account milestones

And then outside the app itself:

  • A full Stripe integration — three pricing tiers, checkout, customer portal, invoice history, webhook handling
  • A marketing website with feature pages, pricing, a comparison page, legal pages, and SEO
  • An admin panel with user management, Stripe controls, impersonation, audit logging, and activity stats
  • A native macOS app (with iOS prototypes in progress)

All of it. Three weekends.

My background (and why this matters)

I'm Tristan White. I run two companies out of Aarhus, Denmark — Senbee A/S, a building management software company, and ServicePoint A/S. My background is in front-end UI/UX and cloud infrastructure. I've been building things on the web for over a decade.

So I'm not starting from zero. I know how web apps work, I know how to structure a database, and I know what good UX feels like. That matters — because the AI tools didn't replace the need for taste and direction. They replaced the tedious parts. The scaffolding, the boilerplate, the "I know exactly what this code needs to look like but I don't want to type it" parts.

The question I wanted to answer wasn't "can a non-developer build a SaaS with AI?" It was: how much can a technical founder compress the timeline when AI handles the implementation?

Weekend 1: The core app, the editor, and payments

The first weekend was the most intense. I started with the bones: a PHP backend (no framework, just plain PHP and PDO), a MySQL database, and a vanilla JavaScript frontend. No React, no Next.js, no build step. Just files, a browser, and a text editor being driven by AI.

By the end of Saturday I had:

  • User authentication via magic links (passwordless, no passwords stored)
  • A working note editor built on Redactor 4 with custom plugins
  • Folder-based organization with drag-and-drop
  • Autosave on every keystroke
  • Basic CRUD for notes and folders

Sunday was payments day. And here's the thing that genuinely surprised me: integrating Stripe was essentially a single prompt. Checkout sessions, customer portal, webhook handling, subscription syncing — the AI generated working Stripe integration code that needed minimal adjustment. I expected this to be a full day. It was maybe two hours, including testing.

By Sunday night I had three pricing tiers (Free, Starter, Advanced), working checkout, and a billing portal where users could manage their subscriptions. The whole payment pipeline — from "click upgrade" to "money in my Stripe dashboard" — just worked.

Weekend 2: The website and admin panel

Weekend two was about everything around the app. The marketing site came first: landing page, feature pages, pricing page, comparison page (Noteshelf vs. Evernote & OneNote), legal pages (privacy, terms, DPA, security), and a support page. All server-rendered PHP, all styled with SCSS.

Then the admin panel. I needed to be able to manage users, view subscription status, manually grant or revoke plans, impersonate users for debugging, and track admin actions in an audit log. The AI generated the admin dashboard structure, and I iterated on the details — search, filtering, Stripe deep-links, activity logging.

The hardest part of this entire project was the visual design. Not the code. Not the logic. Getting the graphical elements for the website to feel right — the spacing, the hierarchy, the illustrations, the way the landing page flows — that's where I spent the most time and did the most manual work. AI is excellent at generating functional code. It's less excellent at making things feel polished and intentional. That last 20% of visual refinement was almost entirely human.

Weekend 3: Native apps and polish

By the third weekend I had a fully working web app and a marketing site. Now I wanted native apps.

The macOS app is a WebView wrapper — it loads the web app in a native window, gives it a dock icon, and handles things like window management and system integration. It's simple, and that's the point. The web app is fast enough that a WebView wrapper doesn't feel like a compromise. It feels native.

For iOS, I have two working prototypes: a native port of the core functionality and a WebView wrapper approach. Neither has shipped yet — that's still in progress. But the prototypes happened in a weekend, which is absurd.

The rest of the third weekend went into polish: the extension store, the icon unlock gamification system (invite friends → earn custom app icons), theme support, onboarding flows, import/export pipelines, and the version history system.

The AI tools

I didn't stick with one tool. The project evolved through a few:

  • OpenAI Codex — where I started. Good for initial scaffolding and getting the project off the ground.
  • Claude Opus 4.6 — where I moved when I needed more nuanced code generation. Better at understanding context, writing cleaner PHP, and handling multi-file changes.
  • Cursor — for the IDE integration. Being able to reference files, get inline completions, and iterate in-place made everything faster.

The workflow that emerged was: I'd describe what I wanted in natural language, the AI would generate it, I'd review and adjust, and we'd iterate. For something like the importer system (which supports 10 different note-taking apps), I'd describe the base pattern once, and then each new importer was a short conversation.

The AI was best at:

  • Database schema design and migrations
  • API endpoint scaffolding
  • Stripe integration (genuinely shocked by this)
  • Repetitive patterns (importers, CRUD endpoints, admin views)
  • CSS/SCSS generation from descriptions

The AI was worst at:

  • Visual design decisions (layout, spacing, graphical polish)
  • Complex state management in vanilla JS
  • Understanding the full context of a large codebase as it grew

The numbers (honest ones)

As of writing, Noteshelf has 27 users. Five of those are family and friends. The product is barely launched — I'm still in the "tell people it exists" phase.

And honestly? I'm fine with that. The point of this project was never to hit ramen profitability in month one. It was to answer the question: can one person, using AI tools, build something that looks and feels like it was made by a team? Something with real depth — not just a landing page and a waitlist?

I think the answer is yes. The codebase has a full migration system, audit logging, cron jobs for cleanup, S3-compatible file storage, CSRF protection, prepared statements everywhere, and a subscription billing pipeline that actually works. It's not a prototype. It's a product.

What I learned

AI doesn't replace knowing what to build. It replaces the labor of building it. Every architectural decision, every UX choice, every "should this be a modal or a sidebar" decision — that was me. The AI executed. And it executed fast.

Simple tech stacks win. No React. No TypeScript. No build pipeline. Just PHP, vanilla JS, SCSS, and a MySQL database. When you strip away the tooling complexity, AI tools become dramatically more effective. There's less to go wrong, less context to manage, and fewer abstractions to confuse the model.

Stripe is solved. Seriously. If you're building a SaaS and dreading the payment integration, don't. Describe what you want to an AI, point it at the Stripe docs, and you'll have working checkout in an afternoon.

The last 20% is still human. AI can get you to 80% fast. The remaining 20% — the visual polish, the edge cases, the "this doesn't feel right" adjustments — still requires a human with taste and patience. That's where the product lives.

Ship something real. Twenty-seven users isn't a business. But it's a real product, used by real people, that I built in three weekends. A year ago this would have been a three-month project. The tools have changed. The timelines have changed. What hasn't changed is that you still need to know what you're building and why.

What's next

iOS app. More users. More polish. Maybe a blog post about the technical architecture. But mostly — just keep building. The tools are only getting better, and the gap between "idea" and "shipped product" is only getting smaller.

If you want to try Noteshelf, it's free to start: noteshelf.app.


Tristan White is the CEO of Senbee A/S and ServicePoint A/S, based in Aarhus, Denmark. He writes occasionally at triss.dev.