What is fortune0?

Explained so anyone can understand it. Then explained again so engineers can build it.

The 5-year-old version

Imagine a mall. The mall has one parking lot, one power system, one security desk. But it has lots of stores inside — a shoe store, a food court, a barber shop. Each store has its own name, its own sign, its own customers. But they all share the building.

fortune0 is the mall. The stores are your products.

How it works

1
Someone finds you
They see fortune0.com on a business card, a billboard, a tweet. They type it in.
2
They sign up for free
Just an email. That's it. Now they have an account in your universe.
3
They explore
Real estate tools? Privacy tools? Want to earn money as an affiliate? It's all there. They pick what interests them.
4
Free gets them hooked
Free accounts can do real things — add contacts, browse data, see how it works. Not a demo. Actual tools.
5
$1/month unlocks everything
Full access to all tools across all verticals. Commission-based revenue on top for affiliate features. That's the business model.

The doors

You own multiple domain names. Each one is a different door into the same building. Different people find different doors based on what they care about.

fortune0.com
The front door
Everyone starts here. "Check us out." It's the main entrance — clean, simple, shows everything available. This is what goes on the business card.
death2data.com
Privacy people
People who care about owning their data, local-first tools, not being the product. They Google "data privacy tools" and land here.
installkernel.com
Real estate agents
Agents who want a CRM, market data, sphere-of-influence tracking. They find this through real estate SEO.
bootstrapprotocol.com
Builders & developers
People who want to launch their own thing. Open-source framework, documentation, "here's how to build it yourself."
The key insight

These aren't separate products. They're separate marketing channels for the same platform. One account works everywhere. One server runs everything. The domains are just SEO and branding.

The 404 insight

A 404 error means: "this could exist, but nobody built it yet."

That's literally the problem fortune0 solves. Someone has an idea — a real estate business, an affiliate program, a privacy tool — and right now they hit a 404. It doesn't exist yet. There's no easy way to go from idea to running business.

fortune0 turns 404s into 200s. You show up, you pick what you want to build, and the platform gives you the tools to make it real. No code required. Just sign up and go.

The money

$1/month per member

Unlimited access to everything. Lower than every competitor. The price is so low it's a non-decision.

Commission on attributed sales

When someone uses the affiliate tools and makes money, the platform takes a small %. Tiered from 5% down to 3% based on volume. Aligned incentives — we only win when you win.


This is the simple version. Click "Technical" above for the architecture, or "Build It" for the step-by-step implementation plan.

Architecture

For engineers, CTOs, and technical co-founders. How this actually works under the hood.

System diagram

Users arrive via any domain
fortune0.com
death2data.com
installkernel.com
bootstrapprotocol.com
↓ DNS (CNAME or A record) ↓
Reverse proxy checks the Host header
Any host (VPS, PaaS, or local)
Routes based on domain → serves correct branding
One server handles everything
Flask API (main.py)
Auth · CRM · Affiliates · Standards · MCP · Webhooks
Per-user data isolation
SQLite (per user)
Central DB (referrals, licenses)
Stripe Connect (payments)

How multi-domain routing works

DNS Configuration (do this once per domain)
# In your domain registrar (GoDaddy, Namecheap, Cloudflare, etc.)

fortune0.com          CNAME  →  your-server.example.com
death2data.com        CNAME  →  your-server.example.com
installkernel.com     CNAME  →  your-server.example.com
bootstrapprotocol.com CNAME  →  your-server.example.com

# All four domains now point to the same server.
# The server figures out which one the person typed.
Server-side routing (Python / Flask)
@app.route('/')
def homepage():
    # The server checks which domain the browser sent
    host = request.headers.get('Host', '')

    if 'death2data' in host:
        return render_template('landing_d2d.html')
    elif 'installkernel' in host:
        return render_template('landing_ik.html')
    elif 'bootstrapprotocol' in host:
        return render_template('landing_bp.html')
    else:
        # fortune0.com or anything else → main landing
        return render_template('landing_fortune0.html')

# BUT — every domain shares the same API:
# /api/activate  → same endpoint regardless of domain
# /api/contacts  → same endpoint
# /api/affiliates → same endpoint
# The branding changes. The backend doesn't.

Authentication flow

One account, all domains
1. User visits fortune0.com/start
2. Enters email → receives magic link (or enters email + password)
3. Server creates:
   - User record in central DB
   - Per-user SQLite database
   - Referral code (IK-XXXXXXXX)
   - Free tier flag (no payment yet)
4. User gets session token (cookie)
5. Cookie works across all domains (if using fortune0.com as auth domain)
   OR each domain validates the same session token via API

FREE TIER:
- Can use CRM (limited contacts)
- Can browse standards
- Can see affiliate program (can't withdraw)
- Sees upgrade prompts

PAID TIER ($1/mo via Stripe):
- Unlimited everything
- Affiliate payouts enabled
- Full API access
- MCP server access

URL structure

Business-card friendly URLs
fortune0.com                 → main landing page
fortune0.com/start           → signup
fortune0.com/login           → login
fortune0.com/dashboard       → user dashboard (after login)
fortune0.com/re              → real estate vertical landing
fortune0.com/privacy         → privacy vertical landing
fortune0.com/build           → builder/developer landing
fortune0.com/earn            → affiliate program landing
fortune0.com/pricing         → $1/month pitch

# API (same server, /api prefix)
fortune0.com/api/contacts    → CRM
fortune0.com/api/affiliates  → affiliate engine
fortune0.com/api/stats       → dashboard data
fortune0.com/api/standards/* → RESO, FHIR, FIX
fortune0.com/health          → uptime check

What "hardened" means for this system

Authentication

HMAC-signed license keys. Session tokens with 7-day expiry. Per-user database isolation — one user can never see another's data. Already built in main.py.

HTTPS everywhere

Most hosting platforms auto-provision TLS certificates via Let's Encrypt. Every domain gets the lock icon. No configuration needed.

Rate limiting

100 requests per minute per IP. Prevents abuse. Built as middleware in the Flask app.

SQL injection protection

All database queries use parameterized statements. No string concatenation. Already done in main.py.

Webhook verification

Shopify webhooks are HMAC-verified — the server cryptographically proves the webhook came from Shopify, not an attacker.

Data sovereignty

Per-user SQLite files. User data never mixes. Can export or delete any user's data instantly. GDPR-friendly by architecture.

Tech stack (final)

The entire stack
BACKEND:      Python 3.11 + Flask
DATABASE:     SQLite (per-user) + central SQLite
AUTH:         HMAC license keys + session tokens
PAYMENTS:     Stripe ($1/mo) + Stripe Connect (affiliate payouts)
HOSTING:      Any VPS ($5/mo), any PaaS, or your own machine
DNS:          Cloudflare (free) — manages all 4+ domains
HTTPS:        Auto-provisioned by host or Cloudflare
MCP:          Built-in /mcp endpoint for Claude Desktop
MONITORING:   /health endpoint + whatever your host provides

WHAT YOU DON'T NEED:
- No React frontend (server-rendered HTML is fine for now)
- No Postgres (SQLite handles thousands of users)
- No Redis (in-memory sessions are fine for MVP)
- No Kubernetes (one process, scale when you need to)
- No microservices (one Python server does everything)

Click "Build It" above for the exact step-by-step implementation checklist.

Build checklist

Exactly what to do, in order. No decisions to make — just follow the steps.

Phase 1 — Get it online (weekend)

Goal: fortune0.com is live on the internet and you can show it to someone.

1
Move your DNS to Cloudflare (all domains)
Go to cloudflare.com, create free account, add each domain. Change nameservers at your registrar. Cloudflare gives you free HTTPS, DDoS protection, and easy DNS management for all domains in one place.
Effort: 30 min · Cost: Free
2
Deploy server.py to your host
Upload the fortune0-site folder to any server with Python 3.8+. Run F0_LICENSE_SECRET=your-secret python3 server.py. Works on any VPS ($5/mo DigitalOcean, Linode, Hetzner), any PaaS (Railway, Fly, Render), or even your own Mac with a tunnel.
Effort: 15 min · Cost: $5/mo (or free locally)
3
Point fortune0.com at your server
In Cloudflare, add an A record (for a VPS IP) or CNAME record (for a PaaS hostname) pointing fortune0.com → your server. Wait 5 min for DNS propagation.
Effort: 10 min · Cost: Free
4
Add a landing page route to main.py
Right now main.py only serves JSON APIs. Add a @app.route('/') that returns HTML — a simple landing page with: logo, one-liner, email signup form, and links to /re, /privacy, /earn.
Effort: 1 hour · Cost: Free
5
Test it
Open fortune0.com in your browser. You should see the landing page with HTTPS (lock icon). Hit fortune0.com/health — you should see {"status": "ok"}. Hand your phone to someone and ask them to try it.
Effort: 5 min
After Phase 1

You have a live website at fortune0.com with HTTPS, an API, and a landing page. You can put fortune0.com on a business card. It works. It's real.

Phase 2 — Accounts & login (1 week)

Goal: People can sign up and log in. Free tier works.

6
Add email signup to main.py
POST /api/signup — takes email, creates user record, generates license key, sends welcome email (or just shows the key on screen for now). User gets a session token.
Effort: 2 hours
7
Add a dashboard page
GET /dashboard — returns HTML (server-rendered, not React). Shows: your referral code, your contacts, your stats. Uses the session token from login. This is the installkernel dashboard rewritten as part of main.py.
Effort: 4 hours (port from existing web.py)
8
Point remaining domains at your server
Same as step 3, but for death2data.com, installkernel.com, bootstrapprotocol.com. All point to same server. Add domain-based branding in the homepage route.
Effort: 30 min

Phase 3 — Payments (1 week)

Goal: People can pay $1/month. Affiliate commissions are tracked.

9
Create Stripe account + Stripe Connect
Go to stripe.com, sign up. Enable Connect (for routing affiliate payouts). Get your API keys. Set IK_STRIPE_SECRET as an environment variable on your server.
Effort: 1 hour · Cost: Free (Stripe takes % of transactions)
10
Add Stripe checkout to main.py
POST /api/subscribe — creates Stripe checkout session for $1/month. On success, flips user from free to paid in the database. Stripe handles the billing, you never touch credit card numbers.
Effort: 3 hours
11
Merge affiliate engine into main.py
Take the affiliate tables, commission logic, and API endpoints from run.py and add them to main.py. About 200 lines of code. Now the same server handles CRM + affiliates + payments.
Effort: 2 hours

Phase 4 — Shopify app (2 weeks)

Goal: Merchants can install your app from the Shopify App Store.

12
Create Shopify Partner account
Go to partners.shopify.com. Free account. This lets you create and list Shopify apps.
Effort: 15 min · Cost: Free
13
Create the Shopify app
In Partner dashboard, create app. Set webhook URL to fortune0.com/api/webhooks/shopify/order. When a merchant installs your app, Shopify sends order data to your server automatically.
Effort: 1 week
14
Build the embeddable widget
A tiny JavaScript snippet (~50 lines) that merchants paste into their store theme. It reads ?ref=CODE from the URL, sets a cookie, and when the customer checks out, the discount code is auto-applied. This enables URL-based attribution (not just discount codes).
Effort: 3 days
Important

Do not start Phase 4 until Phases 1-3 are deployed and working with real users. Ship the simple version first. The Shopify app is an expansion, not a prerequisite.

What already exists vs what's left

Built & working

Flask API server (main.py) DONE

License key system (HMAC) DONE

Per-user SQLite databases DONE

Contact/Listing CRUD DONE

MCP endpoint DONE

RESO/FHIR/FIX standards DONE

Affiliate commission engine DONE

Referral code system DONE

Platform-agnostic deployment DONE

Still need to build

Landing page HTML ~1 hour

Email signup flow ~2 hours

Dashboard HTML ~4 hours

Stripe checkout ~3 hours

Merge affiliate into main.py ~2 hours

Domain DNS setup ~1 hour

Shopify app ~1 week

Embeddable widget ~3 days

Total estimate to launch

~13 hours of coding + 1 hour of config gets you to a live platform at fortune0.com where people can sign up, pay $1/month, and use all the tools. The Shopify integration adds ~2 weeks on top of that.

Monthly cost: ~$10-15 (any $5/mo host + domain renewals). Revenue starts at first subscriber.


For the CTO reading this

The architecture is intentionally simple. One Python process, SQLite for storage, runs on any host. This supports thousands of users before you need to think about Postgres, Redis, or horizontal scaling. The per-user SQLite pattern gives you data isolation, easy backup/restore, and GDPR compliance by default. When you outgrow it, the migration path is straightforward: swap SQLite for Postgres, add Redis for sessions, containerize with Docker. But don't do any of that until you have paying customers.

For Matt reading this

Everything you described makes sense. The "internet for implementing ideas" is real — it's a platform where someone shows up, picks a vertical, and gets working tools immediately. The 404 analogy is the entire pitch: "every idea that doesn't exist yet is a fortune waiting to happen. We turn 404s into products." The hard part isn't the code — most of it is already built. The hard part is shipping one thing before building the next. Deploy server.py. Point fortune0.com at it. Then iterate.