<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Saas on ferkakta.dev</title><link>https://ferkakta.dev/tags/saas/</link><description>Recent content in Saas on ferkakta.dev</description><generator>Hugo</generator><language>en-US</language><copyright>Copyright fizz.</copyright><lastBuildDate>Tue, 03 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ferkakta.dev/tags/saas/index.xml" rel="self" type="application/rss+xml"/><item><title>Your onboarding flow is your architecture's report card</title><link>https://ferkakta.dev/onboarding-flow-architecture-report-card/</link><pubDate>Tue, 03 Mar 2026 00:00:00 +0000</pubDate><guid>https://ferkakta.dev/onboarding-flow-architecture-report-card/</guid><description>&lt;p&gt;I ran a colleague&amp;rsquo;s manual tenant onboarding flow for a multi-tenant SaaS platform. Five steps, two attempts, and a list of errors that mapped precisely to every automation gap in the system. The onboarding flow wasn&amp;rsquo;t broken. It was a diagnostic.&lt;/p&gt;
&lt;h2 id="the-five-steps"&gt;The five steps&lt;/h2&gt;
&lt;p&gt;The flow to bring a new tenant from nothing to working:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Run a Python registration script that calls the auth-handler API, creates an org in the identity provider, and sends a confirmation email to the devops team.&lt;/li&gt;
&lt;li&gt;Read the devops email. Manually extract two values: a tenant hash and an org code.&lt;/li&gt;
&lt;li&gt;Run populate scripts that seed 38 SSM parameters — 24 for &lt;code&gt;apiserver&lt;/code&gt;, 14 for &lt;code&gt;tenant-auth-service&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Trigger a GitHub Actions workflow. Terraform creates the namespace, deployments, ExternalSecrets, DNS records, HTTPS.&lt;/li&gt;
&lt;li&gt;Manually apply Kubernetes jobs for ETL seed data and first-user creation.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Step 4 is automated. Steps 1, 2, 3, and 5 are manual. The manual steps are where the architecture&amp;rsquo;s seams show.&lt;/p&gt;</description></item></channel></rss>