Startup Operations
Overview
This chapter defines how Membership One GmbH is founded and operated to bring the Membership Management Software to market. The operating philosophy is lean startup with maximum automation: build, measure, learn -- and use the product itself to run the company.
Core Principles
- Dogfooding above all -- Membership One uses the Membership One platform to manage its own CRM, support, invoicing, accounting, and analytics. Every internal pain point becomes a product improvement.
- Minimum viable team -- The CEO handles all non-development business functions (sales, marketing, finance, legal, support) assisted by the platform's automation. The 4-person dev team focuses exclusively on product development.
- Infrastructure frugality -- Hetzner Cloud (Nuremberg) provides enterprise-grade infrastructure at a fraction of hyperscaler costs. The entire production stack runs for approximately EUR 100/month.
- Compliance by default -- German GmbH formation, GDPR-first data handling, DATEV-compatible accounting, and EU VAT compliance are baked into operations from day one.
- Revenue before fundraising -- The company targets profitability through customer revenue, not venture capital. Break-even is achievable with approximately 20 Professional-tier customers.
Operating Model
The feedback loop is intentionally tight: the CEO experiences every product limitation firsthand while running the business, translates pain points into prioritized backlog items, and the dev team ships fixes and features in short cycles.
Legal Structure
GmbH Formation Checklist
Membership One GmbH is established as a German Gesellschaft mit beschrankter Haftung (limited liability company) with the minimum share capital of EUR 25,000. The Musterprotokoll (standard protocol) simplifies formation for single-shareholder companies.
| Step | Action | Responsible | Timeline | Cost Estimate |
|---|---|---|---|---|
| 1 | Draft Gesellschaftsvertrag (Articles of Association) using Musterprotokoll | CEO + Notary | Week 1 | EUR 0 (template) |
| 2 | Notarize Gesellschaftsvertrag at Notar | CEO | Week 1 | EUR 300-500 |
| 3 | Open Geschaeftskonto (business bank account) at Qonto or FYRST | CEO | Week 1-2 | EUR 0 (online banks) |
| 4 | Deposit Stammkapital (EUR 25,000 share capital) into business account | CEO | Week 2 | EUR 25,000 |
| 5 | Notar files Handelsregister application (Amtsgericht) | Notary | Week 2 | EUR 150 (court fee) |
| 6 | Receive Handelsregister entry (HRB number) | Amtsgericht | Week 2-6 | Included above |
| 7 | Register at Finanzamt for Steuernummer (tax ID) | CEO | Week 3-4 | EUR 0 |
| 8 | Apply for USt-IdNr. (VAT identification number) at BZSt | CEO | Week 3-4 | EUR 0 |
| 9 | Gewerbeanmeldung (trade registration) at Gewerbeamt | CEO | Week 3 | EUR 20-60 |
| 10 | Obtain Betriebshaftpflichtversicherung (business liability insurance) | CEO | Week 3-4 | ~EUR 300/year |
| 11 | Obtain Cyber-Versicherung (cyber liability insurance) | CEO | Week 3-4 | ~EUR 500/year |
| 12 | Obtain D&O-Versicherung (directors and officers insurance) | CEO | Week 4 | ~EUR 400/year |
| 13 | Engage Steuerberater (tax advisor) with DATEV access | CEO | Week 2-3 | ~EUR 300/month |
| 14 | Set up DATEV Unternehmen Online for digital bookkeeping | Steuerberater | Week 4-5 | Included in advisor fee |
| 15 | Register domain(s) and set up corporate email | CEO | Week 1 | ~EUR 30/year |
| 16 | Create company website (Hugo/Astro on Cloudflare Pages) | CEO | Week 2-4 | EUR 0 (free hosting) |
| 17 | Set up GitLab organization and CI/CD | Dev Lead | Week 1 | EUR 0 (free tier) |
| 18 | Provision Hetzner Cloud infrastructure | Dev Lead | Week 1-2 | ~EUR 100/month |
| 19 | IHK membership (automatic upon Gewerbeanmeldung) | IHK | Automatic | ~EUR 150/year |
| 20 | DSGVO documentation (Verarbeitungsverzeichnis, Datenschutzerklaerung) | CEO | Week 4-6 | EUR 0 (templates) |
Total formation cost: approximately EUR 26,500 (including share capital) plus ~EUR 1,250/year recurring insurance and IHK fees.
Timeline: 4-6 weeks from notarization to full operational readiness.
Ongoing Compliance
The following obligations apply to every German GmbH on a recurring basis:
| Obligation | Frequency | Deadline | Responsible | Platform Support |
|---|---|---|---|---|
| USt-Voranmeldung (VAT advance return) | Quarterly (monthly if revenue > EUR 7,500/quarter) | 10th of following month | Steuerberater | DATEV export from membership-accounting |
| Lohnsteuer-Anmeldung (payroll tax) | Monthly (when employees exist) | 10th of following month | Steuerberater | DATEV export |
| Zusammenfassende Meldung (EC Sales List) | Quarterly (if EU B2B sales) | 25th of following month | Steuerberater | Invoice data export |
| Jahresabschluss (annual financial statements) | Annually | 12 months after fiscal year end | Steuerberater | DATEV export |
| Koerperschaftsteuererklaerung (corporate tax return) | Annually | July 31 (with extension: Feb 28) | Steuerberater | DATEV export |
| Gewerbesteuererklaerung (trade tax return) | Annually | Same as corporate tax | Steuerberater | DATEV export |
| Bundesanzeiger Offenlegung (financial statement publication) | Annually | 12 months after fiscal year end | Steuerberater / CEO | PDF generation |
| Handelsregister updates | On change (address, Geschaeftsfuehrer, capital) | Without undue delay | CEO + Notary | N/A |
| IHK Beitrag (chamber of commerce fee) | Annually | Upon invoice | CEO | Auto-payment |
| Betriebliche Steuererklarung | Annually | With annual filing | Steuerberater | DATEV export |
| DSGVO Verarbeitungsverzeichnis update | Annually or on change | Ongoing | CEO | Document management |
| Software license compliance audit | Annually | Q1 | Dev Lead | Dependency scan in CI/CD |
Key automation opportunity: The membership-accounting module with DATEV export capability handles the majority of recurring tax obligations by providing the Steuerberater with structured, machine-readable financial data. The CEO's role reduces to review and approval.
Service Providers
Membership One GmbH operates the Membership One SaaS platform. External service providers are contracted for specialized functions. Cash360, My-Factura, and CashControl are independent companies — not internal products.
Service Provider Registry
| # | Provider | Service | Website | Relationship |
|---|---|---|---|---|
| 1 | My-Factura | Invoicing, billing, SEPA mandates | www.my-factura.com | Billing provider |
| 2 | CashControl | Payment collections, debt collection | cashcontrol.info | Used by My-Factura |
| 3 | Hetzner Cloud | Infrastructure hosting | www.hetzner.com | Infrastructure provider |
| 4 | DATEV | Tax accounting standard | www.datev.de | Via Steuerberater |
| 5 | Steuerberater | Tax advisory, bookkeeping | — | Service contract |
| 6 | Cloudflare | CDN, DNS, WAF | www.cloudflare.com | Edge provider |
| 7 | GitLab | Source code, CI/CD | gitlab.com | DevOps platform |
| 8 | SMTP Provider | Email delivery | — | Mailgun or SES |
| 9 | Vaultwarden | Team password manager (Bitwarden-compatible) | github.com/dani-garcia/vaultwarden | Self-hosted on Hetzner |
| 10 | Icinga | Infrastructure monitoring, SSL certificate checks | icinga.com | Self-hosted on Hetzner |
| 11 | Dehydrated | ACME client for Let's Encrypt certificate renewal | github.com/dehydrated-io/dehydrated | Self-hosted on Hetzner |
Contract Bundle for Customer Onboarding
When a new customer (Franchise, Studio, or Verein) signs up for Membership One, they enter into a bundled contract that covers three service relationships:
- Membership One GmbH — SaaS Agreement (AGB) + AVV/DPA
- My-Factura — Invoicing and billing service agreement
- CashControl — SEPA Lastschriftmandat (via My-Factura)
This is presented as a single onboarding flow. The customer signs once. Membership One orchestrates all downstream contract creation.
Infrastructure Architecture (Hetzner Cloud)
Why Hetzner
Hetzner Cloud, headquartered in Gunzenhausen (Bavaria) with data centers in Nuremberg (nbg1), Falkenstein (fsn1), and Helsinki (hel1), offers:
- GDPR compliance -- German company, German data centers, no US Cloud Act exposure
- Price performance -- 3-5x cheaper than AWS/GCP/Azure for equivalent compute
- Simplicity -- Straightforward API, no hidden costs, no complex IAM
- Managed services -- PostgreSQL, Load Balancer, Object Storage, Firewall, Floating IP
- Kubernetes -- Managed Kubernetes (k3s-based) with auto-scaling node pools
- Connectivity -- 20 Gbit/s uplinks, Tier III+ data centers, 99.9% SLA
Architecture Diagram
Server Specifications
| Resource | Type | Spec | Purpose | Monthly Cost (EUR) |
|---|---|---|---|---|
| App Node 1 | CX32 | 4 vCPU, 8 GB RAM, 80 GB SSD | API pods, worker, scheduler | 15.59 |
| App Node 2 | CX32 | 4 vCPU, 8 GB RAM, 80 GB SSD | API pods (redundancy) | 15.59 |
| App Node 3 | CX32 | 4 vCPU, 8 GB RAM, 80 GB SSD | API pods (scaling headroom) | 15.59 |
| Infra Node 1 | CX22 | 2 vCPU, 4 GB RAM, 40 GB SSD | Redis, RabbitMQ | 5.39 |
| Infra Node 2 | CX22 | 2 vCPU, 4 GB RAM, 40 GB SSD | Prometheus, Grafana, Loki | 5.39 |
| Database | Managed PG CPX21 | 3 vCPU, 4 GB RAM, 80 GB | PostgreSQL 18 with backups | 17.85 |
| Load Balancer | LB11 | 25 targets, TLS termination | HTTPS traffic distribution | 6.41 |
| Object Storage | S3-compatible | ~100 GB | Backups, documents, PDFs | ~3.00 |
| Floating IP (Primary) | IPv4 | Static IP | DNS A record target | 5.05 |
| Floating IP (Failover) | IPv4 | Static IP | Failover target | 5.05 |
| Volume (Monitoring) | Block Storage | 50 GB SSD | Prometheus TSDB, Loki chunks | 2.50 |
| Hetzner Subtotal | ~97.41 | |||
| Cloudflare (Free Plan) | CDN + WAF + DNS | Unlimited bandwidth | Edge caching, DDoS, DNS | 0.00 |
| Domain (membership-one.com) | .com domain | 1 year registration | Primary domain | ~1.00 |
| Domain (membership.app) | .app domain | 1 year registration | Product domain | ~1.50 |
| Grand Total | ~99.91 |
Note: Prices as of February 2026. Hetzner prices include 19% German VAT for B2C; B2B pricing (net) is approximately 16% lower. The table shows gross prices for conservative budgeting.
Network Architecture
Cloud Network: 10.0.0.0/16
├── Subnet: 10.0.1.0/24 (Kubernetes - app and infra nodes)
├── Subnet: 10.0.2.0/24 (Database - managed PostgreSQL)
└── Subnet: 10.0.3.0/24 (Storage - object storage gateway)
Cloud Firewall Rules:
| Rule | Direction | Protocol | Port | Source | Action |
|---|---|---|---|---|---|
| HTTPS | Inbound | TCP | 443 | 0.0.0.0/0 | Allow |
| HTTP (redirect) | Inbound | TCP | 80 | 0.0.0.0/0 | Allow |
| SSH | Inbound | TCP | 22 | Admin IP allowlist | Allow |
| Kubernetes API | Inbound | TCP | 6443 | Admin IP allowlist | Allow |
| Node communication | Inbound | TCP/UDP | All | 10.0.0.0/16 | Allow |
| PostgreSQL | Inbound | TCP | 5432 | 10.0.1.0/24 | Allow |
| Redis | Inbound | TCP | 6379 | 10.0.1.0/24 | Allow |
| RabbitMQ | Inbound | TCP | 5672 | 10.0.1.0/24 | Allow |
| All outbound | Outbound | All | All | 0.0.0.0/0 | Allow |
| Default | Inbound | All | All | 0.0.0.0/0 | Deny |
TLS Configuration: - Edge certificates: Cloudflare handles TLS termination for public traffic (free, auto-renewed) - Origin certificates: Let's Encrypt via Dehydrated ACME client (DNS-01 challenge through Cloudflare API). Deployed to Hetzner Load Balancer via API post-hook. Daily cron check, renewal at 30 days before expiry. - Certificate monitoring: Icinga monitors all certificate expiry dates (check every 6 hours, alert at < 14 days). Provides independent verification that Dehydrated renewals succeed. - Cloudflare-to-origin: Full (Strict) mode with Let's Encrypt origin certificate - Internal cluster traffic: mTLS via Kubernetes service mesh (Linkerd or plain TLS)
Backup Strategy
| Component | Method | Frequency | Retention | Storage Location |
|---|---|---|---|---|
| PostgreSQL (data) | Managed daily snapshot | Daily at 02:00 UTC | 7 days rolling | Hetzner managed (nbg1) |
| PostgreSQL (WAL) | Continuous WAL archiving (PITR) | Continuous | 7 days | Object Storage (nbg1) |
| PostgreSQL (cross-site) | pg_basebackup to fsn1 | Weekly (Sunday 03:00) | 4 weeks | Object Storage (fsn1) |
| Kubernetes (state) | Velero snapshot | Daily at 03:00 UTC | 14 days | Object Storage (nbg1) |
| Kubernetes (cross-site) | Velero replicated backup | Weekly (Sunday 04:00) | 4 weeks | Object Storage (fsn1) |
| Object Storage (docs) | Cross-location replication | Continuous (async) | Indefinite | Object Storage (fsn1) |
| Secrets (Sealed Secrets) | Git repository (encrypted) | On every change | Git history | GitLab (encrypted) |
| Vaultwarden (team credentials) | Encrypted database export | Daily at 04:00 UTC | 30 days rolling | Object Storage (nbg1 + fsn1) |
| Grafana dashboards | JSON export to Git | On every change | Git history | GitLab |
Restore Testing: - Monthly automated restore test to a staging namespace - Quarterly full disaster recovery drill (see Disaster Recovery section) - All restore procedures documented in runbook with step-by-step instructions
Monitoring Stack
| Component | Tool | Purpose | Resource Usage |
|---|---|---|---|
| Metrics collection | Prometheus | Time-series metrics from all pods and nodes | ~500 MB RAM, 20 GB disk |
| Dashboards | Grafana | Visualization, alerting UI, SLO tracking | ~200 MB RAM |
| Log aggregation | Loki | Structured log storage and querying | ~300 MB RAM, 10 GB disk |
| Log shipping | Promtail (DaemonSet) | Collects logs from all pods | ~50 MB RAM per node |
| Uptime monitoring | Uptime Kuma | External health checks (outside cluster) | Self-hosted on infra node |
| Infrastructure monitoring | Icinga | SSL certificate monitoring, external endpoint checks, DNS monitoring | Self-hosted on infra node |
| Certificate renewal | Dehydrated | ACME/Let's Encrypt certificate automation (DNS-01 via Cloudflare API) | Cron job on infra node |
| Password management | Vaultwarden | Team credential storage (Bitwarden-compatible, MFA-protected) | Self-hosted on infra node |
| APM (optional) | OpenTelemetry + Tempo | Distributed tracing | Added in Phase B |
Alert Channels: - Email -- All alerts, sent to CEO and dev team distribution list - Telegram Bot -- P1/P2 alerts for immediate mobile notification - Grafana OnCall (free tier) -- Escalation and acknowledgment tracking
Key Alerts:
| Alert | Condition | Severity | Action |
|---|---|---|---|
| API pod down | < 2 healthy pods for 2 min | P1 - Critical | Auto-restart, notify team |
| API latency high | p95 > 2s for 5 min | P2 - Warning | Investigate, scale if needed |
| Database connections exhausted | > 90% pool utilized for 5 min | P1 - Critical | Kill idle connections, investigate |
| Database disk > 80% | Disk usage crosses threshold | P2 - Warning | Extend volume, archive old data |
| Certificate expiry | < 14 days remaining (Icinga check) | P2 - Warning | Dehydrated auto-renews origin certs; Cloudflare auto-renews edge certs; investigate if renewal fails |
| Memory pressure | Node memory > 85% for 10 min | P2 - Warning | Investigate pods, consider scaling |
| Pod OOMKilled | Any pod killed by OOM | P1 - Critical | Increase limits, investigate leak |
| Backup failed | Velero/pg_dump exit non-zero | P1 - Critical | Manual backup, investigate |
| Queue depth | RabbitMQ queue > 10,000 messages for 15 min | P2 - Warning | Scale workers, investigate consumer |
| Error rate spike | 5xx rate > 1% for 5 min | P1 - Critical | Check logs, rollback if deployment |
| Uptime check failed | External HTTP check fails 3 times | P1 - Critical | DNS failover, investigate |
| Disk I/O saturation | iowait > 50% for 10 min | P2 - Warning | Investigate queries, optimize |
Disaster Recovery
| Metric | Target | Justification |
|---|---|---|
| RTO (Recovery Time Objective) | 4 hours | Acceptable for B2B SaaS; customers can tolerate brief outage |
| RPO (Recovery Point Objective) | 1 hour | PITR from WAL archives ensures minimal data loss |
| MTTR (Mean Time To Repair) | 2 hours | Small team, well-documented runbook |
Disaster Recovery Procedure:
| Step | Action | Time Estimate | Responsible |
|---|---|---|---|
| 1 | Detect outage (Uptime Kuma + alerts) | 0-5 min (automated) | Monitoring |
| 2 | Assess damage scope (nbg1 status page, cluster health) | 5-15 min | Dev Lead |
| 3 | Decision: repair in-place vs. failover to fsn1 | 15-20 min | CEO + Dev Lead |
| 4a | If repairable: restart failed nodes/pods, restore from local backup | 30-60 min | Dev team |
| 4b | If full failover: provision new cluster in fsn1 from Terraform | 60-90 min | Dev team |
| 5b | Restore PostgreSQL from fsn1 backup (pg_restore + WAL replay) | 30-60 min | Dev team |
| 6b | Deploy application via GitLab CI/CD to new cluster | 15-30 min | CI/CD (automated) |
| 7b | Update Cloudflare DNS to point to fsn1 floating IP | 2-5 min | Dev Lead |
| 8 | Verify application health, run smoke tests | 15-30 min | Dev team |
| 9 | Notify customers of resolution | 5 min | CEO |
| 10 | Post-incident review within 48 hours | N/A | All |
Infrastructure as Code: All infrastructure is defined in Terraform (Hetzner provider) and Helm charts stored in GitLab. A full environment can be reproduced from scratch in under 2 hours.
Dogfooding: Business Automation Map
Membership One GmbH uses its own Membership One platform as Tenant Zero -- the first and most demanding customer. Every business process that can be automated through the platform is automated. This serves two purposes: (1) it reduces the CEO's operational burden, and (2) it ensures the platform genuinely works for real business operations before any customer sees it.
Automation Matrix
| Business Function | Platform Module | Automation Level | External Dependency | CEO Time/Week |
|---|---|---|---|---|
| CRM / Lead Management | membership-crm | Full | None | 2h (review pipeline) |
| Sales Pipeline | membership-crm | Full | None | 3h (demos, calls) |
| Customer Onboarding | membership-entity + membership-import | Full | None | 1h (review, approve) |
| Support / Tickets | membership-support | Full | None | 2h (respond to tickets) |
| Knowledge Base | membership-support | Full | None | 1h/month (write articles) |
| Invoicing | membership-payment | Full | My-Factura (external provider) | 0h (automated) |
| Payment Collection | membership-payment + Cash360 | Full | Cash360 SEPA processing | 0h (automated) |
| Dunning / Reminders | membership-payment | Full | Cash360 | 0h (automated) |
| Accounting / Bookkeeping | membership-accounting | Partial | DATEV (export to Steuerberater) | 1h (review, approve export) |
| Financial Reporting | Executive Dashboards | Full | None | 1h (review KPIs) |
| Email Communication | membership-communication | Full | SMTP provider (Mailgun) | 1h (draft campaigns) |
| Document Management | membership-document | Full | None | 0h (automated storage) |
| Analytics / KPIs | Executive Dashboards | Full | None | 1h (review weekly) |
| Website | Hugo/Astro | Manual | Cloudflare Pages (free) | 2h/month |
| Blog / Content | Hugo/Astro | Manual | Cloudflare Pages (free) | 4h/month |
| Infrastructure Monitoring | Prometheus/Grafana | Full | Self-hosted | 0.5h (review dashboards) |
| CI/CD Pipeline | GitLab CI/CD | Full | GitLab (free tier) | 0h (automated) |
| Contract Management | membership-contract | Full | None | 0h (self-service) |
| Total CEO time | ~12-15h/week |
The remaining CEO time (~25-30h/week) is allocated to strategic activities: product vision, market research, partnership development, investor relations (if applicable), and hiring.
Tenant Zero Configuration
Sales Pipeline Stages
| Stage | Description | Automated Actions | Average Duration |
|---|---|---|---|
| LEAD | Inbound inquiry (website form, LinkedIn, referral) or outbound research | Auto-create deal, assign to CEO, send acknowledgment email | 1-3 days |
| CONTACTED | Initial contact made (email, call, LinkedIn message) | Log activity, schedule follow-up reminder (3 days) | 3-5 days |
| DEMO_SCHEDULED | Demo meeting confirmed | Send calendar invite, demo preparation checklist, reminder 24h before | 3-7 days |
| DEMO_COMPLETED | Demo delivered, prospect has seen the product | Auto-send demo follow-up email with key features discussed, schedule follow-up | 1-2 days |
| TRIAL | Prospect given trial access (14 or 30 days) | Provision trial tenant, send welcome email, daily engagement tracking, drip emails at day 3/7/10 | 14-30 days |
| PROPOSAL_SENT | Formal pricing proposal delivered | Generate PDF proposal from template, track email opens, follow-up reminder (5 days) | 5-10 days |
| NEGOTIATION | Terms being discussed (pricing, contract length, customization) | Log all communication, version proposal documents | 5-14 days |
| WON | Deal closed, contract signed | Mark deal as won, trigger onboarding workflow, notify dev team (if customization needed) | 1 day |
| ONBOARDING | Customer being set up on the platform | Provision production tenant, import data, configure branding, training sessions | 7-21 days |
| ACTIVE | Customer live and operational | Switch to support pipeline, start billing cycle, schedule quarterly review | Ongoing |
Lost deal stages: LOST (with reason code: price, features, competitor, timing, no_budget) and DISQUALIFIED (not target market).
Conversion targets (Year 1): - Lead to Demo: 40% - Demo to Trial: 60% - Trial to Won: 30% - Overall Lead to Won: ~7%
Cost Structure
Monthly Cost Breakdown
| Category | Item | Monthly Cost (EUR) | Annual Cost (EUR) | Notes |
|---|---|---|---|---|
| Infrastructure | Hetzner Cloud (all resources) | 97.41 | 1,168.92 | See server specifications above |
| Infrastructure | Cloudflare (free plan) | 0.00 | 0.00 | CDN, WAF, DNS |
| Infrastructure | Domains (membership-one.com + membership.app) | 2.50 | 30.00 | Annual, amortized monthly |
| Communication | SMTP (Mailgun Flex) | 10.00 | 120.00 | First 5,000 emails free, then pay-as-you-go |
| Communication | Telegram Bot API | 0.00 | 0.00 | Free for alerts |
| Legal/Tax | Steuerberater (tax advisor) | 300.00 | 3,600.00 | Monthly retainer including DATEV |
| Legal/Tax | Betriebshaftpflicht (liability insurance) | 25.00 | 300.00 | Annual, amortized |
| Legal/Tax | Cyber-Versicherung (cyber insurance) | 41.67 | 500.00 | Annual, amortized |
| Legal/Tax | D&O-Versicherung (D&O insurance) | 33.33 | 400.00 | Annual, amortized |
| Legal/Tax | IHK Beitrag (chamber fee) | 12.50 | 150.00 | Annual, amortized |
| Marketing | LinkedIn Ads (targeted) | 150.00 | 1,800.00 | Scaled up as pipeline grows |
| Marketing | Content creation (freelance writers) | 50.00 | 600.00 | 1-2 blog posts/month initially |
| Tools | GitLab (free tier) | 0.00 | 0.00 | 5 users, 400 CI/CD minutes |
| Tools | Figma (free tier) | 0.00 | 0.00 | Design collaboration |
| Tools | Miro (free tier) | 0.00 | 0.00 | Whiteboarding |
| Tools | Slack or Mattermost | 0.00 | 0.00 | Team communication (free tier) |
| Office | Virtual office / Geschaeftsadresse | 30.00 | 360.00 | Required for Handelsregister |
| Misc | Contingency buffer | 50.00 | 600.00 | Unexpected costs |
| Total Fixed Costs | ~802.41 | ~9,628.92 |
Personnel costs (not included above):
| Role | Monthly Gross Salary | Employer Cost (~30% social) | Total Monthly |
|---|---|---|---|
| CEO / Geschaeftsfuehrer | EUR 4,000 (initial, minimal) | EUR 0 (GF exempt from some social) | EUR 4,000 |
| Developer 1 (Senior Backend) | EUR 5,500 | EUR 7,150 | EUR 7,150 |
| Developer 2 (Senior Frontend) | EUR 5,500 | EUR 7,150 | EUR 7,150 |
| Developer 3 (Full Stack) | EUR 4,500 | EUR 5,850 | EUR 5,850 |
| Developer 4 (QA / DevOps) | EUR 4,500 | EUR 5,850 | EUR 5,850 |
| Personnel Total | EUR 30,000 |
Total monthly burn rate: EUR 30,802 (personnel + fixed costs)
Annual burn rate: EUR 369,624
Revenue Model
Membership One follows a tiered SaaS pricing model that scales revenue with client upgrades:
| Tier | Monthly Price (EUR) | Annual Price (EUR) | Target Segment | Member Limit | Key Features |
|---|---|---|---|---|---|
| Starter | 0.99 | 9.99 | Micro-clubs, evaluation (<20 members) | 20 | Core member management, basic billing |
| Team | 29 | 299 | Small clubs and studios | 200 | + Contracts, SEPA, email templates, mobile app |
| Professional | 99 | 999 | Mid-size organizations | 2,000 | + Check-in, resources, events, CRM, analytics |
| Enterprise | Custom (from 249) | Custom | Chains, franchises | Unlimited | + White-label, SSO, API, dedicated support |
No zero-euro strategy. Every user must have a billable account to ensure reachability and commitment. Even the Starter tier at EUR 0.99/month validates payment credentials, ensures the user has a real identity, and creates a commercial relationship from day one. The traditional freemium model (EUR 0) is replaced by a Trial Studio (14-day free evaluation, full features, see Chapter 02) that drives conversion to the Starter plan.
Professional tier: EUR 99/month (EUR 999/year) for mid-size organizations with up to 2,000 members. Includes check-in, resources, events, CRM, and analytics.
Break-Even Analysis
Note: Break-even calculation includes the full cost of the 4-person development team (estimated at EUR 4 x EUR 6,000 = EUR 24,000/month gross including employer costs). This is the dominant cost component and is explicitly included in the "Monthly Costs" column below. The CEO salary (EUR 4,000/month) and fixed costs (~EUR 802/month) are also included.
| Scenario | Customer Mix | MRR (EUR) | Monthly Costs | Status |
|---|---|---|---|---|
| Minimum viable | 10 Starter + 5 Team + 5 Professional | 650 | 30,802 | Loss: -30,152 |
| Early traction | 30 Starter + 15 Team + 15 Professional + 2 Enterprise | 2,448 | 30,802 | Loss: -28,354 |
| Growth | 50 Starter + 30 Team + 40 Professional + 5 Enterprise | 6,125 | 30,802 | Loss: -24,677 |
| Scaling | 80 Starter + 60 Team + 80 Professional + 15 Enterprise | 13,475 | 33,000* | Loss: -19,525 |
| Break-even | 100 Starter + 100 Team + 200 Professional + 30 Enterprise | ~30,270 | 36,000* | Near break-even with 6 hires |
| Profitable | 120 Starter + 150 Team + 300 Professional + 50 Enterprise | ~46,620 | 40,000* | Profit: ~+6,620 |
*Costs increase with hiring per Personnel Scaling Timeline.
Realistic break-even timeline: 18-24 months after launch, assuming steady growth of 10-20 new customers per month from month 6 onward. The EUR 0.99 Starter tier drives high acquisition volume; revenue relies on conversion to Team/Professional.
Key insight: The Starter tier (EUR 0.99) is a pure acquisition funnel -- it validates payment credentials and creates a commercial relationship at near-zero cost. Upselling from Starter to Team (EUR 29) or Professional (EUR 99) is the primary revenue lever. Sales should prioritize mid-size organizations that need Professional-tier features (check-in, resources, CRM).
Personnel Scaling Timeline
Hiring Roadmap
Role Definitions
Phase A: Foundation (Months 1-6) -- 5 persons
| Role | Responsibilities | Monthly Employer Cost (EUR) |
|---|---|---|
| CEO / Geschaeftsfuehrer | Product vision, sales, marketing, support, finance, legal, partnerships. Uses platform CRM for pipeline, support module for tickets, dashboards for KPIs. | 4,000 |
| Senior Backend Developer | Core modules (member, contract, payment, entity), Cash360 integration, database design, API implementation. Tech lead. | 7,150 |
| Senior Frontend Developer | Flutter app (web + mobile), design system, responsive layouts, state management, accessibility. | 7,150 |
| Full Stack Developer | Feature modules (communication, import, document, events), Flyway migrations, integration tests. | 5,850 |
| QA / DevOps Engineer | Test automation, CI/CD pipeline (GitLab), Kubernetes setup, monitoring, infrastructure as code (Terraform). | 5,850 |
| Phase A Total | 30,000 |
Phase B: Customer Operations (Months 7-12) -- 6 persons
| Role | Responsibilities | Hiring Trigger | Monthly Employer Cost (EUR) |
|---|---|---|---|
| Customer Success Manager | Onboarding new customers, training sessions, quarterly business reviews, churn prevention, upselling. Takes over support from CEO. | First 10 paying customers or CEO support load > 15h/week | 5,200 |
| Phase B Total | 35,200 |
Phase C: Market Expansion (Months 13-24) -- 8 persons
| Role | Responsibilities | Hiring Trigger | Monthly Employer Cost (EUR) |
|---|---|---|---|
| Sales Representative | Outbound prospecting, demo delivery, proposal creation, deal negotiation. Takes over sales pipeline from CEO. | Pipeline exceeds CEO capacity (> 20 active leads) or revenue target requires dedicated sales | 5,850 |
| Marketing Manager | Content strategy (blog, case studies, whitepapers), SEO, social media, email campaigns, event presence, partner marketing. | Need for consistent lead generation beyond CEO's network | 5,200 |
| Phase C Total | 46,250 |
Phase D: Scaling (Months 25-36) -- 11 persons
| Role | Responsibilities | Hiring Trigger | Monthly Employer Cost (EUR) |
|---|---|---|---|
| Support Engineer | L1/L2 support, ticket resolution, knowledge base maintenance, bug reproduction and reporting. | Ticket volume > 50/week or SLA compliance < 95% | 4,550 |
| DevOps Engineer | Infrastructure scaling, multi-region deployment, performance optimization, security hardening, on-call rotation. | Infrastructure complexity requires dedicated expertise | 6,500 |
| Backend Developer | Additional feature development, API extensions, performance optimization, technical debt reduction. | Feature backlog grows beyond team capacity | 5,850 |
| Phase D Total | 63,150 |
Team Structure Evolution
| Phase | Headcount | Monthly Personnel Cost (EUR) | Monthly Fixed Costs (EUR) | Total Burn Rate (EUR) |
|---|---|---|---|---|
| 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 |
Fixed costs increase modestly with additional tooling licenses, higher SMTP volume, and expanded marketing spend.
Go-to-Market Playbook
Target Customer Profiles
Three ideal customer profiles (ICPs) define the initial go-to-market focus. All are located in Germany and Austria (DACH region).
ICP 1: Small Fitness Studio
| Attribute | Detail |
|---|---|
| Organization size | 50-300 active members |
| Staff | 1 owner/manager + 2-5 trainers |
| Current solution | Spreadsheets, paper, or basic free tools (easyVerein free tier) |
| Pain points | Manual billing, no online booking, paper contracts, no member communication |
| Decision maker | Studio owner (single person) |
| Sales cycle | 1-2 weeks (impulse decision) |
| Target tier | Team (EUR 29/month) or Professional (EUR 99/month) |
| Win message | "Replace 5 tools with one -- billing, booking, check-in, communication, all in one app" |
| Where to find them | Instagram, Google Maps, local business directories, fitness trade shows |
ICP 2: Local Sports Club (Verein)
| Attribute | Detail |
|---|---|
| Organization size | 100-500 members |
| Staff | Volunteer board (Vorstand) + 1-3 part-time administrators |
| Current solution | ClubDesk, SEWOBE, or custom Access/Excel databases |
| Pain points | Annual Beitragseinzug chaos, no online member self-service, manual Vereinsmeldungen |
| Decision maker | Vorstand (board vote, 2-4 people) |
| Sales cycle | 2-6 weeks (requires board approval) |
| Target tier | Team (EUR 29/month) |
| Win message | "Finally, a system that just works -- members can update their own data, billing runs automatically, and your Vorstand gets clear reports" |
| Where to find them | Landessportbund directories, Vereinsregister, local press, community events |
ICP 3: Dance / Martial Arts School
| Attribute | Detail |
|---|---|
| Organization size | 30-200 active members |
| Staff | 1 owner/instructor + 1-3 additional instructors |
| Current solution | WhatsApp groups, manual attendance lists, bank transfers |
| Pain points | No contract management, no automated billing, schedule published via Instagram stories |
| Decision maker | School owner (single person) |
| Sales cycle | 1-2 weeks |
| Target tier | Team (EUR 29/month) |
| Win message | "Your students book and pay through the app -- you focus on teaching" |
| Where to find them | Instagram, Google Maps, martial arts federations, dance school directories |
Customer Journey Map
Pricing Strategy
The pricing structure is designed to minimize friction at entry while scaling revenue with customer success:
| Tier | Monthly Price | Annual Price | Target | Member Limit | Modules Included |
|---|---|---|---|---|---|
| Starter | EUR 0.99 | EUR 9.99 | Evaluation, micro-clubs (<20 members) | 20 | Member management (basic) |
| Team | EUR 29 | EUR 299 (2 months free) | Small clubs, studios | 200 | Members, contracts, billing (SEPA), email, mobile app |
| Professional | EUR 99 | EUR 999 | Mid-size organizations | 2,000 | + Check-in, resources, events, CRM, analytics, API |
| Enterprise | From EUR 249 | Custom | Chains, franchises | Unlimited | + White-label, SSO, SLA, dedicated support, custom dev |
All prices net (plus applicable VAT).
Pricing principles: 1. No zero-euro strategy -- Every user must have a billable account. The Starter tier at EUR 0.99/month validates payment credentials, ensures a real identity, and creates a commercial relationship from day one. A 14-day Trial Studio (full features, no payment required) replaces the traditional freemium model. 2. No annual lock-in for Team -- Monthly cancellation keeps the barrier low. Annual discount (2 months free) incentivizes commitment. 3. Per-member scaling is transparent -- Customers see exactly what they pay and can predict costs as they grow. 4. Enterprise is negotiated -- Large organizations have unique needs (SSO, white-label, data migration, SLA) that justify custom pricing.
Outreach Templates
Cold Email (to studio owners found via Google Maps):
Subject: [Studio Name] -- a question about your member management
Hi [Name],
I noticed [Studio Name] on Google Maps -- impressive reviews! Quick question: how do you currently handle member billing and class bookings?
We built Membership One specifically for studios like yours. It replaces the spreadsheet/WhatsApp/manual-billing juggle with one app: members book and pay themselves, SEPA runs automatically, and you see everything on a dashboard.
Would a 15-minute demo be worth your time this week?
Best, [CEO Name] Membership One GmbH
LinkedIn Connection Message (to Vereinsvorstand):
Hi [Name], I see you manage [Club Name]. We are building a modern management tool specifically for German sports clubs -- automated Beitragseinzug, member self-service, and clear Vorstand reports. I would love to show you a quick demo. Interested?
Demo Follow-Up Email:
Subject: Your [Studio/Club Name] demo -- next steps
Hi [Name],
Thanks for taking the time today! As discussed, here is what Membership One can do for [Organization Name]:
- [Pain Point 1] solved by [Feature 1]
- [Pain Point 2] solved by [Feature 2]
- [Pain Point 3] solved by [Feature 3]
I have set up a 14-day trial for you: [trial link]
Your data from [current tool] can be imported via CSV -- I am happy to help with that.
Shall we schedule a 30-minute onboarding call for [day]?
Proposal Structure: 1. Executive summary (organization name, pain points identified, proposed solution) 2. Feature mapping (current pain vs. Membership One feature) 3. Pricing (tier, member count, monthly/annual) 4. Implementation timeline (data import, configuration, training, go-live) 5. Terms (contract period, cancellation, SLA if Enterprise) 6. Customer references (similar organizations)
Channel Strategy
| Channel | Phase | Monthly Investment (EUR) | Expected Leads/Month | Cost per Lead (EUR) |
|---|---|---|---|---|
| SEO / Blog | A (M1-6) | 50 (content) | 5-10 | 5-10 |
| LinkedIn Organic | A (M1-6) | 0 (CEO time) | 3-5 | 0 |
| LinkedIn Ads | B (M7-12) | 150-300 | 10-20 | 15-30 |
| Google Ads (branded + keywords) | B (M7-12) | 100-200 | 5-10 | 20-40 |
| Referral Program | B (M7-12) | 0 (platform feature) | 2-5 | 0 (1 month free for referrer) |
| Partner (Steuerberater, Sportbund) | C (M13-24) | 50 (events, materials) | 5-10 | 5-10 |
| Trade Shows (FIBO, IHRSA Europe) | C (M13-24) | 200 (booth, travel, amortized) | 20-30 | 7-10 |
| Affiliate / Reseller | D (M25-36) | Revenue share (20%) | 10-20 | Revenue share |
| PR / Media | C (M13-24) | 0-100 | 3-5 | 0-30 |
Year 1 channel mix priority: 1. Direct outreach (CEO cold emails + LinkedIn) -- highest conversion, zero cost 2. SEO / Content -- builds long-term organic pipeline 3. Referrals -- highest quality leads, built into platform 4. LinkedIn Ads -- targeted DACH sports/fitness professionals
Risk Assessment
Business Risks
| # | Risk | Probability | Impact | Mitigation |
|---|---|---|---|---|
| R1 | Product-market fit failure -- Target customers do not want/need the features built | Medium | Critical | Validate with 5-10 early adopters before scaling; weekly customer feedback loops; pivot features based on usage data, not assumptions |
| R2 | Slow customer acquisition -- Sales cycle longer than expected, conversion rates low | High | High | Start direct outreach 3 months before launch; build a waitlist; offer low-barrier Starter tier (EUR 0.99/month) and Trial Studio to build user base; track funnel metrics weekly |
| R3 | Cash flow pressure -- High fixed costs (EUR 30K/month) vs. slow revenue ramp | High | Critical | Maintain 12-month runway before launch; minimize fixed costs (Hetzner not AWS); CEO salary deferred or minimal until break-even; consider Gruendungszuschuss (startup grant from Agentur fuer Arbeit) |
| R4 | Key person risk (CEO) -- Single person handles all business operations | High | High | Document all processes in the platform itself (dogfooding); cross-train one developer on business operations; automate everything possible |
| R5 | Key person risk (Tech Lead) -- Loss of senior backend developer stalls product | Medium | Critical | Comprehensive documentation, code reviews, knowledge sharing sessions; all infrastructure as code; no single-person silos |
| R6 | Competitor response -- Established players (Magicline, easyVerein) copy differentiating features | Medium | Medium | Speed of iteration (small team, fast decisions); focus on integration depth (Cash360 + check-in + CRM) that is hard to replicate; build community loyalty |
| R7 | Technical downtime or data loss -- Infrastructure failure causes customer impact | Low | Critical | Automated backups with cross-location replication; disaster recovery plan with 4h RTO; monitoring with immediate alerting; infrastructure as code for fast recovery |
| R8 | Regulatory changes -- GDPR enforcement action, new EU regulations, German tax law changes | Low | Medium | GDPR-first architecture (data minimization, consent management, right to deletion built in); Steuerberater monitors tax changes; legal review of ToS annually |
| R9 | Cash360 dependency -- Cash360 API becomes unavailable, changes, or is discontinued | Low | Critical | Abstract payment integration behind interface; Cash360 is external provider (contractual SLA required); implement fallback to direct SEPA XML generation |
| R10 | Pricing too low -- Revenue per customer insufficient to cover support costs | Medium | High | Track support cost per customer; adjust pricing tiers based on actual cost-to-serve; enterprise tier covers high-touch customers |
| R11 | Scope creep -- Feature requests from early customers derail roadmap | High | Medium | Strict version roadmap (v1.0, 2.0, 3.0, 4.0); public roadmap with voting; CEO decides prioritization weekly; "not yet" is a valid answer |
| R12 | Developer burnout -- Small team, high pressure, long hours | Medium | High | Sustainable pace (no crunch culture); clear sprint goals with buffer; 4-day work week option after break-even; competitive compensation |
| R13 | Market timing -- Sports industry downturn, post-pandemic membership decline | Low | Medium | Diversify target segments (clubs, studios, schools, municipal); billing automation saves money in downturns (value proposition strengthens) |
| R14 | Legal liability -- Customer sues over billing error, data breach, or contract dispute | Low | High | Betriebshaftpflicht + Cyber + D&O insurance; clear ToS with limitation of liability; SOC2-aligned security practices; incident response plan |
Risk Heat Map
| Low Impact | Medium Impact | High Impact | Critical Impact | |
|---|---|---|---|---|
| High Probability | R11 | R2, R4, R12 | R3 | |
| Medium Probability | R6, R13 | R10 | R1, R5 | |
| Low Probability | R8 | R14 | R7, R9 |
Top 5 Risks and Action Plans
1. Cash flow pressure (R3) -- Critical/High - Action: Secure 12-month runway (EUR 370K) before first hire - Action: Apply for Gruendungszuschuss (up to EUR 18,000 over 15 months) - Action: Consider EXIST-Gruenderstipendium if eligible - Action: Defer CEO salary until MRR exceeds EUR 5,000 - Metric: Monthly cash runway in months (target: never below 6)
2. Product-market fit failure (R1) -- Critical/Medium - Action: Conduct 20 problem interviews before writing code - Action: Launch with 5-10 design partners (free, in exchange for weekly feedback) - Action: Track activation metrics (% of trial users who complete onboarding) - Action: Weekly NPS survey from active users - Metric: Trial-to-paid conversion rate (target: > 20%)
3. Slow customer acquisition (R2) -- High/High - Action: Build email list and waitlist 3 months before launch - Action: Publish SEO content targeting "Vereinsverwaltung Software" keywords from month 1 - Action: Attend 2 trade shows in year 1 (FIBO, local Sportbund events) - Action: Implement referral program with 1-month-free incentive - Metric: Monthly new paying customers (target: 5+ from month 6)
4. Key person risk (R4) -- High/High - Action: All business processes documented as standard operating procedures (SOPs) - Action: All SOPs executable through the platform (CRM, support, billing) - Action: Hire Customer Success Manager as first non-dev hire (month 7) - Action: CEO vacation coverage plan (CSM + Dev Lead can handle 1-2 weeks) - Metric: CEO bus factor coverage (target: all critical processes have documented backup)
5. Cash360 dependency (R9) -- Critical/Low
- Action: Payment integration abstracted behind PaymentGateway interface
- Action: Implement SEPA XML direct generation as fallback
- Action: Monthly integration health check (API response time, error rate)
- Action: Contractual SLA with CashControl / My-Factura (external provider)
- Metric: Cash360 API uptime and error rate (target: 99.9% availability)
Operational Playbooks
Weekly CEO Cadence
| Day | Morning (9:00-12:00) | Afternoon (13:00-17:00) |
|---|---|---|
| Monday | Review dashboards (KPIs, pipeline, support tickets). Plan week. | Team standup (30 min). Sales calls/demos. |
| Tuesday | Content creation (blog post, LinkedIn, email campaign). | Customer calls (demos, onboarding, reviews). |
| Wednesday | Sales outreach (cold emails, LinkedIn prospecting). | Product review with dev team (1h). Respond to support tickets. |
| Thursday | Financial review (invoices, cash flow, DATEV prep). | Partnership outreach. Strategic planning. |
| Friday | Support ticket review and knowledge base updates. | Week retrospective. Prepare investor/board update (if applicable). |
Monthly Operational Checklist
| Task | Owner | Platform Module | Deadline |
|---|---|---|---|
| Review and approve DATEV export | CEO | membership-accounting | 5th of month |
| Send monthly product update email to customers | CEO | membership-communication | 1st week |
| Review churn (cancelled customers) and reach out | CEO/CSM | membership-crm | 1st week |
| Review infrastructure costs and usage | DevOps/Dev Lead | Grafana dashboards | 2nd week |
| Update public roadmap based on feedback | CEO | Website (manual) | 2nd week |
| Backup restore test (automated) | CI/CD | Velero (automated) | 15th of month |
| Security dependency scan | CI/CD | GitLab SAST/DAST | Continuous |
| Review and respond to all open support tickets | CEO/CSM | membership-support | Weekly |
| Invoice generation and SEPA collection trigger | Automated | membership-payment | 1st of month |
| Dunning for failed payments | Automated | membership-payment | 7th, 14th, 21st |
Quarterly Business Review Template
- Financial Summary -- Revenue (MRR, ARR), costs, cash runway, burn rate trend
- Customer Metrics -- Total customers, new customers, churned, NPS, CSAT
- Pipeline Health -- Leads, conversion rates per stage, average deal size, sales cycle length
- Product Metrics -- Feature adoption, API usage, uptime, response time
- Team Health -- Headcount, open positions, team satisfaction, velocity trend
- Competitive Intelligence -- New competitor moves, pricing changes, feature launches
- Next Quarter Goals -- OKRs (3-5 objectives with measurable key results)
Technology Operations
GitLab CI/CD Pipeline
The entire software delivery lifecycle is automated through GitLab CI/CD:
Feature Branch → Merge Request → Pipeline:
├── Build (Maven, Docker image)
├── Test (Unit, Integration, Testcontainers)
├── SAST (Static Application Security Testing)
├── DAST (Dynamic Application Security Testing)
├── Container Scan (Trivy)
├── Code Quality (SonarQube free)
└── Deploy:
├── staging (auto on merge to develop)
└── production (manual trigger on merge to main)
Deployment Cadence
| Type | Frequency | Process | Approval |
|---|---|---|---|
| Feature release | Bi-weekly (Sprint end) | Merge to main, manual deploy trigger | Dev Lead review + CEO approval |
| Hotfix | As needed | Direct merge to main | Dev Lead review (CEO notified) |
| Infrastructure change | As needed | Terraform MR, plan review | Dev Lead review |
| Database migration | With feature release | Flyway, backward compatible | Dev Lead review + staging test |
On-Call Rotation
Phase A (5 persons): Dev Lead is primary on-call. CEO is escalation contact. No formal rotation (small team).
Phase B+ (6+ persons): Weekly rotation among Dev Lead, Full Stack Dev, and QA/DevOps. On-call engineer has a Hetzner admin account and kubectl access. Escalation: on-call → Dev Lead → CEO.
On-call expectations: - Respond to P1 alerts within 15 minutes (Telegram) - Respond to P2 alerts within 1 hour (email) - P3/P4 handled during business hours only - Compensatory time off for after-hours incidents
Success Metrics and Milestones
Key Performance Indicators
| Category | Metric | Month 6 Target | Month 12 Target | Month 24 Target |
|---|---|---|---|---|
| Revenue | MRR (EUR) | 500 | 2,500 | 10,000 |
| Revenue | ARR (EUR) | 6,000 | 30,000 | 120,000 |
| Customers | Total paying | 10 | 40 | 120 |
| Customers | Starter tier users | 30 | 100 | 300 |
| Customers | Monthly churn rate | < 5% | < 3% | < 2% |
| Sales | Lead-to-demo rate | 30% | 40% | 45% |
| Sales | Trial-to-paid rate | 15% | 25% | 30% |
| Product | NPS | 30+ | 40+ | 50+ |
| Product | Uptime | 99.5% | 99.9% | 99.95% |
| Support | Average response time | 24h | 8h | 4h |
| Support | CSAT | 80% | 85% | 90% |
| Team | Headcount | 5 | 6 | 8 |
| Financial | Cash runway (months) | 10 | 8 | 6+ |
Milestone Timeline
| Milestone | Target Date | Success Criteria |
|---|---|---|
| GmbH registered | M0 + 6 weeks | HRB number received, bank account active |
| Infrastructure live | M0 + 2 weeks | Hetzner cluster running, monitoring active |
| v1.0 feature-complete | M0 + 5 months | Core modules passing all acceptance tests |
| Beta launch (5 design partners) | M0 + 6 months | 5 organizations actively using the platform |
| Public launch | M0 + 7 months | Website live, self-service signup enabled |
| First paying customer | M0 + 7-8 months | First Starter or Professional subscription |
| 10 paying customers | M0 + 10 months | Validated product-market fit signal |
| First Customer Success hire | M0 + 12 months | CEO support load reduced by 50% |
| 50 paying customers | M0 + 18 months | Sustainable growth trajectory confirmed |
| Break-even (monthly) | M0 + 24 months | Monthly revenue >= monthly costs |
| 150 paying customers | M0 + 30 months | Market position established |
| Series A readiness (optional) | M0 + 36 months | EUR 300K+ ARR, < 3% churn, clear unit economics |
Appendix
Useful Links and Resources
| Resource | URL | Purpose |
|---|---|---|
| Hetzner Cloud Console | https://console.hetzner.cloud | Infrastructure management |
| Hetzner Cloud API Docs | https://docs.hetzner.cloud | Terraform provider reference |
| Cloudflare Dashboard | https://dash.cloudflare.com | CDN, DNS, WAF configuration |
| GitLab | https://gitlab.com/membership-one | Source code, CI/CD, issues |
| ELSTER (tax portal) | https://www.elster.de | USt-Voranmeldung, tax filings |
| Bundesanzeiger | https://www.bundesanzeiger.de | Financial statement publication |
| IHK (regional) | https://www.ihk.de | Chamber of commerce |
| DATEV Unternehmen Online | https://www.datev.de | Digital bookkeeping with Steuerberater |
| Mailgun | https://www.mailgun.com | Transactional email (SMTP) |
| Uptime Kuma | https://github.com/louislam/uptime-kuma | Self-hosted monitoring |
GmbH Formation Document Checklist
- Gesellschaftsvertrag (Musterprotokoll) -- signed at Notar
- Handelsregister Eintragung (HRB certificate)
- Gewerbeanmeldung (trade registration certificate)
- Steuernummer (tax number from Finanzamt)
- USt-IdNr. (VAT ID from BZSt)
- Geschaeftskonto (business bank account confirmation)
- Betriebshaftpflicht Police (liability insurance policy)
- Cyber-Versicherung Police (cyber insurance policy)
- D&O-Versicherung Police (D&O insurance policy)
- DATEV Mandantenvertrag (tax advisor engagement letter)
- Datenschutzerklaerung (privacy policy -- published on website)
- Verarbeitungsverzeichnis (GDPR processing register)
- Impressum (legal notice -- published on website)
- AGB / Nutzungsbedingungen (terms of service -- published on website)
- Auftragsverarbeitungsvertrag (DPA template for customers)
Hetzner Terraform Quick Reference
# Example: Provision the full infrastructure
# See infra/terraform/ in the repository for complete configuration
resource "hcloud_network" "membership" {
name = "membership-network"
ip_range = "10.0.0.0/16"
}
resource "hcloud_network_subnet" "k8s" {
network_id = hcloud_network.membership.id
type = "cloud"
network_zone = "eu-central"
ip_range = "10.0.1.0/24"
}
resource "hcloud_server" "app_node" {
count = 3
name = "app-node-${count.index + 1}"
server_type = "cx32"
image = "ubuntu-24.04"
location = "nbg1"
network {
network_id = hcloud_network.membership.id
ip = "10.0.1.${count.index + 10}"
}
firewall_ids = [hcloud_firewall.default.id]
labels = {
role = "app"
env = "production"
}
}
resource "hcloud_server" "infra_node" {
count = 2
name = "infra-node-${count.index + 1}"
server_type = "cx22"
image = "ubuntu-24.04"
location = "nbg1"
network {
network_id = hcloud_network.membership.id
ip = "10.0.1.${count.index + 20}"
}
firewall_ids = [hcloud_firewall.default.id]
labels = {
role = "infra"
env = "production"
}
}
resource "hcloud_load_balancer" "web" {
name = "membership-lb"
load_balancer_type = "lb11"
location = "nbg1"
}
resource "hcloud_firewall" "default" {
name = "membership-firewall"
rule {
direction = "in"
protocol = "tcp"
port = "443"
source_ips = ["0.0.0.0/0", "::/0"]
}
rule {
direction = "in"
protocol = "tcp"
port = "80"
source_ips = ["0.0.0.0/0", "::/0"]
}
rule {
direction = "in"
protocol = "tcp"
port = "22"
source_ips = ["ADMIN_IP/32"]
}
}