Personal data and LLMs: what must never leave your perimeter, and how to audit your own system
For owners whose bot is already talking to customers: what to check by hand, what usually turns up, and what fixing it costs.
For owners whose bot is already talking to customers: what to check by hand, what usually turns up, and what fixing it costs.
Short answer: you are probably non-compliant, but not where you fear. It is almost never the bare fact that you use an LLM — it is that nobody in the company can state which data leaves your chat and where it goes. Here is how to find out in one evening, without a lawyer and without a contractor.
An auditor will not read your architecture diagram. They will ask three questions, and how fast you answer tells them everything else.
Answers within a minute — read on calmly. No answers — you do not know what happens to your data, and that is a problem in its own right, quite apart from the law.
Nearly everyone gets this wrong. In a manager's head, personal data means a passport, a surname and a phone number. The statutory definition is broader: any information relating to a directly or indirectly identified person. The word “indirectly” is where the whole difference lives. What that sweeps into a chatbot transcript:
In the security audit of an online school's AI tutor, the model handled student progress, message history and data from submitted forms. Internally this was filed under “learning context” — until we traced, line by line, what was actually leaving for an external vendor.
The most common comfort blanket: the customer's name was replaced with a numeric id, so “the data is anonymised now”. By the statutory definition, anonymisation means actions after which you cannot tell whose data it is without additional information. If you hold the mapping table yourself and query it daily, the link is trivially restorable — nothing was anonymised. That is pseudonymisation, a different thing.
What it looks like done properly. In the architecture of a voice agent for a dental clinic, only an age bracket, gender and a symptom description reach the model. Name, phone number and medical details stay in a database hosted in Russia; the mapping between a call id and a patient never leaves the clinic. The model physically cannot see anything that identifies the patient.
The on-the-spot test takes a minute: hand what actually went to the model to someone on your support desk. If they name the customer, the data is not anonymised, whatever the column in your database is called.
Discussions about GigaChat and YandexGPT usually turn into an argument about model quality. That is not the point. When personal data never crosses the border, an entire layer of work disappears: no justifying the legal basis for transfer, no separate consent forms to collect, no explaining to an inspector what a foreign vendor does with the data on its side.
In practice a domestic perimeter is three things: the customer database on a provider inside Russia (in the dental project, PostgreSQL on Selectel), a domestic model for anything that touches actual people, and a foreign model only where there is no personal data at all — website copy, parsing technical documentation, drafting product descriptions.
In the online-school audit, personal data processing was moved to a domestic model, and the 152-FZ exposure previously estimated at 15 million ₽ was reduced to residual: the basis for a cross-border transfer claim was gone. A clean zero does not exist here for anyone, and a vendor promising “fully eliminated” is promising more than it can deliver. Nor does this mean “throw out everything foreign” — it means drawing a line and knowing where it runs.
Let me name things plainly, because the question is almost always phrased exactly this way: “can we send customer data to ChatGPT”. ChatGPT, Claude and Gemini are foreign services. Sending a Russian citizen's name, phone, address or medical details there without a separate legal basis and consent to cross-border transfer is a formal violation — which is exactly how it is written on my security service page. For work with no living person in it — product descriptions, draft emails, parsing documentation — those same services remain a perfectly good tool.
A language model does not distinguish your rules from the text a visitor sent. To the model it is one stream of words. That is the root of an entire class of attacks — prompt injection: the visitor writes the bot an instruction, and the bot follows it instead of yours.
A conventional security assessment does not catch this, and not through negligence: its tooling looks at network requests, headers and library vulnerabilities, while here the attack is written in natural language and is indistinguishable from a customer message.
Two and a half weeks of red-teaming at the online school surfaced 33 findings: 8 critical, 11 high and 14 medium. Three of the critical ones were directly about personal data:
The in-house team had spotted none of them. On second reading each looks obvious — which says nothing about the team's skill: people who build a system look at it as a tool.
A different project. An internal knowledge-base assistant: a bot answering questions from work chats, email and voice messages. Those same sources also held the owner's private correspondence — material the team must not see.
The right question was not “are the access levels configured?” but “how many private chunks does the team tier actually see?”. A measurement against the live index gave an unpleasant answer: 1,327. After the fix: 0, with the volume visible to that tier shrinking from 6,139 to 4,560 chunks and no loss of working data. The access log confirmed nobody had in fact reached those chunks.
The lesson is simple. As long as access control is discussed in words, it is always “basically configured”. The moment you ask for a number, it is almost never zero on the first attempt.
An audit you can put in front of a regulator or an investor looks like this: 2.5 weeks of attacks against an isolated copy of the production system, all ten categories of the OWASP LLM Top 10, a report with a remediation plan for every finding, a week of fixes, and a re-test with the same attack set. In that project all 8 critical findings were confirmed closed, and the investor-side review of the AI component raised no follow-up questions.
What it is not: a three-page letter ending with “we recommend conducting an audit”. A report without a work plan is just paper.
The numbers. The full audit in that project cost 620,000 ₽ against exposure estimated at 15 million ₽ — a ratio of at least 24 to 1, and that is on one basis alone. But starting with the full format is almost never necessary. An express assessment at 45,000 ₽ gives you one working day, a shortened checklist, one live attack and a 4–6 page report. That is enough to decide whether you need the full engagement, which starts at 400,000 ₽.
Eight items an owner can work through today. You need a developer next to you and twenty minutes of their time.
If three or more items come back blank, that is not a verdict — it is the normal state of a system that was shipped fast. At that online school we found 33 issues in 2.5 weeks and closed every critical one within a week of the report. This gets fixed markedly faster than it was built.
If the checklist left more than three gaps, take the express assessment at 45,000 ₽. Not sure you need it — start with a free 15-minute call. Formats and methodology are on the AI security assessment service page; questions about 152-FZ and how I contract are in the FAQ on the pricing page.
Need a broader review than security — what to automate at all, and in what order? That is a separate 9,900 ₽ audit.
— Vyacheslav Chukhaldin, Kaliningrad, 2026-08-06
Provisions were checked against the official publication portal and reference legal databases on the publication date. Russian personal-data legislation keeps moving — confirm the current wording via the links above before acting.
I'll tell you what to deploy in your business first, what the payback looks like, and whether you need AI for the task at all (sometimes you don't).
Or just send your question — I reply within 2 hours