{
  "slug": "notion-to-appflowy",
  "title": "Notion Business to self-hosted AppFlowy",
  "summary": "AppFlowy is the closest open-source shape to Notion. Whether it pays off depends almost entirely on your seat count.",
  "publishable": true,
  "block_reason": null,
  "freshness": {
    "state": "fresh",
    "publishable": true,
    "oldest_input_days": 46.5,
    "problems": []
  },
  "incumbent": {
    "vendor": "Notion",
    "vendor_id": "notion",
    "plan": "Business",
    "plan_id": "business",
    "amount": 20,
    "period": "month",
    "per_seat": true,
    "billed": "annual",
    "seats": 5,
    "quote": "Business Recommended $20 per member / month",
    "caveat": null,
    "source_url": "https://www.notion.com/pricing",
    "verified_at": "2026-10-19",
    "needs_reverification": false
  },
  "alternative": {
    "name": "AppFlowy (self-hosted)",
    "repo": "AppFlowy-IO/AppFlowy",
    "project": {
      "full_name": "AppFlowy-IO/AppFlowy",
      "url": "https://github.com/AppFlowy-IO/AppFlowy",
      "homepage": "https://appflowy.com",
      "description": "Bring projects, wikis, and teams together with AI. AppFlowy is the AI collaborative workspace where you achieve more without losing control of your data. The leading open source Notion alternative.",
      "stars": 77553,
      "forks": 6083,
      "open_issues": 1043,
      "license": "AGPL-3.0",
      "archived": false,
      "pushed_at": "2026-10-08T11:00:14Z",
      "days_since_push": 11,
      "latest_release": {
        "tag": "0.14.8",
        "published_at": "2026-10-08T11:00:14Z",
        "url": "https://github.com/AppFlowy-IO/AppFlowy/releases/tag/0.14.8"
      },
      "days_since_release": 11,
      "health": "active",
      "recommended": true,
      "verified_at": "2026-10-19T10:53:53.058Z"
    },
    "box": {
      "provider": "Vultr",
      "name": "vc2-2c-4gb",
      "id": "vultr:vc2-2c-4gb",
      "vcpu": 2,
      "ram_gb": 4,
      "disk_gb": 80,
      "bandwidth_tb": 3,
      "monthly_usd": 20,
      "url": "https://www.vultr.com/pricing/",
      "verified_at": "2026-10-19T10:53:42.716Z"
    },
    "storage": {
      "id": "backblaze-b2",
      "name": "Backblaze B2",
      "usd_per_gb_month": 0.00695,
      "egress": "free up to 3x stored volume per month, then $0.01/GB",
      "pricing_url": "https://www.backblaze.com/cloud-storage/pricing",
      "quote": "the amount of data stored per byte-hour over the last month at a rate of $6.95/TB/30-day",
      "verified_at": "2026-09-03",
      "verified_by": "human",
      "affiliate": true,
      "gb": 50,
      "monthly_usd": 0.35
    },
    "requirements": {
      "ram_gb": 4,
      "vcpu": 2,
      "disk_gb": 40
    },
    "box_alternatives": [
      {
        "provider": "Vultr",
        "name": "vc2-2c-4gb",
        "monthly_usd": 20,
        "vcpu": 2,
        "ram_gb": 4,
        "disk_gb": 80,
        "url": "https://www.vultr.com/pricing/",
        "chosen": true
      },
      {
        "provider": "Linode",
        "name": "Linode 4GB",
        "monthly_usd": 24,
        "vcpu": 2,
        "ram_gb": 4,
        "disk_gb": 80,
        "url": "https://www.linode.com/pricing/",
        "chosen": false
      },
      {
        "provider": "DigitalOcean",
        "name": "2 vCPU · 4 GB",
        "monthly_usd": 24,
        "vcpu": 2,
        "ram_gb": 4,
        "disk_gb": 80,
        "url": "https://www.digitalocean.com/pricing/droplets",
        "chosen": false
      }
    ],
    "migration_hours": 10,
    "maintenance_hours_per_month": 0.75
  },
  "result": {
    "computable": true,
    "inputs": {
      "seats": 5,
      "horizon_months": 36,
      "hourly_rate": 50
    },
    "incumbent": {
      "cash_monthly": 100,
      "time_monthly": 0,
      "monthly": 100,
      "one_time": 0,
      "annual": 1200
    },
    "alternative": {
      "cash_monthly": 20.35,
      "time_monthly": 37.5,
      "monthly": 57.85,
      "one_time": 500,
      "cash_one_time": 0,
      "time_one_time": 500,
      "annual": 694.17
    },
    "delta": {
      "monthly": 42.15,
      "upfront_to_switch": 500,
      "annual": 505.83
    },
    "break_even_month": 12,
    "break_even_hourly_rate": 77.5,
    "totals": {
      "at_12_months": {
        "incumbent": 1200,
        "alternative": 1194.17
      },
      "at_36_months": {
        "incumbent": 3600,
        "alternative": 2582.51
      },
      "at_horizon": {
        "incumbent": 3600,
        "alternative": 2582.51
      }
    },
    "savings": {
      "year_1": 5.83,
      "year_3": 1017.49,
      "at_horizon": 1017.49
    },
    "verdict": "switch"
  },
  "managed": null,
  "curve": [
    {
      "month": 0,
      "incumbent": 0,
      "alternative": 500
    },
    {
      "month": 1,
      "incumbent": 100,
      "alternative": 557.85
    },
    {
      "month": 2,
      "incumbent": 200,
      "alternative": 615.7
    },
    {
      "month": 3,
      "incumbent": 300,
      "alternative": 673.55
    },
    {
      "month": 4,
      "incumbent": 400,
      "alternative": 731.4
    },
    {
      "month": 5,
      "incumbent": 500,
      "alternative": 789.25
    },
    {
      "month": 6,
      "incumbent": 600,
      "alternative": 847.1
    },
    {
      "month": 7,
      "incumbent": 700,
      "alternative": 904.95
    },
    {
      "month": 8,
      "incumbent": 800,
      "alternative": 962.8
    },
    {
      "month": 9,
      "incumbent": 900,
      "alternative": 1020.65
    },
    {
      "month": 10,
      "incumbent": 1000,
      "alternative": 1078.5
    },
    {
      "month": 11,
      "incumbent": 1100,
      "alternative": 1136.35
    },
    {
      "month": 12,
      "incumbent": 1200,
      "alternative": 1194.2
    },
    {
      "month": 13,
      "incumbent": 1300,
      "alternative": 1252.05
    },
    {
      "month": 14,
      "incumbent": 1400,
      "alternative": 1309.9
    },
    {
      "month": 15,
      "incumbent": 1500,
      "alternative": 1367.75
    },
    {
      "month": 16,
      "incumbent": 1600,
      "alternative": 1425.6
    },
    {
      "month": 17,
      "incumbent": 1700,
      "alternative": 1483.45
    },
    {
      "month": 18,
      "incumbent": 1800,
      "alternative": 1541.3
    },
    {
      "month": 19,
      "incumbent": 1900,
      "alternative": 1599.15
    },
    {
      "month": 20,
      "incumbent": 2000,
      "alternative": 1657
    },
    {
      "month": 21,
      "incumbent": 2100,
      "alternative": 1714.85
    },
    {
      "month": 22,
      "incumbent": 2200,
      "alternative": 1772.7
    },
    {
      "month": 23,
      "incumbent": 2300,
      "alternative": 1830.55
    },
    {
      "month": 24,
      "incumbent": 2400,
      "alternative": 1888.4
    },
    {
      "month": 25,
      "incumbent": 2500,
      "alternative": 1946.25
    },
    {
      "month": 26,
      "incumbent": 2600,
      "alternative": 2004.1
    },
    {
      "month": 27,
      "incumbent": 2700,
      "alternative": 2061.95
    },
    {
      "month": 28,
      "incumbent": 2800,
      "alternative": 2119.8
    },
    {
      "month": 29,
      "incumbent": 2900,
      "alternative": 2177.65
    },
    {
      "month": 30,
      "incumbent": 3000,
      "alternative": 2235.5
    },
    {
      "month": 31,
      "incumbent": 3100,
      "alternative": 2293.35
    },
    {
      "month": 32,
      "incumbent": 3200,
      "alternative": 2351.2
    },
    {
      "month": 33,
      "incumbent": 3300,
      "alternative": 2409.05
    },
    {
      "month": 34,
      "incumbent": 3400,
      "alternative": 2466.9
    },
    {
      "month": 35,
      "incumbent": 3500,
      "alternative": 2524.75
    },
    {
      "month": 36,
      "incumbent": 3600,
      "alternative": 2582.6
    }
  ],
  "sensitivity": [
    {
      "hourly_rate": 0,
      "verdict": "switch",
      "break_even_month": 0,
      "savings_at_horizon": 2867.49
    },
    {
      "hourly_rate": 25,
      "verdict": "switch",
      "break_even_month": 5,
      "savings_at_horizon": 1942.49
    },
    {
      "hourly_rate": 50,
      "verdict": "switch",
      "break_even_month": 12,
      "savings_at_horizon": 1017.49
    },
    {
      "hourly_rate": 75,
      "verdict": "marginal",
      "break_even_month": 33,
      "savings_at_horizon": 92.49
    },
    {
      "hourly_rate": 100,
      "verdict": "stay",
      "break_even_month": 215,
      "savings_at_horizon": -832.51
    },
    {
      "hourly_rate": 150,
      "verdict": "stay",
      "break_even_month": null,
      "savings_at_horizon": -2682.51
    },
    {
      "hourly_rate": 200,
      "verdict": "stay",
      "break_even_month": null,
      "savings_at_horizon": -4532.51
    }
  ],
  "tradeoffs": {
    "you_lose": [
      "Notion's AI features, which are a large part of what the Business tier is sold on",
      "Public page publishing and the template gallery",
      "Mature mobile apps — AppFlowy's are usable but noticeably behind",
      "Someone else's uptime guarantee"
    ],
    "you_gain": [
      "Your documents in a Postgres database you can query and back up yourself",
      "No per-seat cost, so adding people is free",
      "Local-first editing that keeps working when the network does not",
      "AGPL-3.0 licensing with no vendor able to change the terms on you"
    ]
  },
  "caveats": [
    "AppFlowy Cloud self-hosting is a multi-container stack (Postgres, Redis, GoTrue, MinIO). It is a real deployment, not a single binary.",
    "Notion's import is one-way. Getting a large workspace out cleanly takes longer than the estimate if you have deeply nested databases.",
    "The 10-hour migration figure assumes a workspace of a few hundred pages. Multiply it for a large one."
  ],
  "category": "docs-wiki",
  "updated_at": "2026-10-19"
}