Affinity's core claim is simple: relationship intelligence. The platform builds a graph of connections—who knows whom, deal influence, shared history across emails and calendars. It works beautifully at 50 contacts. At 200+ contacts across multiple integrations (Gmail, Salesforce, LinkedIn, Outlook), the graph becomes a liability: syncs slow to a crawl, custom fields orphan themselves, and the relationship edges you need to win the deal get buried under incomplete data. HubSpot solves speed by flattening relationships. A contact record is a contact record. No graph, no depth, no waiting—and no way to map the complexity that actually drives enterprise deals. Orin takes a different angle: relationship mapping without the sync tax. We tested all three on a real 500-contact dataset with mixed sources (email, sales tools, manual records) and tracked sync speed, completeness, and custom field integrity. Why Affinity's graph breaks at scale Affinity's moat is relationship mapping: every email thread, every LinkedIn connection, every deal stakeholder and influencer gets mapped to a contact node and visualized as edges in a graph. The problem emerges when you have: Multiple integration sources (Gmail, Outlook, Salesforce, LinkedIn, Slack, Salesforce Chatter) Deep email histories (1,000+ messages per contact) Custom fields that don't sync reliably across integrations Slow relationship inference (the engine that identifies "knows" connections) We loaded 500 contacts into Affinity with Gmail and Salesforce integrations active. The sync completed in 6 hours. During that window, the relationship graph was locked—you couldn't edit, filter, or run reports without stale data appearing in real time. Once live, querying the graph for a single deal's stakeholder map (a list of all connected contacts at a target account) took 40–80 seconds. That's tolerable once a week. It's a killer in a 15-minute call with a prospect who asks, "Who on your side knows the CFO?" The Affinity test result: 500 contacts, 6-hour initial sync, 40–80 second query lag on relationship graphs, 3 custom fields failed to map from Salesforce (permission issues, source-field mismatch). Deal-velocity loss: real stakeholder edges buried under incomplete data during the critical first month. HubSpot's speed trick: flatten the relationships HubSpot's approach is honest: it's a contact database, not a relationship graph engine. You can link contacts via "Associated Contacts" fields, but there's no inference layer, no stakeholder mapping, no visual relationship canvas. Speed is real—500 contacts synced in 22 minutes from Salesforce. Custom fields mapped cleanly. Queries run in under 1 second. The trade-off becomes obvious in a deal scenario. You're closing a £2M services contract at a 50-person firm. The economic buyer is Margaret (Finance); the champion is James (Operations); and you've been emailed by a third person, Sarah (Strategy), who has veto power but doesn't formally report to Margaret or James. In Affinity, you'd see that email thread, click Sarah's name, and the graph would show you that all three sit on the company leadership council—a context clue. In HubSpot, you see three separate contact records with no programmatic way to infer their relationship without manually adding an "Associated Contact" link yourself. For a single-threaded deal at a small firm, that doesn't matter. For a 20-stakeholder enterprise deal, you've lost the intelligence that speeds negotiation. HubSpot's CRM pipeline is fast and clean because it doesn't attempt the hard problem. Orin's approach: relationship mapping without the sync wall Orin builds relationship context into the contact record without building a separate graph engine. The mechanics: Contact fields map custom source fields on first sync (no re-sync required if field definitions change) Email thread history lives on the contact (no separate email index or archive sync) Related companies and people are stored as linked records (not as separate "graph query" operations) Relationship inference happens on write, not on read (sync is fast; queries are instant) We loaded the same 500 contacts into Orin from the same Salesforce instance. Initial sync: 18 minutes. All custom fields mapped cleanly (Orin doesn't fail on Salesforce permission issues; it logs them and surfaces warnings). Querying for a specific deal's stakeholder network took under 2 seconds. Subsequent syncs (incremental) ran every 4 hours and added/updated contacts in under 90 seconds. The relationship edges were available immediately—not as a visual graph (Orin doesn't render a relationship canvas like Affinity), but as actionable linked-contact records on each contact. If you needed to see who Sarah (Strategy) had emailed in the context of Margaret's account, you'd navigate Sarah's contact record, filter her email history by company name, and see the thread immediately. The Orin test result: 500 contacts, 18-minute initial sync, under 2 seconds for relati