A team wants to add a third-party AI provider hosted in another country to a feature your European customers use. What has to be true before that first request goes out?
Adding a processor in another country is a transfer and a sub-processor change at once, so the work is a lawful transfer mechanism, the notice your own customer contracts require, and an engineering boundary that sends the provider the minimum and keeps nothing at their end.
What the interviewer is scoring
- Does the candidate treat the outbound API call itself as the transfer rather than only stored data
- Whether the obligations in the company's own customer contracts are checked before the design starts
- That the payload is minimised and pseudonymisation is assessed honestly rather than claimed
- Whether the provider's retention, logging and model-training behaviour are treated as design inputs
- Can the candidate name which decisions belong to legal and stop short of making them
Answer
The request is the transfer
The first thing to get right is that nothing needs to be stored abroad for this to be a cross-border transfer. Personal data leaving your boundary in the body of an HTTPS request to a provider that processes it in another country is the transfer, whether or not they retain a byte. Teams frequently reason about residency as a property of databases and are surprised that a stateless inference call raises the same questions, and it is a reliable indicator of how much of this a candidate has done before.
Transfer restrictions of the kind European law imposes are not a prohibition, they are a requirement that a recognised mechanism be in place before data moves — an adequacy determination covering the destination, or contractual clauses of the approved form, plus an assessment of whether the protections survive in that specific destination in practice. Which mechanism applies to which country changes over time, and mechanisms have been challenged and withdrawn before, so the honest engineering position is that you identify who owns that determination in your organisation, get it in writing before you build, and design so that a change in the mechanism's status does not require rewriting the feature. Naming the mechanism family is enough; asserting which one covers a particular country today is not an architect's call and the answer moves.
Read your own contracts before you read the provider's
The step candidates miss is that you are almost certainly a processor to your own customers, and your data processing agreements with them constrain you independently of what the law permits. Those agreements typically list your approved sub-processors, require notice before you add one, and give the customer a right to object — sometimes with a termination remedy attached. Notice periods and objection rights vary from contract to contract, which is precisely why this is a question for whoever holds the contract repository rather than something to assume.
The consequence for planning is uncomfortable and worth stating plainly in an interview: the earliest date the feature can be enabled for a given customer may be set by a notice period in their contract rather than by your release train. That is not a legal detail to be tidied up later, it is a dependency on the delivery plan, and discovering it after the feature has shipped means either disabling it for your largest accounts or being in breach of an agreement you signed.
| What must be settled | Who answers it | What you keep as evidence |
|---|---|---|
| Which transfer mechanism applies to this destination | Legal or privacy function | The written determination, dated, naming the provider and destination |
| Whether the assessment of that destination is current | Privacy function | The assessment and its review date |
| Whether customer contracts permit this sub-processor | Contract owner, per customer | Notices sent, objections received and how resolved |
| What data the provider may receive | Engineering, with privacy sign-off | The field list, enforced in code, and the test that proves it |
| What the provider does with it | Vendor assessment | Their contractual commitments on retention, logging and training |
| Which customers are enabled | Engineering | Per-tenant configuration and its change history |
Minimise the payload, and be honest about pseudonymisation
The engineering work that reduces the exposure most is deciding what leaves at all. Send the text that needs processing and not the record around it. Strip identifiers that the provider has no function for. Replace your internal customer key with a per-request token you can reverse locally, so the provider holds no stable identifier linking requests to a person.
Then resist the overclaim that ruins this argument. Removing direct identifiers does not make the data anonymous; if you retain the mapping needed to reattach it, the data is pseudonymised and remains personal data, and a transfer mechanism is still required. Free-text content is the worse problem, because whatever a user typed is going regardless of your field discipline, and users type identifiers, names and health details into fields designed for none of that. If the payload is free text, your minimisation story rests on content filtering and on the provider's commitments rather than on schema control, and saying so is stronger than pretending the field list covers it.
The provider's defaults are part of your design
Vendor assessment for this kind of integration comes down to a short list of behaviours that determine whether your architecture is coherent. Where is inference actually performed, as distinct from where the endpoint resolves, and does a regional endpoint mean regional processing or only regional ingress. What is retained, for how long, and is that configurable per request or only per account. What lands in their logs, since a prompt logged for abuse monitoring is retained content whatever the retention setting on the primary path says. Whether your data can be used to train or improve their models, and whether that is a contract term or a dashboard toggle someone can flip. And what their own sub-processors are, because they are yours too, transitively, and your customer's notice obligation does not stop at the first hop.
Every one of those needs to be a contractual commitment rather than a screenshot of a settings page, for the ordinary reason that a settings page is not evidence and can change without telling you.
The prototype that quietly became the data flow
The failure mode to name is not a bad decision, it is a decision nobody made. Somebody builds a spike with a personal API key against a copy of production data to prove the feature is possible. The demo goes well, the spike is the fastest path to shipping, and the integration reaches production carrying the boundary properties of an experiment: no field discipline, retention at the provider's default, no per-tenant gate, and no record anywhere that a transfer began.
What makes this the recurring case rather than an unlucky one is that the review gates are all attached to procurement and architecture milestones, and the spike passed through neither. The controls that actually catch it are unglamorous — egress restrictions that mean an unapproved endpoint is unreachable from production networks, credential issuance that goes through a request rather than a signup, and a rule that production data is not available in a development environment in the first place. If the answer to this question is only a policy stating that new processors must be approved, the policy will lose to the prototype every time.
Being able to prove where the data went
Finally, design for the question you will be asked later: show that no European customer's data reached that endpoint before the approval date. That is a claim about the past, which means it needs per-tenant gating that is configuration with a change history rather than a code path someone can reason about, egress logs that survive long enough to be examined, and a deployment record tying the enabling change to a date and an approver. The residency architecture and the evidence architecture are the same work, and teams that treat the second as documentation to be written afterwards find they cannot write it.
An outbound API call is a transfer, and adding a provider is simultaneously a legal question your privacy function owns, a contractual question your customer agreements own, and an engineering question about how little you can send. The one thing that is entirely yours is making the unapproved path unreachable.
Likely follow-ups
- The provider only offers an endpoint in one region. What options are left to you?
- How would you evidence, a year from now, that no European customer's data reached that endpoint before approval?
- Your customer contract requires notice of new sub-processors and one customer objects. What happens to the feature?
- A developer wired the provider into a prototype last month using production data. What do you do first?
Related questions
- Your data is pinned per region, but login must be globally unique and admins want one global search. How do you build that?hardAlso on cross-border-transfer6 min
- Fraud and AML say keep it for years, privacy says delete it. How do you build a system that satisfies both?hardAlso on data-minimisation5 min
- The business wants to buy and their security team has blocked you over an answer in your questionnaire. How do you get the deal moving again?hardAlso on vendor-assessment6 min
- An upstream feed resets ten thousand of your prices to a penny and orders start arriving. What should have stopped it, and what do you do with the orders that got through?hardSame kind of round: scenario6 min
- A release goes out and afterwards users can see records they were never entitled to. How would you find out, and how long would it take?hardSame kind of round: scenario6 min
- A configuration change that passed review takes the entire fleet down in under a minute. What in your design should have limited the damage?hardSame kind of round: scenario6 min
- A maintenance script updates your permissions table and every user in one tenant can suddenly edit everything. What should have stopped that, and how would you have found out?hardSame kind of round: scenario6 min
- A Terraform plan in CI wants to destroy resources in production. What has to happen before anyone is allowed to approve it?hardSame kind of round: design6 min