Turn curiosity into cash with a $29 PRO plan and a $99 ENTERPRISE plan—no heavy‑weight frameworks required.
📚 What You’ll Learn
- Spin up a minimalist landing page with Flask (or a static‑site generator) that showcases the value of two subscription tiers.
- Integrate Stripe Checkout using placeholder API keys—so you can start taking payments instantly.
- Add a lightweight A/B test to compare headline copy and measure conversion rates.
- Automate cross‑platform promotion (Dev.to, Reddit, Hacker News) using the Spider API.
- Send daily SMS nudges with HeroSMS to a consent‑based lead list.
- Persist click & conversion data in SQLite for instant analytics.
All of this can be assembled in under an hour, and the code is small enough to fit in a single GitHub repository.
⚠️ Disclaimer: The example code uses placeholder keys (
YOUR_STRIPE_SECRET_KEY,YOUR_SPIDER_TOKEN, etc.). Replace them with your real credentials, and always respect user consent and platform rules.
🎯 Why a Two‑Tier Model Works
| Feature | PRO – $29/mo | ENTERPRISE – $99/mo |
|---|---|---|
| API Calls | 10 k/month | 100 k/month |
| Model Access | GPT‑3.5‑Turbo | GPT‑4‑Turbo + Custom fine‑tuning |
| Data Retention | 30 days | 365 days |
| Support | Community Slack | Dedicated email + 1‑hour weekly office hours |
| Integration | Webhooks, Zapier | Private VPC, SSO, Audit logs |
The table above is a sample; you can adjust the numbers to match your product.
The PRO tier targets solo data scientists and hobbyists who need occasional AI‑assisted analytics. The ENTERPRISE tier is built for teams that require higher throughput, custom models, and compliance guarantees.
🛠️ 1. Build the Landing Page
Below is a single‑file Flask app that renders a clean landing page at https://ciel.ai/subscribe. If you prefer a static generator (e.g., Jekyll, Hugo) just replace the HTML template with the same markup.
# app.py
from flask import Flask, render_template, request, redirect, url_for
import stripe, sqlite3, os, uuid
app = Flask(__name__)
# -------------------------------------------------
# Stripe configuration (replace with your keys)
# -------------------------------------------------
stripe.api_key = os.getenv("STRIPE_SECRET_KEY", "sk_test_YOUR_STRIPE_SECRET_KEY")
# -------------------------------------------------
# SQLite helpers
# -------------------------------------------------
DB_PATH = "analytics.db"
def init_db():
with sqlite3.connect(DB_PATH) as con:
cur = con.cursor()
cur.execute("""CREATE TABLE IF NOT EXISTS events (
id TEXT PRIMARY KEY,
event_type TEXT,
plan TEXT,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP)""")
con.commit()
def log_event(event_type, plan=None):
with sqlite3.connect(DB_PATH) as con:
cur = con.cursor()
cur.execute("INSERT INTO events (id, event_type, plan) VALUES (?,?,?)",
(str(uuid.uuid4()), event_type, plan))
con.commit()
init_db()
# -------------------------------------------------
# Routes
# -------------------------------------------------
@app.route("/")
def home():
return redirect(url_for("subscribe"))
@app.route("/subscribe")
def subscribe():
# Render the HTML template (see below)
log_event("page_view")
return render_template("subscribe.html")
@app.route("/create-checkout-session", methods=["POST"])
def create_checkout_session():
plan = request.form["plan"]
price_id = "price_29_PRO" if plan == "PRO" else "price_99_ENTERPRISE"
session = stripe.checkout.Session.create(
payment_method_types=["card"],
line_items=[{
"price": price_id,
"quantity": 1,
}],
mode="subscription",
success_url=url_for("success", _external=True) + "?session_id={CHECKOUT_SESSION_ID}",
cancel_url=url_for("subscribe", _external=True),
)
log_event("checkout_initiated", plan)
return {"id": session.id}
@app.route("/success")
def success():
session_id = request.args.get("session_id")
# Optionally verify the session via Stripe API
log_event("checkout_success")
return "🎉 Thank you! Your subscription is active."
# -------------------------------------------------
# A/B Test script (served as static JS)
# -------------------------------------------------
@app.context_processor
def inject_ab_script():
return {"ab_script": """
// Simple client‑side A/B test
(function(){
const variant = Math.random() < 0.5 ? 'A' : 'B';
document.body.dataset.variant = variant;
fetch('/log_ab', {method:'POST', body:JSON.stringify({variant})});
})();
"""}
@app.route("/log_ab", methods=["POST"])
def log_ab():
data = request.get_json()
log_event("ab_view", data.get("variant"))
return "", 204
if __name__ == "__main__":
app.run(debug=True)
templates/subscribe.html (minimalist design, feel free to add Tailwind or Bootstrap):
html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Subscribe – CIEL.AI</title>
<style>
body{font-family:Arial,Helvetica,sans-serif;margin:2rem;}
.plan{border:1px solid #ddd;padding:1rem;margin:1rem 0;}
.price{font-size:2rem;color:#2c3e50;}
button{background:#3498db;color:#fff;padding:.5rem 1rem;border:none;cursor:pointer;}
</style>
</head>
<body data-variant="">
<h1>Supercharge Your AI Projects</h1>
<p>Choose the plan that fits your workflow.</p>
<div class="plan">
<h2>PRO – $29/mo</h2>
<ul>
<li>10 k API calls / month</li>
<li>GPT‑3.5‑Turbo access</li>
<li>30‑day data retention</li>
<li>Community Slack support</li>
</ul>
<form id="checkout-pro" method="POST" action="/create-checkout-session
Top comments (0)