0. Summary of the result
- An impact assessment is indicated: AI as a new technology and free text from visitors that may contain special categories (section 1).
- The design keeps the risk for visitors to customers' websites low in the default mode: questions are not stored, no visitor identifier, no cookies, no content in logs, AI exclusively on the Provider's own hardware in Poland, short time limits verified in the code.
- Since 09.10.2026, numerous features have been added (areas, answer tests, index release with copies, success and A/B, live API, MCP, diagnosis, WordPress, OCR, protected areas). All of them can be switched on per website and are off in the default setting; each is assessed in section 7.
- Medium residual risks remain for question analysis including the knowledge gap report (R2), for content that customers submit themselves (R6), for the lack of encryption at rest (R19) and – after release – for protected knowledge areas (R14).
- Newly assessed: deleted data survive in encrypted weekly copies for up to 364 days (R12); capacity under peak load has not been demonstrated (R8). Since 16.10.2026, support requests, sessions and invoices have a deletion run; R9 has therefore been lowered.
- There is no high residual risk requiring prior consultation under Article 36 – subject to the conditions in section 10.1. Approval by Lukas Wójcik is pending.
1. Why this impact assessment is required
Article 35(1) GDPR requires an impact assessment where a type of processing, in particular using new technologies, is likely to result in a high risk to the rights and freedoms of natural persons. Answely uses a language model to answer free-text questions from visitors to third-party websites. Visitors do not know who operates the box and can write whatever they wish in the question – including information about their health, their financial situation or third parties.
None of the three standard cases in Article 35(3) applies: Answely does not evaluate persons as a basis for decisions (point (a)), does not process special categories in a targeted manner or on a large scale (point (b)) and does not monitor publicly accessible areas (point (c)). The correct route is Article 35(1) itself, applied by means of the nine criteria of the Guidelines on Data Protection Impact Assessment (WP 248 rev.01, endorsed by the EDPB). As a rule, the fulfilment of two criteria is regarded as an indication of a high risk.
| Criterion | Answely | fulfilled? |
|---|---|---|
| Evaluation or scoring | No. Question analysis groups questions, not persons; success and A/B compare groups of answers. | no |
| Automated decision-making with legal effect | No. The box answers questions and does not decide anything about the visitor. | no |
| Systematic monitoring | No. No identifier, no cookies, no linking across pages or days. | no |
| Sensitive data or data of a highly personal nature | Free text may contain them (for example questions on the website of a medical practice or law firm); not collected in a targeted manner. In future, protected knowledge areas with confidential content. | partly |
| Large scale | Depends on the number of customers and visitors; few questions per visitor, no history. No production operation yet. | open |
| Matching or combining datasets | No. Protected knowledge areas would use groups from the customer's identity system but would not store them. | no |
| Vulnerable data subjects | Visitors to customers' websites may be children, patients or clients; not targeted. | partly |
| Innovative use of new technologies | Yes: language model, embeddings, AI labelling under Article 50 AI Act. | yes |
| Preventing the exercise of rights or use of a service | No. The customer's search always remains usable; the box is an add-on. | no |
Result regarding Article 35(1): one criterion definitely fulfilled, two partly, one open. Answely carries out the impact assessment – because the criteria suggest it, because Answely's own concept requires it before going live and because customers need it for their own assessment.
Article 35(4) requires the supervisory authority to publish a list of the kinds of processing operations for which an impact assessment is mandatory. The competent authority is the Polish UODO. We have not recorded a comparison with the individual entries of this list; because Answely carries out the impact assessment in any case, the result of this document does not depend on whether an entry applies.
2. Roles: who bears the obligation, and for what
| Data | Answely's role | Controller | Consequence |
|---|---|---|---|
| Questions and answers in the box, counters, question analysis, ratings, success and A/B, index of customers' pages, push and WordPress, MCP access, protected areas, answer tests | Processor (Article 28) | the customer who owns the website | The obligation under Article 35 formally lies with the customer. Answely owes assistance under Article 28(3)(f). |
| Account, billing, support, answely.com, quick check, own demo, logs, backup copies | Controller | LW IT Solutions Company Lukas Wójcik, Łódź | Answely assesses this processing in its own right; on its own, it would not trigger an impact assessment. |
Sites from reactive.chat (tenant rc:) | Processor under the reactive.chat contracts, same legal entity | the reactive.chat customer | The privacy policy and DPA of reactive.chat expressly name these answers ("Smart Answer") as a service of Answely (condition B6). |
It follows that the processing chiefly at issue here is the processing for which Answely is not the controller. A processor cannot carry out the assessment in place of the customer and cannot consult the supervisory authority in its place. What it can and must do is supply everything the customer needs for this – the description, the facts and an honest list of the measures. That is precisely what this document is: Answely's own assessment of the service and, at the same time, the basis for the customer's assessment.
A customer who adopts this document unchanged as its own impact assessment has not carried one out. Only the customer can decide whether the answer box is appropriate on its website, whether it requires consent mode, whether it switches on "Allow answer cache", question analysis or success and A/B, which content it has indexed and whether its visitors are particularly vulnerable.
3. Data protection officer: the assessment under Article 37
No data protection officer has been designated. Answely is a sole proprietorship; its core activity is neither regular and systematic monitoring of individuals on a large scale (no identifier, no cookies, no profiles) nor processing of special categories on a large scale (Article 37(1)(b) and (c)). The detailed assessment is set out in the record of processing activities, section 9.
The question must be reassessed if protected knowledge areas with confidential content are released, if customers from the health or legal sector are taken on with question analysis, or if the number of visitors grows significantly. Article 35(2) requires the advice of a data protection officer only where one has been designated; its absence is therefore not a deficiency. In our assessment, there is no further obligation under Polish law (Article 37(4)): the Polish Personal Data Protection Act of 10.05.2018 only determines which public bodies fall under Article 37(1)(a). No external data protection advice was obtained. The approval is recorded in section 10.2.
4. Method, sources and limitations of this assessment
Every statement of fact is based on the source code (answer service in Node.js, account app in PHP), the database schema, the configuration templates, the project decisions and the documented acceptance tests up to 11.10.2026. Time limits that also appear in the privacy policy are checked automatically against the code by a test bench; the clean-up runs are verified by test benches with a clock set forward.
Limitations, stated openly:
- Answely is not yet in production operation. There are no row counts, no number of customers and no number of visitors from the production system. The scale is therefore a forecast.
- The configuration of the production system (environment files, secrets) was not read for this document; on 12.10.2026 the database schema, clean-up code, configured time limits and non-secret configuration of the development environment were reconciled. Where a commitment depends on live operation, this document describes the setting with which Answely goes into operation.
- The quality of the answers has not been accepted from a subject-matter perspective: in the measurement of 09.10.2026, 43 of 50 German, 22 of 27 English and 22 of 27 Polish test questions met the source and keyword requirements; all 16 unknown questions were correctly declined. This is an indication, not an assessment of factual correctness.
- Peak load has not been accepted (risk R8).
- Legal assessments in this document are proposals by the author; they do not replace legal advice.
5. (a) Systematic description of the processing operations and purposes
5.1 How the answer box works
The customer embeds the script answely.js in its website's search and verifies that it owns the domain. Answely then retrieves exclusively the public pages of this website, splits them into sections, calculates vectors and creates an index. If a visitor asks a question, the script sends – in the default setting only if the input looks like a question – the question, the language and the page addresses without parameters to the answer service. The service searches for matching sections in the website's index. If the supporting evidence is strong enough, a language model generates a short answer that is based only on these sections and links to them; otherwise, without calling the model, a notice is returned that there is no supported answer. Every answer is labelled as AI-generated.
The AI is our own AI, self-hosted on our own hardware; it runs on the Provider's own servers in the internal network in Łódź. Answers are generated by two machines with a language model reduced by a third party at a pinned revision; if one is busy or fails, the other takes over. A further machine of our own does not formulate answers; it handles background work such as the embeddings during index runs and the nightly grouping. The embedding runs with an embedding model of our own, likewise self-hosted, on own machines; the reranker is currently switched off. The servers are also used by other products of the operator; the image component of the model software is switched on, but Answely sends text only. The answer service never calls these machines: it places jobs in an exchange in its working memory; workers on the own servers collect them by signed long polling over TLS, compute and return the result in parts so that the box can stream. If no worker is found within the collection period, the box disappears; the customer's search remains.
The customer determines what is stored: in the default setting ("Allow answer cache" off), the question and answer are not stored. With "Allow answer cache", the answer is held briefly in a cache; with question analysis additionally switched on, masked questions are retained for 90 days. Since 09.10.2026, the customer can switch on further features per website; all of them are off in the default setting.
5.2 Inventory of processing operations
| No. | Operation | Data | Location | Time limit | Recipients |
|---|---|---|---|---|---|
| F1 | Question in the box | question (no more than 300 characters), language, page addresses without parameters and anchors, area, history of the current box; technically IP address and user agent | working memory of the answer service and of the workers | no storage when "Allow answer cache" is off | own servers; for rc: sites reactive.chat |
| F2 | Answer cache, only with "Allow answer cache" | answer and sources under a hash | Redis | 24 hours; no longer used after a new index version | – |
| F3 | Counters without content | time, truncated IP address, website, length, result, duration | sa_zaehler | 7 days | – |
| F4 | Throttle | hash of IP address and daily salt | Redis | 2 minutes, salt 2 days | – |
| F5 | Logs | web server with truncated IP address, without parameters; service only labels, status, duration | own server | 7 days | – |
| F6 | Browser, only with "Allow answer cache" | settings; answers only when connected via reactive.chat | visitor's sessionStorage | 5 and 10 minutes respectively | – |
| F7 | Question analysis (opt-in, from Pro, only with "Allow answer cache") | masked question, calendar day, language, result, sources, duration, rating | ae_fragen and group tables | 90 days from the calendar day | customer: only groups comprising at least 2 questions |
| F8 | Knowledge gap report (opt-in) | masked group texts, figures | outbox, email provider, customer's mailbox | outbox 30 days | customer |
| F9 | Index (retrieval, PDF, OCR) | public pages, sections, vectors | ae_dokumente, ae_abschnitte | until deletion of the website, then within 24 hours | – |
| F10 | Push and WordPress sync (from Pro, opt-in) | content sent by the customer | ae_push_eingang, then as F9 | as F9 | – |
| F11 | Candidate and previous index | up to two further copies of F9 | as F9 | candidate until the next run; previous state until the next release or deletion of the website | – |
| F12 | Answer tests and release reports | test questions in the configuration; reports without texts | configuration; Redis | reports no more than 30 days | – |
| F13 | Success and A/B (opt-in) | signed token with random answer identifier and group; reports "solved", "not solved", goal | working memory of the page; Redis | token 24 hours; Redis 30 days | customer: only group totals |
| F14 | Live API (opt-in) | retrieval of a public JSON endpoint without visitor data | working memory | no storage | operator of the endpoint sees the server request |
| F15 | MCP search access (opt-in, public) | search term, area; response no more than five excerpts | working memory | no storage apart from web server log | requesting AI client |
| F16 | Protected knowledge areas (prepared) | access token with user identifier and groups; confidential documents in the index | working memory; index as F9 | token not stored; documents as F9 | – |
| F17 | Diagnosis, answer comparison, agency templates, copilot | customer's questions, sections, answers, drafts | working memory; account app session | diagnosis 15 minutes after completion; preview 25 minutes | customer |
| F18 | reactivechat engine | question, visitor address with proxy key, visitor identifier of the chat widget; with "Allow answer cache" off, signed history (question, answer, sources) in the browser | reactive.chat; browser working memory | according to its rules; history valid for 24 hours, stored in the chat as the beginning of the conversation only with a follow-up question; not after the visitor has deleted their data at reactive.chat or if the history can no longer be used; with "Allow answer cache" on, no signed history, the follow-up question continues the conversation already kept by reactive.chat | reactive.chat |
| F19 | Quick check "Check your website" (own responsibility) | address, sample question, HMAC identifier derived from IP; result with owner identifier from the session | working memory; Redis; account app session | rate limit no more than 2 minutes; result no more than 2 minutes after completion | – |
| F20 | Account and billing (own responsibility) | account, invoices, Stripe customer number | account app, Stripe | ROPA Part B | Stripe – never visitor data |
| F21 | Monitoring | status of components, response times; no content | account app | 400 days | Urgent Logs in the administration area and Telegram, without content |
| F22 | Off-site copies | all databases and files of the server, encrypted | Google Cloud Storage, Warsaw | daily copies 7 days, weekly copies 364 days | Google Ireland Ltd. (encrypted blocks only) |
| F23 | Dumps on the server | every Answely database, unencrypted | own server | database backups: 30 days | – |
| F24 | Full copy before the off-site transfer | all databases of the server and a file copy of /var/www including configuration files, unencrypted | USB drive at the server in Łódź | no more than 8 days | – |
5.3 Legal basis
For processing on its behalf, the customer determines the legal basis. Typical bases are:
- Answering the question (F1): Article 6(1)(f) GDPR – the visitor asks the question themselves and expects an answer; for customer portals, point (b) where applicable.
- Access to terminal equipment (F6): the box stores something in sessionStorage only when "Allow answer cache" is switched on (box settings, and answers only for websites connected via reactive.chat; briefly); with "Allow answer cache" off, the default, nothing. Anyone who wants consent before every request sets
data-consent="required"; the browser then does not send a single request before consent is given. If consent mode is switched on only in the account and the embed code lacks the attribute, the box retrieves its settings beforehand. - Question analysis, knowledge gap report, success and A/B (F7, F8, F13): the customer's legitimate interest in improving its content; success and A/B are subject to the same consent rules as the box. Whether a customer needs consent for this in its country is for the customer to decide. On Article 5(3) of the ePrivacy Directive: success and A/B store nothing on the terminal equipment and read nothing from it; the signed token is held only in the working memory of the page, and the browser reports only what the box itself has generated (random identifier of the answer, comparison group, the visitor's choice).
- Special categories: Answely does not offer a legal basis under Article 9(2) and is not intended for them. Customers may not submit special categories via push, WordPress or protected areas.
- Own processing operations: Article 6(1)(b), (c) and (f) GDPR, set out in detail in the record of processing activities, Part B.
5.4 Recipients and third-country transfers
- No hosting provider, no AI provider: operation on own hardware in Łódź.
- Google Ireland Ltd.: off-site copy, encrypted before transfer, bucket in Warsaw; Google is a sub-processor but sees no readable content.
- Stripe Payments Europe, Ltd.: only customers' billing data; transfer to Stripe, Inc. (USA) on the basis of the Data Privacy Framework, alternatively standard contractual clauses. Never visitor data.
- Namecheap, Inc. (USA), Namecheap Private Email: sending of all emails to customers and receipt of incoming emails to @answely.com; transfer to the USA on the basis of Namecheap's Data Processing Addendum incorporating the EU standard contractual clauses (Article 46(2)(c) GDPR), accepted on 01.08.2026. A sub-processor, because the knowledge gap report from Part A with masked group texts and emails relating to a Site are sent via it. Namecheap is also the registrar and DNS provider of answely.com, for which it holds domain data only.
- European Commission (VIES): independent controller, only VAT ID numbers of businesses.
- reactive.chat: same legal entity, only for
rc:sites. - Prepared, not active: EU fallback provider for the language model (Scaleway, Paris). Start lock: the service starts only with endpoints on the EU allowlist.
Questions and answers from the answer box and other data of visitors to customers' websites do not leave the EU – with one exception: if the customer switches on the knowledge gap report, masked group texts are sent by email via Namecheap to the USA (R2, R4). The AI processing takes place exclusively on servers in the EU.
5.5 Retention, measured rather than intended
The time limits were checked in the code, not taken from concepts. Result:
| Data | intended | actually in the code | deviation |
|---|---|---|---|
| Counters without content | 7 days | hourly run, 7 days | none |
| Answer cache | 24 hours | expiry in Redis after 24 hours | none |
| Misuse protection | 2 minutes | expiry in Redis after 2 minutes | none |
| Monthly figures | 400 days | hourly run, 400 days after last change | none |
| Question analysis | 90 days | hourly run, 90 days from the calendar day | none |
| Counters of a deleted website | with the 7-day limit | not deleted with the website, expire in the hourly run after 7 days | none |
| Index after deletion of the website | within 24 hours | immediately or via queue with error after twelve hours | none |
| Previous index | not specified | until the next release or deletion of the website | no upper time limit |
| Answer tests, release reports, success | 30 days | expiry in Redis after 30 days | none |
| Diagnosis | 15 minutes | working memory, deletion upon expiry | none |
| Support requests | 1095 days from the last reply | daily run, including AI drafts | none |
| Customer sessions | 30 days after they end or were last used | daily run | none |
| Invoices | 5 years from the end of the calendar year of creation | daily run, even if the account still exists | none |
| Off-site copies | daily copies 7, weekly copies 364 | according to the backup run of 11.10.2026 | deleted data survive for almost a year |
| Unencrypted full copy on the USB drive at the server | not defined | no more than 8 days according to the backup script | unencrypted (R19) |
6. (b) Assessment of necessity and proportionality
- Purpose: answering visitors' questions from the public content of the customer's website; operation and misuse protection; at the customer's request, analysis of which questions remain unanswered and whether answers help. No advertising, no tracking, no disclosure, no training.
- Suitability: a supported answer with sources helps the visitor more quickly than a list of hits; without supporting evidence, the box does not answer.
- Necessity of the data: only the question, language and page addresses without parameters and anchors are sent. The question is limited to 300 characters. A visitor identifier is not needed and is not generated; the IP address is used only in hashed form (throttle) or truncated form (counters, logs).
- Less intrusive means: the box is an add-on to the customer's search and does not replace it; anyone who does not use it discloses nothing. For customers who want consent before every request, there is consent mode. For customers who do not want anything stored, "Allow answer cache" off is the default.
- Storage limitation: every time limit of the answer box is specified in the code and verified by a test bench (section 5.5); under Answely's own responsibility, support requests, sessions and invoices have also had a deletion run since 16.10.2026; the remaining gap lies in the backup copies (R12).
- Accuracy: answers only with supporting evidence from the index, sources visible, source preview on request, AI notice under Article 50 of the AI Act that cannot be switched off; validity and priority of sources configurable.
- Transparency: template texts for customers' privacy policies, developer documentation, this document and the record of processing activities are published.
- Data subject rights: without an identifier, questions cannot be attributed to any person (Article 11). Customers delete question analysis using a button and delete websites and accounts themselves; the index is removed from the live system within 24 hours. Answely forwards requests from visitors to the customer; contact: support@answely.com.
- Processing on behalf and third countries: operation and AI on own hardware in Poland; off-site copy only in encrypted form in Warsaw; Stripe (USA) only for customer payments; Namecheap Private Email (USA, standard contractual clauses) for emails, of which only the knowledge gap report originates from the answer box.
- What the customer must weigh up itself: whether its visitors are particularly vulnerable, whether it switches on question analysis, success and A/B, MCP or push, and which content it has indexed.
7. (c) Assessment of the risks to the rights and freedoms of data subjects
Likelihood and severity are assessed, each as low, medium or high, before and after the measures. The measures and their status are set out in section 8.
R1 – Visitor writes health or other sensitive information in the question
The free text of a question may contain anything: a diagnosis on the website of a medical practice, debts on the website of a bank, the name of a third party. In the default mode ("Allow answer cache" off), the question is held only in the working memory of the service and the workers during processing and does not appear in any log; a measurement using marker words across databases, Redis, journals and logs has verified this. With "Allow answer cache", the answer is held in the cache under a hash of the question; the question itself is not contained in it in plain text, but the answer may reflect its content. With question analysis, the masked question is stored (R2).
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | medium | high | high |
| after, default mode | medium | low | low |
| after, with question analysis | medium | medium | see R2 |
R2 – Masking does not catch everything; masked questions leave the system by email
Question analysis masks email addresses (including obfuscated ones), telephone numbers, IBAN-like sequences of digits, links and long numbers. It does not catch names, addresses written out in words or descriptions ("my son has had … for three weeks"). The customer sees only groups comprising at least 2 questions, but the text of a group is a genuine, masked question. With the knowledge gap report, up to ten such texts are sent to the customer by email each month, via the email provider Namecheap Private Email in the USA (transfer on the basis of the EU standard contractual clauses), with a copy in the outbox (30 days), and are then held indefinitely in the customer's mailbox. In addition, a group with two questions may consist of two questions from the same person.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | high | medium | high |
| after | medium | medium | medium |
R3 – Identifiability of individual visitors, profiling
Answely does not set any cookies and does not assign any visitor identifier. The throttle works with a hash of the IP address and a random value that changes daily; counters and logs contain only truncated addresses. Success and A/B use a signed token with a random identifier per answer, which the browser holds only in working memory; within an open box the comparison group stays the same, but not across page changes. For rc: sites, the identifier of the reactive.chat widget is transmitted (R10).
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | medium | medium | medium |
| after | low | low | low |
R4 – Transfer to third parties or third countries; AI provider reads along or trains
The language model and embedding run on own hardware in Poland; no AI provider or other third party sees questions or answers during answering. The only third-country transfer from the answer box is the knowledge gap report (opt-in) via Namecheap in the USA, on the basis of the standard contractual clauses; it contains masked group texts, no answers and no IP addresses (R2). The service starts only with endpoints on the EU allowlist. An EU fallback provider has been prepared but is not active. Its current terms permit the storage of complete requests for up to two weeks for error and abuse analysis; this would be incompatible with the commitment "no storage beyond the processing". If it were activated without clarification, this risk would rise significantly.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | medium | high | high |
| after, current operation | low | high | low |
| after, fallback provider active without condition B2 | medium | high | medium to high |
R5 – AI answer contains incorrect statements about persons or passes on personal data from pages
The model may summarise a source incorrectly, for example by shortening a responsibility or a condition; this was observed in the quality measurement of 09.10.2026. Answers are based only on the customer's public pages; anyone named there may appear in an answer. Deep search and source preview do not change this, but they make the source visible.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | medium | medium | medium |
| after | low to medium | medium | low to medium |
R6 – Customer submits non-public content via push or WordPress, and the box discloses it to anyone
The push interface and the WordPress plugin bring content into the index without Answely retrieving it publicly. The plugin transmits only published, public content; the push interface only checks that the address is on a verified host. Whatever the customer sends there, the box answers to every visitor.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | medium | high | high |
| after | low to medium | high | medium |
R7 – Unauthorised access to configuration, index, question analysis or the job exchange
The service's admin interface is accessible only on the local loopback with a token. The database server and Redis additionally listen on the server's address in the internal network because other services of the same operator use them; there, the firewall lets only one of the AI machines through to the database, and Answely's database users are permitted only locally. From outside, the server's SSH access permits login with a key only, and with a password only from private networks (since 16.10.2026); the database administration user is permitted only locally; push tokens exist only as hashes; CORS per website; separation per website in the index. The job exchange for the AI workers is accessible via the internet but can be used only with an HMAC signature; a worker that knows the secret would see questions and sections. The account app requires two-factor login for administrators; read access by administrators is not logged.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | low | high | medium |
| after | low | high | low |
R8 – Outage, overload and capacity limit
Two own servers generate the answers; if one is busy or fails, the other takes over; if both fail, there are no answers. A reserve with a different language model no longer exists since 18.10.2026; a third machine of our own only handles background work (embeddings during index runs, nightly grouping). The machines are shared with other products of the operator. The number of simultaneous answers is limited (default six in total, three per website); above that, the service responds with HTTP 429, and instead of an answer the box shows a notice to wait briefly. In the load test of 09.10.2026 with 480 requests per minute over 300 seconds, 86.3% of requests were rejected; no more than 1% would have been acceptable. For visitors, this does not mean loss of data – the customer's search remains – but it does mean an unavailable feature. For the integrity of the data, it is also relevant that the account app, the service and the databases run on a single server. The monitoring runs on this server and cannot itself report its total failure; a heartbeat to an external service is not set up, the website and indexer components are switched on only in production, and a pending deletion only creates an entry in the error log after 12 hours, not an active alert.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | high | low | medium |
| after | medium | low | low to medium |
R9 – Time limits are not observed; data without a time limit
The answer box's time limits are verified. Under Answely's own responsibility, three significant data sets had no deletion run: support requests with the full IP address, customer sessions with the full IP address and invoices. Since 16.10.2026, the daily clean-up run deletes support requests 1095 days after the last reply together with any AI drafts, ended sessions or sessions no longer in use 30 days after they end or were last used, and invoices 5 years after the end of the calendar year in which they were created; a test bench verifies each of these time limits. Minor data sets without a time limit are listed in the record (section 6.5). Configurable time limits can be set to zero, which then switches deletion off.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | high | medium | high |
| after | low | low to medium | low to medium (L1 to L3 closed on 16.10.2026) |
R10 – Sites from reactive.chat: data are sent to reactive.chat, where other rules apply
For rc: sites, the reactivechat engine answers the question from the reactive.chat knowledge base; the question, the visitor address (only with a proxy key) and the identifier of the chat widget for handover to a human are transmitted. The engine is permitted only for these sites. Ephemeral mode takes effect all the way to the chat server as long as the visitor does not send a follow-up question in the chat. If they do, reactive.chat takes over the question, answer and up to three sources once into the stored chat history as the beginning of the conversation from a signed history that is valid for 24 hours, bound to the website and the visitor identifier and held until then only in the browser's working memory; the box points this out beforehand. If the visitor has deleted their data at reactive.chat or the history can no longer be used, the follow-up question starts a new conversation without this history. If "Allow answer cache" is on, there is no signed history: reactive.chat already keeps the search question and answer as a conversation under its rules, and the follow-up question continues it.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | low | medium | low to medium |
| after | low | medium | low, provided that B6 is fulfilled |
R11 – Access to terminal equipment without consent where the customer requires it
Without consent mode, the box loads its settings, sends questions and, with "Allow answer cache" switched on, briefly keeps its settings and – only when connected via reactive.chat – answers in sessionStorage. With data-consent="required", the browser does not send a single request before consent is given. If consent mode is switched on only in the account and the embed code lacks the attribute, the box retrieves its settings before consent, stores them in sessionStorage with "Allow answer cache" on, and sends no question until consent is given; the consented.eu banner and TCF banners are recognised, and withdrawal of consent also stops success and A/B reports.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | medium | low | low |
| after | low | low | low |
R12 – Deleted data survive in backup copies
Every night, an encrypted copy of all databases and files is sent to a non-public bucket in Warsaw; daily copies are kept for 7 days, weekly copies for 364 days. If a customer deletes its website, its question analysis or its account, everything is gone from the live system immediately or within 24 hours respectively, but remains in the weekly copies for almost a year. The copies are encrypted, Google does not have the key, and they are not read. In addition, unencrypted dumps are held on the server (30 days). Two consequential risks: if the keys are lost, the off-site copy is worthless (availability); if an old copy is restored, deleted data return until they are deleted again. For websites, the account app reconciles orphaned sites in the service daily; for accounts and question analysis, no documented procedure exists.
In addition, the unencrypted full copy (dumps of all databases on the server and a file copy of /var/www including configuration files) before transfer is held on a USB drive at the server, for no more than 8 days (see R19).
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | high | medium | high |
| after | certain (by design) | low | low to medium |
R13 – Index copies: removed content remains in the previous index
With index release, Answely holds up to two further copies of the website. Removed pages, noindex and push deletions are propagated to both copies. However, the previous state has no time limit of its own: it remains until the next successful release, and a rollback makes it public again – with all content that has since been changed but not deleted. A corrected, incorrect statement about a person may return in this way.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | medium | medium | medium |
| after | low | medium | low |
R14 – Protected knowledge areas and confidential content
It has been prepared for the box to also answer from non-public documents for the customer's logged-in user groups. The verification of the access token is strict (RS256, fixed keys, issuer, audience), the contents of the token are not stored and are not passed to the model, there are no protected caches, and protected content cannot be made public again. Risks remain: an incorrect group rule set by the customer releases documents; confidential documents are held in the index and in all copies without additional encryption; errors in the host application (logged-out users still see answers) lie outside Answely. No identity provider is connected at present.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | medium | high | high |
| after, today (not active) | – | – | no risk |
| after, following release | low to medium | high | medium; reassess before release |
R15 – Public MCP access: extraction of the index by third parties
MCP access is public. Any AI client can retrieve excerpts, no more than five per request, limited by misuse protection. It returns only what the box would in any case answer from public pages and is switched off as soon as protected areas are active. The excerpts end up with the AI client and its provider.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | medium | low | low |
| after | medium | low | low |
R16 – Live API: retrieval from third parties and incorrect values
Answely retrieves a fixed, configured public endpoint, without the question, without the visitor address and without access credentials. The operator of the endpoint sees only the request from the Answely server. An incorrect value appears together with its source and retrieval time; errors appear as "not available".
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | low | low | low |
| after | low | low | low |
R17 – Diagnosis, answer comparison and templates with content in working memory
These tools process the customer's questions, sections and real answers in the service's working memory, for no more than 15 minutes after completion, without storage. A crash with a memory dump or a bug that logs content would make them visible.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | low | medium | low |
| after | low | medium | low |
R18 – Quick check: retrieval of third-party websites, identifier derived from the IP address
Anyone can have an address checked without an account; Answely retrieves no more than three public pages, respects robots.txt and noindex and does not store anything permanently. For rate limiting, the account app derives an HMAC identifier from the IP address using the application secret. If it is missing or shorter than 16 characters, the account app refuses the quick check; the former fixed fallback key no longer exists (16.10.2026). The service keeps the result in working memory for no more than 2 minutes after completion; only the browser session that started the check can retrieve it.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | low | low | low |
| after | low | low | low |
R19 – No encryption at rest, own premises instead of a data centre
Databases, Redis, logos and dumps are stored unencrypted on the storage medium of the Provider's own server; the hardware is located on the Provider's own locked premises under video surveillance in Łódź, to which only the owner has access. Theft or loss of the storage medium would expose the index, question analysis, accounts and support requests.
The same applies to the nightly full copy on the USB drive at the server (no more than 8 days): in addition to all databases, it contains a file copy of /var/www including configuration files, and thus also the applications' access credentials, and its directories have permissions 0755, i.e. they are readable by every user of the server.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | low | high | medium |
| after | low | high | medium, until encryption has been examined |
R20 – OCR recognises personal content in scanned PDFs
With OCR, scanned PDFs on the customer's public pages become readable and therefore answerable – including forms, signatures or lists of names that the customer has published unintentionally. Recognition runs locally, without any third-party interface, in a private temporary folder. OCR can be switched off per website.
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | low to medium | medium | medium |
| after | low | medium | low |
R21 – Support requests with the full IP address and AI assistance
Support requests contain the email address, message, full IP address and browser; since 16.10.2026 they have been deleted 1095 days after the last reply, together with any AI drafts. The code contains a support AI that, at the push of a button by a human, translates or writes a draft – on the Provider's own servers, with addresses and long sequences of digits redacted, and with nothing sent without human review. It is not switched on in the development environment (no worker key set, 12.10.2026).
| Likelihood | Severity | Risk | |
|---|---|---|---|
| before | medium | medium | medium |
| after | medium | low | low (L1 closed on 16.10.2026) |
8. (d) Measures envisaged to address the risks
The measures are sorted by their actual status, not by their importance. A measure is listed under 8.1 only if it exists in the code and is verified by a test bench or a documented measurement.
8.1 Implemented today – verified
| Measure | addresses | Evidence |
|---|---|---|
| "Allow answer cache" off as the default for new websites; question and answer then not stored anywhere | R1 | marker word measurement across databases, Redis, journals and logs; the legal texts test bench checks the default in the code |
| No content in logs of the service, indexer, workers and web server | R1, R2 | test benches of the answer service; worker tests with content-free logs |
| Script without cookies, without visitor identifier, without requests to third parties | R3, R11 | script test bench; legal texts test bench |
| Truncated IP addresses (IPv4 without the last octet, IPv6 to /48) in counters, web server log and page statistics; legacy page statistics data truncated once | R3 | IP truncation test bench; migration of 07.10.2026 |
| Throttle only with a hash of IP address and daily salt | R3 | throttle test bench |
| Question limited to 300 characters; parameters and anchors of page addresses removed in the browser and on the server | R1, R3 | test benches |
| AI on own hardware; start lock for endpoints outside the EU allowlist; fallback provider not active | R4 | EU endpoints test bench; legal texts test bench |
| Worker principle: the own servers accept no connections, collection and return signed with HMAC over TLS; unregistered workers and incorrect job types rejected | R4, R7 | server decoupling test of 11.10.2026 |
| No training and no fine-tuning with customer data | R4 | no route in the code |
| Supporting evidence required, sources visible, fixed text without supporting evidence, AI labelling cannot be switched off | R5 | test benches of the engine and of the AI notice |
Retrieval only of public pages of verified hosts, robots.txt, noindex, exclusion paths, data-answely-ignore, no internal networks | R5, R20 | indexer test benches |
Push only from Pro, token only as a hash, only verified hosts, throttle; WordPress only published public content, token only in wp-config.php | R6 | push and WordPress test benches |
| Admin interface only locally with token; CORS per website; separation per website; two-factor authentication for administrators | R7 | interface test benches |
| Limit on simultaneous answers, HTTP 429 instead of a queue; circuit breaker: in the event of an outage, the box disappears and the search remains | R8 | outage test bench; load test verifies the behaviour under overload |
| Clean-up runs with time limits, since 16.10.2026 also for support requests, sessions and invoices; deletion queue with error after twelve hours (only an entry in the error log, no active alert); reconciliation of orphaned websites | R9, R12, R21 | deletion test benches with a clock set forward |
reactivechat engine only for rc: sites; visitor address only with proxy key | R10 | interface test bench |
Consent mode: with data-consent="required" not a single request before consent; consented.eu and TCF recognised; withdrawal stops reports | R11 | consent test bench |
| Off-site copy encrypted before transfer, bucket in Warsaw, not public | R12, R19 | backup run of 11.10.2026 |
| Verified dumps with weekly restore test | R8, R12 | backup test bench |
| Deletions are propagated to the candidate and previous index; deletion of the website covers all three states | R13 | index release test benches |
| Protected areas: strict local token verification, contents of the token not stored and not passed to the model, no protected caches, no way back to public, MCP blocked | R14, R15 | optimisation test benches |
| MCP: default off, read-only, no more than five excerpts, no AI, throttle | R15 | MCP test bench |
| Live API: only public HTTPS endpoints on verified hosts, without visitor data, time and size limits | R16 | test benches of the Ultra features |
| Diagnosis and comparison only in working memory, limited, with expiry | R17 | optimisation test benches |
| Quick check without permanent storage, no more than three pages, rate limit per sender | R18 | quick check test bench |
| OCR locally, temporary private folder, limits on time, pages and resources, can be switched off per website | R20 | OCR test with a dedicated scan file |
| Support AI only at the push of a button, own servers, redaction, nothing sent without a human | R21 | code review |
8.2 Partial – in place, but not yet achieving its purpose
| Measure | Gap | addresses |
|---|---|---|
| Masking in question analysis | catches patterns, not names and descriptions written out in words | R2 |
| Groups comprising at least 2 questions | two questions may originate from the same person | R2 |
| Notices to customers regarding push and protected content | contained in documentation and drafts; the clauses in the Terms of Use and DPA have not yet been approved | R6 |
| Configurable time limits of the account app | a value below one switches deletion off | R9 |
| Restore and deletion | reconciliation only for websites, not for accounts and question analysis | R12 |
| Capacity | overload protection works but does not replace capacity; load test not passed | R8 |
| Monitoring | no external heartbeat; pending deletion without active alert | R8, R9 |
| Network access to server, database and Redis | SSH with password from private networks; database and Redis listen in the internal network, limited only by the firewall | R7 |
8.3 Planned – not implemented
- Upper time limit for the previous index, for example deletion after 30 days without rollback (R13).
- Optional knowledge gap report without group texts, only with figures and a link to the account (R2).
- Examination of storage-medium encryption on the Provider's own server (R19).
- Additional EU capacity and a repeat load test under the same criteria (R8).
- Log of administrators' read access to customer data (R7).
- Lower limit for configurable time limits in the administration area (R9).
- Encrypt the full copy on the USB drive or at least restrict its permissions to the operator (R19).
- Bind the database and Redis locally only, as far as other services allow (R7).
- Heartbeat to an external service, active alert on pending deletion (R8, R9).
8.4 Procedures and arrangements still to be defined
- Procedure for deletions after a restore from a backup copy (R12).
- Safekeeping of the keys of the off-site copy outside the server and a decryption test (R12).
- Release procedure for protected knowledge areas: review of the AI processing terms for confidential sources, acceptance with a real identity provider, login, logout and key rotation tests, reassessment of R14 (B9).
- Release procedure for an EU fallback provider (B2).
- Contact address and procedure for requests from visitors that Answely forwards to customers.
9. Residual risk and prior consultation under Article 36
After the measures, the risk for visitors to customers' websites in the default mode is low: questions are not stored, there is no identifier, no content in logs and no third party that sees questions. Medium residual risks remain for question analysis with the knowledge gap report (R2), for content that customers submit themselves (R6), for the lack of encryption at rest (R19) and – after release – for protected knowledge areas (R14). The backup copies (R12) extend every deletion by design, without the data being used during that time.
According to this assessment, there is no high residual risk that would require prior consultation of the supervisory authority under Article 36 – subject to the conditions in section 10.1. Such a risk would arise if an AI provider storing requests were activated without condition B2, or if protected knowledge areas went into operation without the release under 8.4. For processing on behalf of a customer, the obligation to consult would lie with the respective customer; Answely would assist it in doing so.
10. Review, version and approval
10.1 Conditions before going live
| No. | Condition | Status as of 11.10.2026 |
|---|---|---|
| B1 | Provider for operation and email | Answered: own hardware in Łódź, no hosting provider. Email provider Namecheap Private Email (Namecheap, Inc., USA), Data Processing Addendum with standard contractual clauses (decision of 11.10.2026), accepted on 01.08.2026. |
| B2 | EU fallback provider | Open. Prepared, not active. Before activation: EU processing, DPA with "no training" and "no storage beyond the processing" (Scaleway's current terms do not meet this), entry as a sub-processor, notification of customers 30 days in advance, inclusion in the allowlist, reassessment of R4. |
| B3 | Backup copies | Answered: encrypted in Google Cloud Storage, Warsaw, not public; daily copies 7 days, weekly copies 364 days. New as a result: R12. Open: contractual status with Google, key safekeeping, procedure after restore, disclosure in the privacy policy. |
| B4 | Push and protected content | Clause in the Terms of Use and DPA: only content that may be answered publicly, no special categories; non-public content only via protected areas after their release. The provisions are set out in clauses 10.2 and 13.4 of the Terms of Use and in section 5 of the DPA; they take effect upon approval of the legal texts. |
| B5 | Question analysis | The template text for customers (additional paragraph 2) is published upon approval of the legal texts. Data are deleted with "Delete questions", together with the website or after 90 days. The knowledge gap report contains group texts; a version with figures only is planned (8.3). |
| B6 | reactive.chat | Fulfilled: the privacy policy (section "Smart Answer"), DPA, list of sub-processors and terms of use of reactive.chat expressly name these answers as a service of Answely (versions valid from 16.10.2026 and 17.10.2026 respectively). |
| B7 | Live demo on /docs | Demo website with "Allow answer cache" off and without question analysis; the answely.com privacy policy mentions the demo (section 3.5). |
| B8 | Formalities | Article 37 assessed (section 3 and record of processing activities, section 9); on the UODO list under Article 35(4), see section 1. Contact address specified: support@answely.com (11.10.2026, changed 18.10.2026). |
| B9 | Protected knowledge areas | New: before release, procedure under 8.4 and reassessment of R14. |
| B10 | Data without a time limit | Completed 16.10.2026: clean-up run for support requests, sessions and invoices (R9). |
| B11 | Legal texts | New: align the privacy policy and TOM with backup copies, the worker principle and own hardware. |
10.2 Version and review
| Version | 1.0, 18.10.2026 – first approved version |
|---|---|
| Prepared by | the implementing AI on the basis of code and documentation, for review by the owner |
| Reviewed and approved | Approved by Lukas Wójcik, owner, on 18.10.2026. |
| Opinion of the data protection officer | not applicable as long as none has been designated (section 3) |
| External advice | No external data protection advice was obtained. |
| Next review | before any change to the AI provider, fallback endpoint, storage location, engine, question analysis, push, protected areas or new extensions; otherwise annually |
| Retention | dated versions in the project's version control |
Annex – Evidence (test benches)
The test benches are part of the project and run with every change. A green test bench verifies the tested behaviour, not the absence of every error.
| Commitment | Test bench |
|---|---|
| No content in the service's logs | antwort.js |
| Ephemeral mode leaves nothing in databases, Redis, journals and logs | fluechtig-answely-echt.js (marker word measurement on the server) |
| Truncated IP addresses, throttle only with hash | ip-kuerzung.js, drossel.js |
| Script without cookies, identifier and third-party requests | datenschutz-skript.js |
| AI only on endpoints on the EU allowlist | eu-endpunkte.js, answely-rechtstext.js |
| Job exchange and workers: signature, time limits, content-free logs | ki-boerse.js, eu-worker.js |
| Question analysis: masking, groups comprising at least 2 questions, only with "Allow answer cache" | frageanalyse.js |
| Consent mode | einwilligung.js |
| Deletion periods and deletion of the website | loeschlauf.js, account app test_loeschung.php |
| AI labelling cannot be switched off | ki-hinweis.js |
| Admin interface secured | api.js, admin-fern.js |
| Push and WordPress | push.js, push-oeffentlich.js, account app test_wordpress.php, test_wordpress_sync.php |
| Index release, copies, rollback, propagation of deletions | ultra-gate.js, ultra-wissen.js |
| Success and A/B: one-time tokens, withdrawal of consent | ultra-redis.js, ultra-client.js |
| Live API, source preview, rule advisor | ultra-api.js, ultra.js |
| Answer tests without texts in the report | antwort-tests.js |
| MCP access | mcp.js |
| Quick check | schnellcheck.js, account app test_schnellcheck.php |
| Protected areas, diagnosis, glossary, source rules | optimierung.js, optimierung-api.js, client-zugang.js |
| OCR locally with clean-up and abort | pdf-ocr-echt.js |
| Outage and overload | ausfall.js, zulassung.js, zulassung-http.js, last-echt.js |
| Backup and restore test | account app test_sicherung.php |
| Legal texts match the code | answely-rechtstext.js, account app test_rechtstexte.php |
Related documents: Record of Processing Activities, Privacy Policy, Data Processing Agreement, TOM, Sub-processors, AI Act.
Version 1.0 – as of 18.10.2026