A SaaS with 100% Churn, yet LTV > CAC

A SaaS with 100% Churn, yet LTV > CAC

January 13, 2026

Tl;DR

MVP first - Tomate fuco y a toma pcul0

Get those eyes going via ads towards: https://www.slubnechwile.com/

See what works and what not - PMF :)

npm install stripe firebase-admin

Intro

For green field AI vibe coding has been great, for brown field…not that much.

Despite the project docs with AI was interesting

Thats why I want to put together some boilerplates that just get the work done.

And…ship sth already this year.

The main pieces are clear already as per:

People do their things:

I want to do mine:

  • S vs D:
    • Supply - ~ infinite (∞), scalable via Serverless storage.
    • Demand - constrained, ad driven

Supply and Demand for a SaaS

With a very clear: Online marketing and an online delivery

Type of offer: attraction / upsale / downsale / continuity that’s how the landing should be presented, later will be other offers

alt text

Imagine that nice mermaid sankey representing the conversion funnel of such web app

and this

The launch strategy: aka, focus strategy

ElementDecision
One Avatar
One Product
One Channel

The Tier of Service: A DFY that I made here and Ive transformed into DIY (thanks to leverage x tech) with the cool serverless tech stack below.

The customer segmentation: B2C

The expected

The tech stack:

RequirementSpecificationClarification / Decision
Frontend Framework
Styling/UI Library
Backend
Database
Authentication
E-mail/ESP
Analytics
Hosting
Choosing an UI tech stack 📌
  • HUGO: Lightning-fast speed.
  • Astro: Built-in support for server-side rendering (SSR).
  • Jekyll: Simplicity and ease of use, particularly for blogging.
  • Gatsby: Rich ecosystem of plugins and a vibrant community.

Gatsby: Gatsby is a popular static site generator within the React ecosystem, leveraging React for building static sites and offering a rich plugin ecosystem.

  • Pros:

    • Ability to pull data from various sources, including CMSs and APIs.
    • React-based, enabling component-based development and rich interactivity.
    • Extensive plugin ecosystem for adding functionality and integrating with third-party services.
  • Cons:

    • Longer build times for large projects due to complex data fetching and processing.
    • Steeper learning curve for developers unfamiliar with React.
    • Requires a Node.js environment for development and building.
  • Next.js: Next.js is primarily known as a React framework for SSR and CSR, but it also offers SSG capabilities, providing flexibility for different project needs.

  • Pros:

    • Versatility to choose between SSR, CSR, or SSG based on project requirements.
    • Seamless integration with React for building dynamic user interfaces.
    • Hybrid capabilities for blending static and dynamic content in a single application.
  • Cons:

    • Complex configuration compared to simpler static site generators.
    • Requires familiarity with React and Node.js for effective usage.
    • Limited built-in features compared to dedicated static site generators like Hugo.

Getting Here

This has been…a series of random steps.

#dig slubnechwile.com any
#ping slubnechwile.com
#curl https://slubnechwile.com/sitemap-index0.xml
whois slubnechwile.com | grep -i -E "(creation|created|registered)"

git clone https://github.com/JAlcocerT/slubnechwile
git init && git add . && git commit -m "Initial commit: starting for google ads" && gh repo create slubne-chwile-y26 --private --source=. --remote=origin --push

And it goes like: hey antigravity…and Claude 4.5 Opus

can you have a look to the z-brd, z-frd  z-prd and z-user-flow documents and let me know if the requirement and end goal of the project is clear?

wherever you see gap, lets clarify them into a z-clarifications.md document, where i will provide direction

Configure your stripe payment link: https://dashboard.stripe.com/

Pełny Pakiet Weselny: Prywatna galeria 360°, 250GB miejsca na zdjęcia i filmy od gości, nielimitowane przesyłanie przez 14 dni oraz 1 rok bezpiecznego przechowywania pamiątek

And remember that you can prefix the email that has paid by doing like so.

For your launch phase with a low daily budget, you should optimize for Sign-ups (Account Creation) rather than Purchases.

The ad algorithm needs to learn and also you need to learn with PostHog what are the frictions points.

Tinkered with Selfhosting

Like…a lot.

Discovered one for weddings

I tested wedding share…and it looked cool.

People liked it.

All of this happened while travelling.

Yea, I took the laptop :)

Also Saw Cool Themes

Lightweight wedding website that you host | Configurable via yaml!

I got to know about NextJS for SSG purposes.

And themes like SaaSify can do the trick.

https://developers.cloudflare.com/pages/framework-guides/nextjs/

https://jamstack.org/generators/next/

https://nextjs.org/

https://vercel.com/templates/next.js

https://jamstackthemes.dev/theme/nextjs-notion-starter-kit/ https://transitivebullsh.it/nextjs-notion-starter-kit

<https://transitivebullsh.it/

DFY for a close one

But they needed something simpler.

So i made a filebrowser + custom QR setup.

How could I not tinker with QR for the sake of it…

With Python:

Open in Google Colab

And with node:

QR Code

Even with a SliDev VUE Components like this one you can generate QRs!

<a class=“hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href=“https://github.com/JAlcocerT/Home-Lab/tree/main/py-static/qr-pdf" target="_blank” rel=“noreferrer”> QR CSR | Python static server ↗

Not all the content is indexed in the same way across engines and you can miss valuable info.

ℹ️
Thanks to Ecosia I could find how to add Web Analytics to the Jekyll Chirpy Theme!

Even Reqable has one: Tools -> More QR-Code

Open in Google Colab

Even with a SliDev VUE Components like this one you can generate QRs!

<a class=“hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href=“https://github.com/JAlcocerT/Home-Lab/tree/main/py-static/qr-pdf" target="_blank” rel=“noreferrer”> QR CSR | Python static server ↗

QR Code

Tinkered with Serverless

And i dont mean static deploy to cloudflare pages this time

I mean about serverless s3 storage, via cf R2.

Which i got familiar with on this post.

alt text

Exactly, the nextjs-r2 project repo show me sth: there is life beyond filebrowser

# Cloudflare R2 Configuration

#get this one from the Workers and Pages section!
ACCOUNT_ID=6f6de37edde332d0622d5802db839ff7

# Required for Pre-signed URLs and Temporary Credentials methods
# Get these from: R2 → Manage R2 API tokens → Account API Tokens → Create API token
ACCESS_KEY_ID=
SECRET_ACCESS_KEY=

# R2 Bucket Name
# The name of your R2 bucket (e.g., my-nextjs-demo-bucket)
BUCKET_NAME=my-nextjs-demo-bucket

# Required ONLY for Temporary Credentials method
# Get this from: My Profile → API Tokens → Create Token
# Permissions needed: Account - Workers R2 Storage:Edit, User - API Tokens:Edit
AUTH_TOKEN=

# Note: Workers API method doesn't use these environment variables
# It uses R2 bindings configured in wrangler.toml instead

And … more websites

Not just the latest DIY Landing boilerplate

Themes: https://vercel.com/templates

Some of my Favourite Themes

Emails too, ofc

I made an email APIs 101 here.

Also, leveraged with the make landing project at this post.

Open in Google Colab

You might be interested to see https://proton.me/support/catch-all for your support email with a discount.

If you are planning to use this domain with Proton Mail, note that weʼll only accept email for enabled addresses with encryption keys.

You might reveal that a business email and privacy for ~70$/y is not that important for you as you say it is.

Inspired by MicroSaas

These kind of micro-SaaS are so so cool:

  1. https://tiiny.host/

The simplest way to host & share your work online

  1. https://github.com/uselinked/website from https://uselinked.com/

  2. https://supersaas.dev/ - The Simple, Fast & Smart Nuxt 3 Fullstack Kit.

Starter kit / boilerplate landing with…a one time payment / Lifetime access.

  1. https://github.com/anthonylan/angie - I love those arrows and the look… https://github.com/JAlcocerT/angie

MIT | Angie is a free, open-source portfolio template featuring a bold, brutalist design that helps you stand out and showcase your work with style.

Why couldnt SlubnyChwile be inspired in one of those cool UIs? :)

Chatting with Gemini about the offer

ADS + BANT 🚀

That is the ultimate, high-level business question.

Your entire flow is strategically built to identify, filter, and cater to the four key elements of a qualified lead—Budget, Authority, Need, and Timing (BANT)—which is especially important when using paid advertising.

Here is how the Ślubne Chwile flow addresses and converts leads based on BANT criteria:

🎯 Matching the Flow to the BANT Sales Criteria

1. Need (The Problem Solver)

  • Definition: Does the prospect have a legitimate problem that your service solves? (Losing guest photos/videos).
  • Flow Mechanism:
    • Landing Page: The Hero Section and the Benefits Section (Section 2) are entirely dedicated to establishing need. The headlines explicitly state the problem (“Nie Strać Żadnej Uśmiechniętej Chwili”) and offer the solution.
    • Free Test: Allowing them to upload 5 photos and see the Admin Panel validates the need for collection and organization.
  • Verdict: Need is established upon Landing Page conversion. If they register, they confirm they have this problem.

2. Timing (The Time-Driven Nudge)

  • Definition: When does the prospect need the solution? (Tied to the wedding date).
  • Flow Mechanism:
    • Registration: Collecting the Wedding Date is the single most critical piece of BANT data. It allows you to schedule the rest of the sales process.
    • Email Nurturing: Emails are scheduled to peak 3–4 months before the wedding—the ideal time when couples are finalizing vendor lists and security details.
    • Paid Duration: Tiers are based on post-wedding access (1, 3, or 12 months), making the time/urgency a central conversion factor.
  • Verdict: Timing is acquired at registration (A4) and utilized throughout the sales cycle (Z2).

3. Authority (The Decision Maker)

  • Definition: Is this the person who can make the purchase decision? (The Bride and Groom).
  • Flow Mechanism:
    • Registration: Requiring both the Bride’s and Groom’s names (A4) explicitly targets the decision-makers. The personalization is immediately linked to their names (e.g., slubnechwile.pl/Anna-i-Jan), confirming they have the authority to act.
    • Password Security: The “Set Guest Password” feature (Z4) is a core control function that only the Authority would care about, forcing their attention to the paywall.
  • Verdict: Authority is verified by the commitment to the customized link (A7).

4. Budget (The Price/Value Match)

  • Definition: Can the prospect afford your service, and do they agree with the value?
  • Flow Mechanism:
    • Tiered Pricing (E): The three tiers address different budgets:
      • Bronze (149 PLN): Caters to the lowest budget (anchor).
      • Silver (299 PLN): Targets the average, high-profit budget (most popular).
      • Premium (699 PLN): Targets the high-value, risk-averse budget (high AOV).
    • Feature Stacking: The Silver and Premium features (Live Preview, Pre-Wedding Memories, 12-Month Access) are carefully stacked to provide disproportionately higher value than the simple price difference, forcing the customer to choose based on value, not just cost.
  • Verdict: Budget is addressed at the point of conversion (Z5) after Need, Timing, and Authority have been established, making the pricing easier to accept.

The entire Ślubne Chwile flow is designed as a BANT qualification machine.

It uses free access to gather the necessary data (Need, Timing, Authority) before presenting the Budget, ensuring that by the time a couple sees the price, they are already highly qualified, emotionally invested, and ready to convert.


Conclusions

Is it a new product that needs evangelization?

No, there is demand already :)

Whats working and whats not?

Is the product not working? wrong seller? wrong avatar/target audience/client?

It has been all about building around the BANT idea.

Show the products ads for those that apply.

They get the free thing / trial and we are happy to get your feedback :)

git clone https://github.com/JAlcocerT/slubne-chwile-y26
#git pull
cd slubne-chwile-y26/slubnechwile/
#prepare ./slubnechwile/.env
#nano .env 
#cd ..
#sudo docker compose up -d
#sudo docker compose down
#docker compose down && npm run build && node dist/server/entry.mjs
docker compose -f docker-compose.cloudflare.yml up -d --build
#docker inspect slubnechwile-app | grep "Networks" -A 20
#docker compose -f docker-compose.cloudflare.yml down
sudo docker logs slubnechwile-app --tail 100
#sudo docker system prune

Need a product like this just that white-labeled to print money for you?

Setting Up Google ads

This has been a thing: https://ads.google.com and https://tagassistant.google.com/

You will need terms, privacy policy and contact: https://support.google.com/adspolicy/answer/6368661?hl=en#673

Anda support mail.

But…hey, they take you by the hand and make your on boarding very simple.

Admire how much resources they can provide you, just so that you place that CC details for them.

Slubne Chwile google ads

The CX customer experience was impressive.

Keywords: weddings

Budget: whatever per month

Pros say to keep getting better at this until you spend successfully 6k$/month

1/2/8 pln click (cost per click) depending on competition.

alt text

gtag('event', 'conversion', {
                  'send_to': 'AW-',
                  'value': 1.0,
                  'currency': 'PLN',
                  'transaction_id': ''

Random Things I Got to know

  1. Google uses salesforce $CRM and also https://www.qualtrics.com/ for feedback
  2. Maybe having an optimized video sales on the landing, like this one: https://thebigschool.com/master-ia/
  3. Also…the whatsapp bouble for signups people?

FAQ

The FlaskCMs / NextJS CMS i tried to built were similar to these OSS for Selfhosted Blogs

MIT | self-hosted blog platform built with next.js

Adsense vs OpenAdServer

If you want to do the oppositve: renting attention of your readers and get paid for it:

Open Source Ad Serving Platform with ML-Powered CTR Prediction | Self-hosted alternative to Google Ad Manager | Python, FastAPI, PyTorch

More KPIs

In addition to Total Lifetime Value (TLV), here are several other marketing KPIs that are commonly used to assess the effectiveness of campaigns, customer engagement, and overall marketing performance:

  1. Customer Acquisition Cost (CAC): Measures the cost of acquiring a new customer, helping you assess how efficient your marketing and sales efforts are.

  2. Churn Rate: The percentage of customers who stop using your product or service over a specific period, indicating customer retention.

  3. Customer Retention Rate (CRR): The percentage of customers retained over a certain period, critical for measuring loyalty and satisfaction.

  4. Net Promoter Score (NPS): Gauges customer satisfaction and loyalty by asking how likely customers are to recommend your product or service to others.

  5. Conversion Rate: The percentage of users who take a desired action (e.g., making a purchase) out of the total number of users exposed to the marketing effort.

  6. Cost Per Lead (CPL): The cost incurred to generate a lead, valuable for evaluating the cost efficiency of lead-generation campaigns.

  7. Return on Marketing Investment (ROMI): Measures the revenue gained compared to the amount spent on marketing.

  8. Engagement Rate: Tracks how actively customers interact with your content, social media posts, or campaigns (likes, shares, comments, etc.).

  9. Average Revenue Per User (ARPU): The average amount of revenue generated per customer or user over a specific period.

  10. Sales Growth: Measures the increase in sales over a given period, showing the direct impact of marketing efforts on revenue.

These KPIs offer a comprehensive view of marketing performance, from customer acquisition and engagement to long-term profitability and growth.