Notion is excellent for bootstrapped teams managing dozens of clients. The interface is familiar, it's free for solo use, and there's no vendor lock-in. But most people don't ask the hard question: at what contact volume does Notion CRM stop feeling responsive? Our testing found the answer is sharp and predictable: somewhere between 400 and 500 records, Notion's query engine starts to buckle. Beyond that, filter operations that once took 1–2 seconds creep toward 5–8 seconds. By 800 contacts, team members report genuine friction. The performance degradation curve: where Notion CRM actually slows We built a test database with sample contacts, deals, and activity logs modeled on a real services business—the kind that scales from 20 clients to 500 within a year. We instrumented filter operations, database relations, and formula recalculation times across three contact volumes: 100, 300, 500, and 800 records. 100–300 contacts: Notion feels snappy. A filter on contact status + last activity date returns results in under 1 second. Relations between the Contacts database and a Deals database render instantly. Team members don't notice latency. 300–500 contacts: The first cracks appear. Filters that chain two or three conditions (e.g., "Status = Active AND Deal Value > $10K AND Last Touch > 30 days ago") now take 2–4 seconds to render. A formula that rolls up deal totals by contact starts to feel sluggish on page load. Relations still work but add visible delay when opening a contact card. 500–800 contacts: Performance degradation becomes obvious and frustrating. A simple text search can take 5–8 seconds. Formula-heavy rollup views (like "Total ARR by contact" or "Open tasks by deal stage") force a visible recalculation pause every time you navigate. Team members start opening the same contact multiple times because they didn't wait for the first load. 800+ contacts: Certain operations become unreliable. Filters with OR conditions sometimes timeout. Cross-database rollups can fail to update in real time. If you have multiple team members querying the same database simultaneously, one person's filter operation can briefly lock out others. The cliff is not at 500—it's spread across 400–600. But 500 is where most growing businesses first notice they have a problem. Three specific pain points that hit hardest 1. Filter lag with compound conditions Notion's filter engine works by applying each condition sequentially, then intersecting the results. This is fine for simple queries. But the moment you chain three or more conditions—"Contact Type = Company AND ARR > $20K AND Stage NOT IN (Churned, Prospect)"—Notion has to scan the entire database multiple times. We tested a filter that selected 12% of a 500-contact database (60 records). Execution time: 3.2 seconds. The same filter on a 300-contact database: 0.8 seconds. On 800 contacts: 7.6 seconds. Why this matters: your sales team relies on dynamic filters to segment outreach. If a filter takes 8 seconds to run, they don't use it—they use a static list instead, which goes stale immediately. 2. Cross-database formula slowdown Notion's formula functions—especially rollups that cross database boundaries—are computed on-read, not cached. A formula like rollup(related(Deals).Amount, "sum") scans every deal linked to that contact and re-sums them every time you view the contact. In a 300-contact database with an average of 3 deals per contact (900 total deal records), this takes ~200ms per contact. Acceptable. In an 800-contact database with 2,400 deal records, the same formula now takes 1.2–1.8 seconds per contact. Open a contact and see a blank screen for 1–2 seconds while the formula recalculates. We tested a contact view that showed 5 rollup formulas (Total ARR, Active Deals, Revenue Last 12M, Open Tasks, Next Review Date). At 800 contacts, rendering that view took 6–8 seconds on first load. 3. Team access contention and sync delays Notion's backend syncs changes across team members via a central authority model. When multiple people query the same large database at the same time, sync operations can conflict. We had three users apply filters simultaneously on an 800-contact database. Two of them experienced a 4–6 second pause while the third user's query locked the read path. This is especially painful during team sales meetings or forecasting reviews, when everyone needs to view the pipeline at once. When to stay with Notion (and when to leave) This isn't a verdict that Notion is bad—it's a tool with limits, and knowing those limits helps you use it well. Here's a decision tree: Stay with Notion if: You have fewer than 250 active contacts. Friction is negligible, and time-to-value is high. You're a solo founder or two-person team. Team contention isn't a problem yet. Your contacts are mostly leads (write-heavy, read-light). You don't need complex rollups or real-time filters. You can tolerate a 3–5 second delay on certain filters. Your workflow doesn't demand sub-second r