PHASE 12: Startup Operations
Trigger: "Execute Phase 12 as per masterplan."
Goal: Membership One GmbH is legally established, Hetzner Cloud infrastructure is operational, the company uses its own platform (dogfooding), legal compliance documents are templated, marketing channels are active, and go-to-market is executing.
Prerequisite: Phase 11 is completed. Software is deployed and beta-tested.
Reference: Chapter 16 — Startup Operations
Note: Steps are classified as
[SOFTWARE],[BUSINESS], or[HYBRID].[BUSINESS]steps require human action and cannot be fully automated.
Step 12.1 — [BUSINESS] GmbH Formation and Legal Foundation
(reference: Chapter 16 — Startup Operations, Section 1)
Establish Membership One GmbH as the legal entity.
Formation Checklist (6 weeks):
| Week | Action | Cost |
|---|---|---|
| 1 | Draft Gesellschaftsvertrag (Musterprotokoll), WZ code 62.01 | EUR 0 (template) |
| 1 | Notarize at Notar | EUR 300-500 |
| 1-2 | Open Geschaeftskonto (Qonto/FYRST), SEPA-capable | EUR 0 |
| 2 | Deposit Stammkapital EUR 25,000 | EUR 25,000 |
| 2 | Notar files Handelsregister (Amtsgericht) | EUR 150 |
| 2-6 | Receive HRB number | — |
| 3 | Gewerbeanmeldung (Gewerbeamt) | EUR 20-60 |
| 3-4 | Finanzamt: Fragebogen, Steuernummer, USt-IdNr. (BZSt) | EUR 0 |
| 3-4 | Insurance: Betriebshaftpflicht (~EUR 300/yr), Cyber (~EUR 500/yr), D&O (~EUR 400/yr) | EUR 1,200/yr total |
| 2-3 | Engage Steuerberater with DATEV access (~EUR 300/mo) | EUR 300/mo |
| 4-5 | DATEV Unternehmen Online setup (via Steuerberater) | included |
| 1 | Register domains (membership-one.com, membership.app) + corporate email | ~EUR 30/yr |
Total Formation Cost: ~EUR 26,500 (incl. EUR 25,000 Stammkapital) + ~EUR 1,500/yr recurring
Ongoing Compliance: - USt-Voranmeldung (quarterly, 10th of following month) - Lohnsteuer-Anmeldung (monthly, when employees exist) - Jahresabschluss (annually, 12 months after fiscal year end) - Bundesanzeiger Offenlegung (annually) - IHK Beitrag (~EUR 150/yr, automatic upon Gewerbeanmeldung) - DSGVO Verarbeitungsverzeichnis (update annually or on change)
Validation: - [ ] HRB number received - [ ] Bank account active with Stammeinlage deposited - [ ] Steuernummer and USt-IdNr. obtained - [ ] Insurance policies active (Betriebshaftpflicht, Cyber, D&O) - [ ] Steuerberater engaged with DATEV access
Result: Membership One GmbH legally incorporated.
Step 12.1b — [BUSINESS] Service Provider Contracts
(reference: Chapter 16 — Service Provider Registry)
| # | Provider | Service | Monthly Cost |
|---|---|---|---|
| 1 | My-Factura | Invoicing, SEPA mandates | Variable |
| 2 | CashControl | Debt collection (via My-Factura) | Included |
| 3 | Hetzner Cloud | Infrastructure | ~EUR 100 |
| 4 | DATEV | Tax integration (via Steuerberater) | Included |
| 5 | Steuerberater | Tax advisory | ~EUR 300 |
| 6 | Cloudflare | CDN, DNS, WAF | EUR 0 (Free) |
| 7 | GitLab | Source code, CI/CD | EUR 0 (Free) |
| 8 | SMTP Provider | Email delivery | ~EUR 10 |
| 9 | Insurance | Business, Cyber, D&O | ~EUR 100 |
| 10 | Domain | membership-one.com | ~EUR 3 |
| 11 | Vaultwarden | Team credential management | Self-hosted |
| 12 | Icinga | Infrastructure monitoring | Self-hosted |
| 13 | Dehydrated | ACME/TLS certificates | Self-hosted |
Monthly Fixed Costs Summary (Phase A):
| Category | EUR/month |
|---|---|
| Hetzner Cloud (all resources) | 97.41 |
| Domains (.com + .app) | 2.50 |
| SMTP (Mailgun Flex) | 10.00 |
| Steuerberater (retainer + DATEV) | 300.00 |
| Insurance (Betriebs + Cyber + D&O, amortized) | 100.00 |
| IHK Beitrag (amortized) | 12.50 |
| Virtual office (for Handelsregister) | 30.00 |
| Marketing (LinkedIn Ads, content) | 200.00 |
| Contingency buffer | 50.00 |
| Total Fixed Costs | ~802 |
| Personnel (5 persons, Phase A) | 30,000 |
| Total Monthly Burn Rate | ~30,802 |
Validation: - [ ] All contracts signed, API credentials tested - [ ] My-Factura API functional - [ ] Hetzner Cloud project active - [ ] Monthly burn rate within budget
Result: All service providers contracted. Fixed costs ~EUR 800/month.
Step 12.2 — [SOFTWARE] Hetzner Cloud Infrastructure
(reference: Chapter 14 — Infrastructure, Chapter 16 — Section 3)
Set up production on Hetzner Cloud. Primary: Nuremberg (nbg1), DR: Falkenstein (fsn1).
Server Specifications:
| Resource | Type | Spec | Purpose | EUR/mo |
|---|---|---|---|---|
| App Node 1-3 | CX32 | 4 vCPU, 8 GB RAM, 80 GB SSD | API pods, worker, scheduler | 3x 15.59 = 46.77 |
| Infra Node 1-2 | CX22 | 2 vCPU, 4 GB RAM, 40 GB SSD | Redis, RabbitMQ, Prometheus, Grafana, Loki, Icinga, Vaultwarden | 2x 5.39 = 10.78 |
| Database | Managed PG CPX21 | 3 vCPU, 4 GB RAM, 80 GB | PostgreSQL 18, daily backups, PITR | 17.85 |
| Load Balancer | LB11 | 25 targets, TLS termination | HTTPS, health checks, Proxy Protocol v2 | 6.41 |
| Object Storage | S3-compatible | ~100 GB | Documents, backups | ~3.00 |
| Floating IPs | 2x IPv4 | Static | Primary + failover | 2x 5.05 = 10.10 |
| Volume (Monitoring) | Block Storage | 50 GB SSD | Prometheus TSDB, Loki | 2.50 |
| Hetzner Subtotal | ~97.41 | |||
| Cloudflare | CDN + WAF + DNS | Free plan | Edge, DDoS, DNS | 0.00 |
| Domains | .com + .app | Primary + product | ~2.50 | |
| Grand Total | ~99.91 |
Setup Steps:
- Kubernetes: Create K8s cluster (3 app + 2 infra nodes), install: nginx-ingress, cert-manager, sealed-secrets, metrics-server
- Networking: Cloud Network 10.0.0.0/16, subnets: 10.0.1.0/24 (K8s), 10.0.2.0/24 (DB), 10.0.3.0/24 (storage)
- Firewall Rules: HTTPS (0.0.0.0/0:443), HTTP redirect (0.0.0.0/0:80), SSH (admin IPs only:22), internal (10.0.0.0/16:all), default deny inbound
- Managed PostgreSQL: CPX21 in DB subnet, daily backups, PITR via WAL archives, PgBouncer
- In-Cluster Services: Redis 7, RabbitMQ 4 (StatefulSets with persistent volumes)
- Object Storage: 3 buckets:
membership-documents,membership-uploads,membership-backups - Edge: Cloudflare DNS (A records to floating IPs), CDN for static assets, WAF rules, Full(Strict) TLS
- TLS: Let's Encrypt via Dehydrated (DNS-01 challenge via Cloudflare API), daily cron, auto-deploy to LB
- Backup: Velero daily cluster backup, pg_dump daily to object storage, cross-location replication to Falkenstein (fsn1)
- Monitoring Stack:
- Prometheus (metrics), Grafana (dashboards), Loki + Promtail (logs)
- Uptime Kuma (external health checks)
- Icinga (SSL cert monitoring, DNS, SMTP, Cash360 API reachability)
- Vaultwarden (team credentials, Bitwarden-compatible, MFA)
- Alerts: email + Telegram bot for P1/P2
Key Alerts:
| Alert | Condition | Severity |
|---|---|---|
| API pod down | < 2 healthy pods for 2 min | P1 |
| API latency high | p95 > 2s for 5 min | P2 |
| DB connections exhausted | > 90% pool for 5 min | P1 |
| DB disk > 80% | Threshold crossed | P2 |
| Certificate expiry | < 14 days remaining | P2 |
| Pod OOMKilled | Any pod | P1 |
| Backup failed | Non-zero exit | P1 |
| Queue depth | > 10,000 messages for 15 min | P2 |
| Error rate spike | 5xx > 1% for 5 min | P1 |
DR Targets: RTO 4h, RPO 1h, MTTR 2h
Validation:
- [ ] K8s cluster healthy (kubectl get nodes — all Ready)
- [ ] PostgreSQL reachable from app pods
- [ ] HTTPS active (Cloudflare → LB → ingress → pods)
- [ ] Monitoring operational (Grafana dashboards loaded, alerts configured)
- [ ] Backup restore tested (Velero + pg_restore)
- [ ] Dehydrated certificate auto-renewal verified
- [ ] Icinga monitoring all external endpoints
Result: Production infrastructure operational at ~EUR 100/month.
Step 12.3 — [SOFTWARE] GitLab CI/CD
(reference: Chapter 14 — Infrastructure)
- GitLab: gitlab.com SaaS (Free tier initially), monorepo
membership-one/membership - Runner: On K8s cluster, Docker-in-Docker, auto-scaling 0-3, cached dependencies
- Container Registry: GitLab built-in, retention: 10 tagged images, 30-day cleanup
- Pipeline (.gitlab-ci.yml):
- Stages: build -> test -> quality -> package -> deploy-dev -> deploy-staging -> deploy-production
- Quality: SonarQube scan, Trivy image scan
- Deploy:
helm upgrade --installwith environment-specific values - Branch Strategy: main (prod), develop (integration), feature/, hotfix/
Validation: - [ ] Pipeline succeeds, Docker image pushed, staging deploy works
Result: CI/CD pipeline operational.
Step 12.4 — [HYBRID] Business Automation (Dogfooding)
(reference: Chapter 16 — Section 4)
Configure Membership One GmbH as "Tenant Zero" using own platform.
- Organization: Root entity "Membership One GmbH" as Vendor type, EUR, de_DE, Europe/Berlin
- CRM Pipeline: LEAD -> CONTACTED -> DEMO_SCHEDULED -> DEMO_COMPLETED -> TRIAL -> PROPOSAL_SENT -> NEGOTIATION -> WON -> ONBOARDING -> ACTIVE
- Support: Categories (Bug, Feature, Billing, Onboarding, General), SLA per tier
- Accounting: SKR03, cost centers (Dev, Infra, Marketing, Sales, Admin), monthly DATEV export
- Communication: Onboarding sequences, billing reminders, newsletter templates
- SaaS Billing: Customers as My-Factura Consumers, SEPA Lastschrift, MRR/ARR tracking
- Documents: Contract templates (AGB, AVV, NDA), auto-filled, version tracked
Zero External SaaS Result:
| Function | Tool | External? |
|---|---|---|
| CRM | Own module | No |
| Support | Own module | No |
| Accounting | Own module + DATEV | DATEV only |
| Billing | Own + My-Factura | My-Factura |
| Communication | Own + SMTP | SMTP only |
| Documents | Own module | No |
| Monitoring | Prometheus/Grafana/Icinga | Self-hosted |
| CI/CD | GitLab | Free tier |
Validation: - [ ] CRM pipeline functional, support ticket created/resolved, DATEV export valid, email templates render
Result: Membership One operates on own platform.
Step 12.5 — [HYBRID] Legal Compliance Documents
(reference: Chapter 16 — Section 5)
- AGB (Terms of Service): SaaS subscription, SLA 99.5%, SEPA, liability, termination per tier
- Datenschutzerklaerung (GDPR Art. 13/14): Controller, purposes, legal basis, retention, data subject rights, sub-processors
- AVV/DPA (GDPR Art. 28): Auto-generated per customer, TOM, sub-processor notification, audit rights
- Impressum (TMG Par. 5): Company, HRB, USt-IdNr., managing director, contact
- Cookie Policy: Essential only (no consent banner initially)
- Templates: Stored in Document module, variables auto-populated, PDF generation
Validation: - [ ] AGB PDF renders, AVV auto-fills, Datenschutzerklaerung complete, Impressum accurate
Result: All legal documents templated in platform.
Step 12.6 — [HYBRID] Website and Marketing
(reference: Chapter 16 — Section 6)
Website: 1. Tech: Hugo or Astro on Cloudflare Pages (free hosting, auto-deploy from Git) 2. Domain: membership-one.com (primary), membership.app (product) 3. Pages: Home, Features, Pricing, Demo Request, Blog, About, Impressum, Datenschutz 4. Pricing Page:
| Tier | Monthly | Annual | Member Limit | Headline |
|---|---|---|---|---|
| Starter | EUR 0.99 | EUR 9.99 | 20 | For evaluation |
| Team | EUR 29 | EUR 299 | 200 | For small clubs/studios |
| Professional | EUR 99 | EUR 999 | 2,000 | For mid-size organizations |
| Enterprise | From EUR 249 | Custom | Unlimited | For chains and franchises |
All prices net (plus applicable VAT).
- Demo Flow: Website form →
POST /api/crm/leads(via public API) → confirmation email → CRM pipeline → sales follow-up - Blog: 2 articles/month, SEO optimized, schema.org
LocalBusiness+SoftwareApplicationstructured data
Outreach Templates (stored in CRM):
-
Cold Email (to studio owners):
Subject: [Studio Name] — eine Frage zu Ihrer Mitgliederverwaltung Hi [Name], ich habe [Studio Name] auf Google Maps gesehen — beeindruckende Bewertungen! Kurze Frage: Wie verwalten Sie aktuell Mitgliederbeiträge und Kursanmeldungen? [...]
-
LinkedIn Connection (to Vereinsvorstand):
Hi [Name], ich sehe, Sie leiten [Verein]. Wir bauen ein modernes Verwaltungstool speziell für deutsche Sportvereine — automatischer Beitragseinzug, Mitglieder-Self-Service, klare Vorstandsberichte. [...]
-
Demo Follow-Up:
Betreff: Ihr [Organisation] Demo — nächste Schritte [Pain Point 1] → [Feature 1], [Pain Point 2] → [Feature 2]. Ich habe eine 14-Tage-Testversion für Sie eingerichtet: [Link] [...]
Analytics: Plausible (self-hosted, GDPR-compliant, no cookies, no consent banner required)
Social Media: LinkedIn (B2B, 3x/week), Instagram (visual, 2x/week), content calendar managed in own CRM
Validation: - [ ] Website live at membership-one.com - [ ] Demo form creates CRM lead with source=WEBSITE - [ ] Blog section has 2+ articles - [ ] Plausible analytics tracking page views - [ ] Outreach templates stored in CRM
Result: Marketing channels active with website, outreach templates, and analytics.
Step 12.7 — [BUSINESS] Personnel Scaling Plan
(reference: Chapter 16 — Section 7)
Team Scaling by Phase:
| Phase | Months | Team | New Role | Trigger | EUR/mo (employer cost) |
|---|---|---|---|---|---|
| A Launch | 1-6 | 5 | CEO/GF | — | 4,000 |
| Sr. Backend Developer | — | 7,150 | |||
| Sr. Frontend Developer | — | 7,150 | |||
| Full Stack Developer | — | 5,850 | |||
| QA / DevOps Engineer | — | 5,850 | |||
| A Total | 30,000 | ||||
| B Support | 7-12 | 6 | Customer Success Mgr | 10 paying customers or CEO support >15h/week | 5,200 |
| B Total | 35,200 | ||||
| C Growth | 13-24 | 8 | Sales Representative | Pipeline >20 leads or revenue target | 5,850 |
| Marketing Manager | Need for consistent lead generation | 5,200 | |||
| C Total | 46,250 | ||||
| D Scale | 25-36 | 11 | Support Engineer | Ticket volume >50/week or SLA <95% | 4,550 |
| DevOps Engineer | Infrastructure complexity | 6,500 | |||
| Backend Developer | Feature backlog exceeds capacity | 5,850 | |||
| D Total | 63,150 |
Monthly Burn Rate Evolution:
| Phase | Headcount | Personnel | Fixed Costs | Total Burn |
|---|---|---|---|---|
| A (M1-6) | 5 | 30,000 | 802 | 30,802 |
| B (M7-12) | 6 | 35,200 | 900 | 36,100 |
| C (M13-24) | 8 | 46,250 | 1,100 | 47,350 |
| D (M25-36) | 11 | 63,150 | 1,500 | 64,650 |
Break-Even Analysis:
| Scenario | Customers | MRR (EUR) | Monthly Costs | Status |
|---|---|---|---|---|
| Minimum viable | 20 (mix) | 650 | 30,802 | Loss |
| Early traction | 62 (mix) | 2,448 | 30,802 | Loss |
| Growth | 120 (mix) | 6,125 | 30,802 | Loss |
| Break-even | ~430 (mix) | ~30,270 | ~36,000 | Near break-even |
| Profitable | 620 (mix) | ~46,620 | 40,000 | Profit: ~+6,620 |
Break-even timeline: 18-24 months after launch (assuming 10-20 new customers/month from month 6).
Candidate tracking via own CRM (Recruitment pipeline: LEAD → SCREENING → INTERVIEW → OFFER → HIRED).
Result: Hiring roadmap with triggers and break-even projection.
Step 12.8 — [BUSINESS] Go-to-Market Strategy
(reference: Chapter 16 — Section 8)
GTM Timeline:
| Phase | Months | Target | Revenue Goal |
|---|---|---|---|
| Soft Launch | 1-3 | 3-5 beta clients (free/discounted) | Validate PMF, gather testimonials |
| Paid Launch | 4-8 | 10 paying customers | EUR 1,000+ MRR |
| Growth | 9-18 | 100 customers | EUR 10,000+ MRR |
| Scale | 19-36 | 500+ customers | EUR 30,000+ MRR (break-even) |
3 Ideal Customer Profiles (ICPs):
| ICP | Organization | Size | Decision Maker | Sales Cycle | Target Tier |
|---|---|---|---|---|---|
| 1 — Fitness Studio | 50-300 members, 1 owner + 2-5 trainers | Small | Studio owner (single) | 1-2 weeks | Team/Professional |
| 2 — Sports Club (Verein) | 100-500 members, volunteer Vorstand | Medium | Board vote (2-4 people) | 2-6 weeks | Team |
| 3 — Dance/Martial Arts | 30-200 members, 1 owner/instructor | Small | School owner (single) | 1-2 weeks | Team |
Channel Strategy:
| Channel | Phase | EUR/mo | Expected Leads/mo | Cost/Lead |
|---|---|---|---|---|
| SEO / Blog | A | 50 | 5-10 | EUR 5-10 |
| LinkedIn Organic | A | 0 | 3-5 | EUR 0 |
| LinkedIn Ads | B | 150-300 | 10-20 | EUR 15-30 |
| Google Ads | B | 100-200 | 5-10 | EUR 20-40 |
| Referral Program | B | 0 | 2-5 | EUR 0 (1 month free) |
| Partner / Associations | C | 50 | 5-10 | EUR 5-10 |
| Trade Shows | C | 200 | 20-30 | EUR 7-10 |
Year 1 Priority: Direct outreach (CEO cold emails + LinkedIn) → SEO content → Referrals → LinkedIn Ads
KPIs:
- MRR, ARR, monthly churn (<5%), CAC (
Result: GTM executing with 3 ICPs, multi-channel strategy, and revenue generation.
Step 12.9 — [SOFTWARE] Phase 12 Documentation
- Update
doc/operations/deployment-guide.md(Hetzner specifics) - Update
doc/business/marketing-guide.md(GTM, pricing, content calendar)
Step 12.10 — [SOFTWARE] Update Intranet
Run python doc/intranet/build.py.
Phase 12 — Quality Gate
| # | Check | Target |
|---|---|---|
| 1 | GmbH incorporated | HRB number, Steuernummer, USt-IdNr. |
| 2 | Service providers | all contracts active |
| 3 | Hetzner infrastructure | K8s, PostgreSQL, monitoring operational |
| 4 | CI/CD | pipeline deploying to staging + production |
| 5 | Dogfooding | Tenant Zero using CRM, Support, Accounting |
| 6 | Legal documents | AGB, Datenschutz, AVV, Impressum templated |
| 7 | Website | live at membership-one.com |
| 8 | Beta customers | 3+ onboarded and active |
| 9 | Documentation + intranet | updated |
| 10 | CLAUDE.md | updated |
Report: "Phase 12 completed. Membership One GmbH operational. Infra ~EUR 100/month."