[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-en-/where-one-intermind-meeting-actually-runs":3},{"page":4,"surround":470},{"id":5,"title":6,"authors":7,"badge":10,"body":11,"date":460,"description":461,"extension":462,"image":463,"meta":464,"navigation":465,"path":466,"seo":467,"stem":468,"__hash__":469},"blog/blog/where-one-intermind-meeting-actually-runs.md","Where one InterMIND meeting actually runs",[8],{"name":9},"The Mind.com Team","Sovereignty",{"type":12,"value":13,"toc":449},"minimark",[14,18,27,30,33,36,41,44,61,64,66,70,73,193,196,198,202,365,368,370,374,381,388,391,405,408,410,414,417,424,430,432,436,446],[15,16,6],"h1",{"id":17},"where-one-intermind-meeting-actually-runs",[19,20,21,22,26],"p",{},"Every serious enterprise procurement conversation eventually reaches the same question: ",[23,24,25],"em",{},"\"Where does this data go?\""," The DPO wants a sub-processor list. The CIO wants to know which vendors are US-domiciled. Legal wants a diagram with arrows.",[19,28,29],{},"We'd rather you have the full picture than ship it piece by piece over email. So here is the data path of one meeting — every external service it touches, where each one executes, and what data flows through it. Verified against the actual deployment configuration on 2026-05-28.",[19,31,32],{},"There is one path where vendor-domicile is still US, and we say so plainly. The rest is EU at runtime.",[34,35],"hr",{},[37,38,40],"h2",{"id":39},"what-where-it-runs-actually-means","What \"where it runs\" actually means",[19,42,43],{},"Two things get conflated in sovereignty conversations and they are not the same thing:",[45,46,47,55],"ol",{},[48,49,50,54],"li",{},[51,52,53],"strong",{},"Runtime / data path."," Where the bytes of your meeting are physically processed during the request. This is what data-residency regulations and most DPAs are actually about.",[48,56,57,60],{},[51,58,59],{},"Vendor corporate domicile."," Where the SaaS vendor is legally incorporated. This is what CLOUD-Act discussions are about — the theoretical reach of a US compulsion against the vendor's parent entity, regardless of where the workload runs.",[19,62,63],{},"Almost every \"is this EU?\" question is really one of these two, asked imprecisely. We answer them separately for every vendor below.",[34,65],{},[37,67,69],{"id":68},"the-data-path-of-one-meeting","The data path of one meeting",[19,71,72],{},"Trace one call from join to follow-up email:",[45,74,75,86,96,110,120,130,144,154,167,179],{},[48,76,77,80,81,85],{},[51,78,79],{},"Browser opens the meeting page."," SSR runs on Vercel, pinned to ",[82,83,84],"code",{},"fra1"," (Frankfurt). All request/response data — session cookies, API payloads, server-rendered HTML — is processed in EU at runtime.",[48,87,88,91,92,95],{},[51,89,90],{},"WebSocket connects to our meeting server"," in Paris (",[82,93,94],{},"cdg","). Meeting orchestration, presence, signalling — all EU.",[48,97,98,101,102,109],{},[51,99,100],{},"Speech recognition runs in the speaker's browser."," Local. Never leaves the device until the resulting transcript is sent for translation. (We covered why in ",[103,104,106],"a",{"href":105},"/blog/inside-the-translation-pipelines",[23,107,108],{},"Inside the four translation pipelines",".)",[48,111,112,115,116,119],{},[51,113,114],{},"Voice and chat translation hit our own engine on OVH France."," This is ",[82,117,118],{},"mind-sdk-web"," — our code, our hosts, in France. No third-party model is in the loop. Sub-second budget, per-language WebSocket pool, EU-resident at every hop.",[48,121,122,125,126,129],{},[51,123,124],{},"A document dropped into chat"," (PDF, DOCX, PPTX, XLSX) goes server-side from the Paris ws-server to ",[51,127,128],{},"DeepL"," in Cologne. German company, German processing. Voice and chat do not touch DeepL.",[48,131,132,135,136,139,140,143],{},[51,133,134],{},"Application data"," — users, teams, messages, meeting metadata — lives in ",[51,137,138],{},"Neon Postgres on AWS Frankfurt"," (",[82,141,142],{},"eu-central-1","). Snapshots in the same region.",[48,145,146,149,150,153],{},[51,147,148],{},"Recordings, attachments, exports"," are stored on ",[51,151,152],{},"Tigris",", S3-compatible storage on Fly. Edge-replicated; the bucket is configurable to multi-region EU for tenants who need it pinned tighter.",[48,155,156,159,160,139,163,166],{},[51,157,158],{},"Errors and performance traces"," go to ",[51,161,162],{},"Sentry's EU instance",[82,164,165],{},"de.sentry.io","). The US org was retired in May.",[48,168,169,159,172,139,175,178],{},[51,170,171],{},"Product analytics",[51,173,174],{},"PostHog EU",[82,176,177],{},"eu.i.posthog.com",").",[48,180,181,184,185,188,189,192],{},[51,182,183],{},"Transactional email"," (magic links, invites, receipts) goes via ",[51,186,187],{},"Resend"," out of ",[82,190,191],{},"eu-west-1"," (Ireland).",[19,194,195],{},"Everything above is EU at runtime. The translation engine — the part most of your data actually flows through — is also our own code, which means the engine itself can be audited or self-hosted by a customer who needs it to be.",[34,197],{},[37,199,201],{"id":200},"the-vendor-map","The vendor map",[203,204,205,221],"table",{},[206,207,208],"thead",{},[209,210,211,215,218],"tr",{},[212,213,214],"th",{},"Vendor",[212,216,217],{},"What it does",[212,219,220],{},"Runtime location",[222,223,224,241,256,272,287,299,311,326,339,352],"tbody",{},[209,225,226,235,238],{},[227,228,229,139,232,234],"td",{},[51,230,231],{},"OVH",[82,233,118],{},")",[227,236,237],{},"Voice + chat translation engine",[227,239,240],{},"France",[209,242,243,248,251],{},[227,244,245],{},[51,246,247],{},"Fly.io",[227,249,250],{},"Meeting WebSocket orchestration",[227,252,253,254,234],{},"Paris (",[82,255,94],{},[209,257,258,264,267],{},[227,259,260,263],{},[51,261,262],{},"Vercel"," (Nuxt + Nitro APIs)",[227,265,266],{},"App shell, server APIs, SSR",[227,268,269,270,234],{},"Frankfurt (",[82,271,84],{},[209,273,274,279,282],{},[227,275,276],{},[51,277,278],{},"Neon",[227,280,281],{},"Application Postgres",[227,283,284,285,234],{},"AWS Frankfurt (",[82,286,142],{},[209,288,289,293,296],{},[227,290,291],{},[51,292,152],{},[227,294,295],{},"Object storage (recordings, attachments)",[227,297,298],{},"Edge-replicated; EU-pinnable",[209,300,301,305,308],{},[227,302,303],{},[51,304,128],{},[227,306,307],{},"Document translation (PDF/DOCX/PPTX/XLSX)",[227,309,310],{},"Cologne",[209,312,313,318,321],{},[227,314,315],{},[51,316,317],{},"Sentry",[227,319,320],{},"Error tracking",[227,322,323,325],{},[82,324,165],{}," (EU)",[209,327,328,333,335],{},[227,329,330],{},[51,331,332],{},"PostHog",[227,334,171],{},[227,336,337],{},[82,338,177],{},[209,340,341,345,347],{},[227,342,343],{},[51,344,187],{},[227,346,183],{},[227,348,349,350,234],{},"Ireland (",[82,351,191],{},[209,353,354,359,362],{},[227,355,356],{},[51,357,358],{},"Stripe",[227,360,361],{},"Payments",[227,363,364],{},"Ireland (Stripe Payments Europe Ltd.) for EU customers",[19,366,367],{},"The two heaviest data flows by volume — voice/chat translation through our own engine on OVH and document translation through DeepL — also happen to be the two vendors whose parent entity is in the EU. That covers the bulk of meeting content. The full sub-processor list with corporate-domicile detail goes into the DPA as standard practice; the table above is the runtime view, which is what most data-residency clauses are about.",[34,369],{},[37,371,373],{"id":372},"the-one-current-gap-named-plainly","The one current gap, named plainly",[19,375,376,377,380],{},"After the call ends, we generate a post-meeting ",[51,378,379],{},"AI digest"," — topics, decisions, action items, open questions. The model that produces the digest is reached via Vercel's AI Gateway (an EU-region proxy) but the underlying models are Google Gemini 2.5 Flash with an Anthropic Claude Sonnet fallback — both US-domiciled vendors.",[19,382,383,384,387],{},"Real-time voice, real-time chat, and document translation do ",[51,385,386],{},"not"," go through this path. The digest is a separate, post-meeting step that takes the transcript we already produced and writes a summary on top of it.",[19,389,390],{},"We're closing this gap two ways:",[45,392,393,399],{},[48,394,395,398],{},[51,396,397],{},"Owner-controlled opt-out, coming shortly."," A workspace owner will be able to disable the AI digest pipeline entirely, in which case the post-meeting summary is simply not generated and the transcript stays where it was — in the EU. Default off for new tenants; existing tenants get a notice and can leave it on if they want.",[48,400,401,404],{},[51,402,403],{},"Self-hosted EU summarization model."," We're standing up an open-weights model (Kimi-class) on OVH for tasks like summarization that don't need a frontier-grade reasoner. Once that's the digest backend, the trade-off goes away — the same pipeline works without any US-domiciled vendor in it.",[19,406,407],{},"If the digest is the difference between \"this works for us\" and \"this doesn't\" for your procurement, tell us — we'll prioritise accordingly.",[34,409],{},[37,411,413],{"id":412},"what-this-means-for-your-dpa","What this means for your DPA",[19,415,416],{},"For most EU buyers — German Mittelstand, regulated industries running standard GDPR DPAs — the picture above answers the data-residency question directly: every runtime hop your meeting takes is in the EU. Vendor-domicile gets disclosed in the sub-processor list per normal practice; nothing surprising there.",[19,418,419,420,423],{},"For French ",[23,421,422],{},"souveraineté numérique"," and SecNumCloud-grade procurement, vendor corporate domicile is itself part of the criterion, not just runtime location. That's a different conversation — an alternative deployment topology that keeps every component under European-jurisdiction vendors. We don't run that by default; we'll spin it up for a tenant that needs it and where the contract justifies the build.",[19,425,426,427,429],{},"For US-domestic and most APAC buyers, the inverse is usually true — they want low latency from their region, which is a different problem. Today we run single-region in ",[82,428,84],{},". If your traffic justifies a US edge, we'll plan that with you.",[34,431],{},[37,433,435],{"id":434},"what-this-post-commits-us-to","What this post commits us to",[19,437,438,439,442,443,445],{},"This is the picture on 2026-05-28. We'll update it when the stack changes — vendor swap, region migration, a new external service. The current configuration is verifiable in our open ",[82,440,441],{},"vercel.json",", the ",[82,444,118],{}," engine running at OVH France, and every vendor's own dashboard.",[19,447,448],{},"If something here looks wrong, or your DPO needs an answer this map doesn't give, write us. We'd rather correct a missing detail than have you discover it in a contract review.",{"title":450,"searchDepth":451,"depth":452,"links":453},"",2,3,[454,455,456,457,458,459],{"id":39,"depth":451,"text":40},{"id":68,"depth":451,"text":69},{"id":200,"depth":451,"text":201},{"id":372,"depth":451,"text":373},{"id":412,"depth":451,"text":413},{"id":434,"depth":451,"text":435},"2026-05-28","A vendor-by-vendor map of which external services touch your meeting, where they execute, and what data passes through each. Including the one path that still leaves the EU at the vendor level — and what we're doing about it.","md","/blog/where-one-intermind-meeting-actually-runs.svg",{},true,"/blog/where-one-intermind-meeting-actually-runs",{"title":6,"description":461},"blog/where-one-intermind-meeting-actually-runs","xCHyb3PFELgGPAz9AknjvZLzpHQhvKIKMx9d2lf8SZw",[471,472],null,{"title":473,"path":474,"stem":475,"description":476,"children":-1},"The false-fluency trap: when \"good-enough\" English is worse than no English","/blog/false-fluency-trap","blog/false-fluency-trap","Aviation regulators mandated it after Tenerife and Avianca. Medical literature quantifies it down to error counts per patient encounter. Forty years of international-business research documents the same mechanism in the boardroom. Why partial fluency in a shared language is worse than no shared language at all — with the data."]