Building a SaaS Fleet with Python: My AI-Assisted Stack and 20 Live Projects

What This Is

I’ve been quietly shipping SaaS MVPs at a pace that would have been unthinkable two years ago. Not demos. Not toy projects. Real products, each with its own domain, pricing page, and deployment pipeline. The kind of thing someone would actually pay for.

This post is partly a tour of what’s live right now, partly a confession about how the workflow actually works, and partly a look at the tech stack decisions that make fast iteration possible. If you’re building Python-backed products solo (or want to), there’s something useful in here for you.

The short version: AI-assisted development has compressed what used to be a six-month journey into a long weekend. But only if you commit to a stack and stop bikeshedding. Here’s the stack, the workflow, and the projects it produced.

The Stack That Made This Possible

Every single project under the diguardia.org umbrella runs on the same boring, opinionated stack. That’s not an accident. When you’re one person shipping twenty products, the stack is the product. You don’t get to experiment with a new framework per project. You pick once, and you pick boring.

Backend: Python 3.13 + FastAPI

The backend is always FastAPI. Async, fast, auto-generates OpenAPI docs, and the type hints double as validation. I use SQLAlchemy 2.0 with async sessions for anything that needs a database, and pydantic-settings for config so environment variables become typed objects instead of os.getenv soup.

Package management is uv. If you’re still using pip and venv manually in 2026, you’re leaving minutes on the table every single day. uv init, uv add, uv sync, done. Lockfiles are real, installs are instant, and dependency resolution doesn’t make you go get coffee.

Frontend: React + Vite + Tailwind + shadcn/ui

The frontend is always Vite + React with TypeScript, styled with Tailwind CSS, and built with shadcn/ui components. The magic of shadcn is that you copy the component code into your project instead of installing a dependency. You own the code. You change it. No theme provider lock-in, no waiting for the maintainer to ship a fix for your edge case.

Package manager is pnpm. State is React Query for server state and zustand when I need client state. Routing is React Router. This combination is so consistent across projects that I can context-switch between them without relearning anything.

AI: Azure OpenAI as the Differentiator

Every product uses LLMs as a core feature, not as decoration. That’s the rule. If a competitor could build the same thing without AI and it would be equivalent, the idea is too weak. I use Azure OpenAI via the official openai Python SDK with AsyncAzureOpenAI. The credentials are shared across projects, loaded via pydantic-settings, and never touched directly with raw HTTP calls.

Infrastructure: Docker + Cloudflare

Everything ships in Docker containers via docker-compose. A single server (a $5 VPS) runs the whole fleet behind a Cloudflare Tunnel. No Kubernetes. No Helm charts. No service mesh. One host, one compose file per project, one tunnel, done. DNS and CDN are Cloudflare, and adding a new subdomain is a single script call.

Each project gets a hostname like invoicetracker.diguardia.org (hyphens stripped from the project name), a /health endpoint, structured JSON logging, and OpenTelemetry auto-instrumentation. Observability is not optional.

Auth: Keycloak

For anything multi-user, Keycloak runs at auth.diguardia.org. The backend validates JWTs via JWKS, the frontend uses keycloak-js. No hand-rolled auth. No “let me build a login system” detour. Single-admin tools get a simpler JWT boilerplate, but anything real goes through Keycloak.

The AI Iteration Loop

Here’s the part that actually matters. The stack above is table stakes. What changed everything is the iteration speed that AI coding tools unlock when paired with a consistent stack.

The loop looks like this: describe the feature in plain language, let the agent scaffold it against the existing patterns, review the diff, deploy, check the logs. When the stack is identical across projects, the agent doesn’t have to guess. It knows there’s a backend/app/routes/ directory. It knows the frontend is Vite. It knows the Dockerfile uses opentelemetry-instrument as the entrypoint. Pattern recognition does the work.

The mistake people make is treating AI like a magic button. It’s not. It’s a force multiplier on convention over configuration. The more consistent your conventions, the better the output. Twenty projects with the same directory structure means the agent has effectively seen this codebase twenty times. That’s where the speed comes from.

A typical MVP goes from idea to deployed in under two weeks. Sometimes a weekend. The bottleneck isn’t coding anymore. It’s deciding what to build and whether someone would pay for it. That’s a harder problem, and AI doesn’t solve it for you.

The Projects

Here’s what’s actually live. Each one is a standalone product with its own domain, pricing, and deployment. I’ll group them by what they do so this isn’t just a wall of links.

Developer Tools

AgentLog is an observability layer for AI agents. One-line SDK integration, and every LLM call, tool use, and error lands on a timeline with token counts. If you’re building agents and flying blind, this is the dashboard you wish you had.

Agent Skill Packs sells curated packs of prompts, rules, and YAML schemas for agent builders. Drop them into Cursor, Windsurf, or any custom agent and get consistent behavior. Code review packs, support packs, research packs. The insight: agents behave better with structured context, and people will pay for that structure.

Bypass is a reader mode for articles. Paste a URL, get the clean main content without the clutter. A FastAPI backend fetches and extracts; a lightweight React reader UI displays it. Simple, useful, and a good example of a small tool that does one thing well.

AI for Business

AI for My Job delivers short, role-specific AI courses. Not “learn AI” in the abstract. “You’re a teacher, here are the three tools that matter for you and how to prompt them.” No code, no theory, just what to use and how. Built for solopreneurs, freelancers, and anyone whose boss just asked them to “use AI more.”

AuthLane drafts prior authorization letters in seconds. If you’ve ever watched a healthcare practice drown in paperwork, you understand the pain. Paste the patient info and clinical context, get a structured prior auth letter ready to submit.

SOPFlow turns messy team notes into clear, step-by-step standard operating procedures. Stop losing institutional knowledge when employees leave. The AI structures the chaos into something a new hire can actually follow.

ShopDesk unifies Shopify, Instagram, and email messages into a single helpdesk built for solo sellers and micro stores. Not a enterprise-grade Salesforce replacement. A dead-simple inbox for the person running a one-person shop.

Finance and Investing

FinanceWizard is an AI financial chat interface. Ask about real-time quotes, fundamentals, technicals, macro data, SEC filings, crypto. The AI pulls live market data, generates interactive charts, and synthesizes research in one conversation. It’s the “talk to an analyst” interface I always wanted.

InvoiceNudge sends polite, escalating payment reminders on autopilot. For freelancers and small businesses who hate chasing unpaid invoices (which is all of them). The social discomfort of asking for money is a real problem, and automating it away is a real business.

Web and SEO Tools

SEOFlash scores your website’s SEO in seconds. Paste a URL, get a breakdown of what’s working and what’s broken. Built with the same httpx + BeautifulSoup approach I wrote about in the SEO auditor tutorial on this blog.

SiteGuard delivers a detailed AI-powered security analysis of any website or endpoint. Submit a URL, get a report covering TLS, headers, CORS, email security, DNS, and more. Pay per report, delivered by email.

AccessShield scans your website for WCAG accessibility violations and uses AI to generate plain-English explanations with actual HTML and CSS fixes. Not an overlay band-aid that hides the problem. Real code fixes you can paste into your repo. With ADA lawsuits on the rise, this one has teeth.

ChatSite builds an AI chatbot that knows your business from a single URL. Paste your site, get an embeddable chatbot in one line of code. For small business owners who want a support widget without a six-month integration project.

Health and Niche Tools

ScanExplain translates radiology reports into plain language. Paste your CT, MRI, X-ray, or ultrasound report, get a clear explanation in seconds. No medical degree required. Free, no signup, built with input from radiologists.

Simple NPS is a one-question NPS or satisfaction survey you embed as a widget. One question, one dashboard, trend over time. The anti-SurveyMonkey for people who know that shorter surveys get more responses.

Receipt Forwarder gives you a single inbox for all your receipts. Get a unique email address, forward or BCC receipts to it, see them in one list, export as CSV. Built for freelancers who lose receipts and lose money at tax time.

Games and Hobbies

PokerTracker is a live poker session tracker for tournament players. Log hands, track your stack over time, annotate key moments. The insight: live poker players have no good tool for this, and the ones that exist are overbuilt.

PokerDrill is a spaced repetition poker trainer. Duolingo for poker. AI-powered scenarios, practice the spots that cost you money, get better without losing real chips.

BoatBookr is booking software for charter boat fleets. Online booking calendar, captain scheduling, payment processing. For the niche that’s still running a charter business on a combination of phone calls and a spreadsheet.

Games is a collection of daily seeded puzzle games. Chess Gauntlet, Connections, and more. A static site, no backend, just clean JavaScript puzzles that reset every day. Sometimes you build something just because it’s fun.

YouTube2Text extracts YouTube transcripts and cleans them up. The one that started it all, and the one with the build writeup here on PythonDev. Simple, useful, and a perfect example of a small tool that does one thing well.

Verbora is a language learning app focused on Spanish listening comprehension. Browser TTS, AI-powered conversations, and spaced repetition. The niche: listening is the hardest skill to practice alone, and this solves that.

The Hub

apps.diguardia.org is the portfolio hub that ties everything together. One place to see the whole fleet.

The SEO Decisions

Every project gets the same SEO foundation, because SEO is not something you bolt on later. You either build it in from the first commit, or you’re fighting Google’s crawler six months in.

Per-Project Sitemaps

Each project submits its own sitemap.xml to Google Search Console. I recently cleaned up a mess where six projects were submitting broken sitemaps (404s, HTML fallbacks, dead subdomains). Google penalizes sitemap unreliability across the whole domain, so this matters more than people think. A clean sitemap submission tells Google your site is maintained.

The Indexing Hard Truth

Here’s something I learned the hard way, and something Search Console won’t tell you plainly: “Crawled, currently not indexed” is not a technical error. It means Google fetched your page successfully, saw real content, correct canonical tags, clean HTML, and chose not to index it.

Google can fetch your page fine. It just doesn’t consider your domain worth surfacing yet. This happens to young domains with minimal backlink profiles. The one project of mine that gets impressions is the one with a single external backlink from this blog. That’s not a coincidence. Sitemaps and the Indexing API tell Google a URL exists. Backlinks tell Google it matters.

Redirect Hygiene

I also fixed a subtle bug where requesting /blog without a trailing slash triggered a three-hop redirect chain through an http:// intermediate step. Apache’s mod_dir was adding the slash using HTTP instead of HTTPS, before WordPress even loaded. That kind of redirect chain leaks link equity and wastes crawl budget. A single nginx rule fixed it. Small things compound.

Structured Data on Every Page

Every blog runs Yoast SEO with proper JSON-LD structured data: BlogPosting schema, BreadcrumbList, Organization, WebSite. The landing pages have clean meta descriptions, Open Graph tags, and Twitter cards. Not because every project will go viral, but because when one does, you want the social preview to look right.

LLMs.txt for the AI Search Era

Every blog has LLMs.txt enabled. Search is changing. People are asking ChatGPT and Perplexity for recommendations, not just Googling. LLMs.txt gives those crawlers a clean summary of your site. It’s a bet on the next two years of discovery. Costs nothing to enable, and if AI search becomes how people find tools, you’re already indexed.

What’s Actually Hard

Building is the easy part now. The hard part is the stuff AI doesn’t help with: distribution.

Twenty products with zero traffic is still zero traffic. The tech stack lets you build fast. The AI lets you iterate fast. Neither of those gets you a single user. For that, you need to be in the communities where your customers are, writing the content they search for, and getting the backlinks that tell Google your site matters.

The most useful thing I did was write the Claude Agent SDK tutorial and the SEO auditor guide on this blog. Real tutorials that rank, that get linked to, and that happen to link back to the products. Content as distribution. It’s slow, it’s unglamorous, and it’s the only thing that actually moves the needle for a solo builder.

So that’s the honest takeaway. The Python and FastAPI stack with React, Docker, and Cloudflare is the infrastructure that makes a one-person SaaS fleet possible. AI coding tools are the multiplier that makes it fast. But the moat, if there is one, is in choosing problems people will pay to solve and then showing up where those people already are.

Where to Go from Here

If you want to see the products, the hub is at apps.diguardia.org. If you want the tutorials behind them, they’re all on this blog. Start with the AI agent tutorial if you’re new to building with LLMs, or the yfinance guide if finance is more your thing.

The stack is not a secret. The workflow is not a secret. The only secret is doing it. Pick a boring stack. Build something small. Ship it. Then do it again. The compounding sneaks up on you.