Torsten Labs DOO · poolse
Privacy Policy
What personal data we handle, why, on what legal basis, who receives it, and the rights you can exercise.
This policy explains what personal data we handle when you visit poolse.dev, open the public chat demo, use the customer dashboard, buy a paid plan, or contact us — and what you can do about it.
It is written to satisfy the EU General Data Protection Regulation (GDPR), the UK GDPR, the Swiss Federal Act on Data Protection (revFADP), the Law on Personal Data Protection of the Republic of North Macedonia (LPDP), and the US state privacy laws listed in § 13. Where those rules differ, we apply the stricter one rather than splitting our behaviour by geography.
Who you are dealing with
- Legal name
- Torsten Labs DOO
- Legal form
- Друштво со ограничена одговорност (DOO) — a private limited liability company
- Registered seat
- Ilindenska 335, 1200 Tetovo, North Macedonia
- Registry
- Central Registry of the Republic of North Macedonia
- Company number
- 7609906
- Tax number
- 4028022548170
- VAT number
- 4028022548170
- Company contact
- [email protected]
- Telephone
- +389 70 528 685
- General enquiries
- [email protected]
- Product support
- [email protected]
- Billing
- [email protected]
- Privacy contact
- [email protected]
- Legal notices
- [email protected]
- Security reports
- [email protected]
poolse is a product of Torsten Labs. “poolse”, “we”, “us”, and “our” in this document all mean Torsten Labs DOO.
1. The two roles we play
poolse is infrastructure other companies build on. That means we handle personal data in two very different capacities, and almost every question about your data has a different answer depending on which one applies.
We are the controller for data about our own relationship with you: your dashboard account, your billing record, the emails you send us, and the browsing you do on poolse.dev. We decide why and how that data is processed, and this policy governs it end to end.
We are a processor for the chat data that flows through a customer's tenant — the messages, attachments, display names, and end-user identifiers that a customer's application sends us. Our customer decides what to collect and why; we only act on their instructions, under the Data Processing Addendum. If you are an end user of an app built on poolse, we are not the right place to start: contact the company whose app you are using, because they hold the relationship and the decisions. We will help them respond, and we will forward a request that reaches us by mistake.
2. What we collect, and where it comes from
2.1 Data you give us
| What | Where it comes from | Notes |
|---|---|---|
| Account data — email address, name, password hash, profile image | Dashboard sign-up | The password is stored only as a bcrypt hash. We never hold the plaintext. |
| Federated sign-in data — email, name, avatar URL, provider account id | Google or GitHub, if you choose that button | We receive these from the provider. We do not post anything back or read anything else from your account. |
| Organisation and tenant data — workspace name, plan, API key names and prefixes | Dashboard use | Only the prefix of an API key is stored; the secret half is hashed and unrecoverable. |
| Billing data — billing name, address, country, tax identifiers, purchase, payment and refund history | You, when you apply for a paid plan and pay our invoice (or, once self-serve checkout opens, through the Lemon Squeezy checkout) | Card numbers never reach us. See § 5. |
| Support and enquiry data — your name, email, and whatever you write in the contact or Pro application form | The forms on poolse.dev, or a direct email | |
| Webhook endpoints, integration settings | Dashboard use | Endpoint URLs can themselves be personal data if they contain identifiers. |
2.2 Data we generate or observe
| What | Purpose it serves |
|---|---|
| Server and access logs — IP address, timestamp, request path, method, status code, user agent, referrer | Serving the request, security monitoring, abuse and rate-limit enforcement, debugging |
| Authentication and account events — sign-ins, failed sign-ins, password changes, email verification, sessions | Account security and fraud prevention |
| Audit log entries — actor, action, target, timestamp for actions inside a tenant | Giving customers the compliance trail the product promises |
| Usage counters — monthly active users, call minutes, message volume, storage consumed, webhook deliveries | Enforcing plan limits and billing correctly |
| Cookie and local-storage identifiers | See the Cookie Policy |
2.3 Data our customers send us (we are the processor)
Message bodies, attachments, reactions, read state, presence, typing
signals, display names, avatar URLs, and the external_id a customer
assigns to each of its end users. For calls: who called whom, when,
for how long and with what outcome, and the audio and video itself,
which passes through our media servers and is not recorded. For push
notifications: device push tokens, and the notification content, which
can include a message preview and is delivered through Apple and Google.
Our media and relay servers also see the IP addresses of the devices on
a call. What ends up in that set is the customer's decision, not
ours. We tell customers not to route special
categories of data (health, biometrics, political or religious views)
or payment card data through chat unless they have carried out their
own assessment and have a lawful basis for it.
2.4 What we deliberately do not collect
- No advertising identifiers, ad-network pixels, or cross-site tracking.
- No analytics product, session recorder, heat mapper, or A/B testing tool. There is nothing in the analytics category to consent to today, and if that changes we will name the provider in the Cookie Policy and ask first.
- No purchased marketing lists, data-broker enrichment, or scraped contact data.
- No biometric data, no precise geolocation, and no profiling that produces legal or similarly significant effects.
- No browsing of customer content. Message bodies are encrypted at rest under a per-tenant key, and our internal operator console has no code path that decrypts them; it sees counts and timestamps, never text. This is not end-to-end encryption: our servers hold the keys, so someone with production server access could technically read data. We look at customer content only where a customer asks us to, to handle an abuse report about specific content, or where the law requires it.
3. Why we process it, and on what legal basis
Under the GDPR and the LPDP, every purpose needs a legal basis. Ours:
| Purpose | Categories used | Legal basis |
|---|---|---|
| Creating and running your account; providing the API, SDKs, dashboard, and demo | Account, tenant, usage | Contract — GDPR Art. 6(1)(b). Without it we cannot give you the service you asked for. |
| Taking payment, issuing invoices, handling refunds and chargebacks | Billing | Contract, and legal obligation — Art. 6(1)(b) and (c) — for tax and accounting records. |
| Sending service email: verification, password reset, security alerts, material changes to these terms | Account | Contract, and legal obligation where a notice is required. Not marketing; you cannot unsubscribe from a security alert while you hold an account. |
| Answering your support message or Pro application | Support | Contract, or legitimate interests — Art. 6(1)(f) — where you are not yet a customer. Our interest is in replying to people who write to us; the impact on you is minimal and it is what you asked for. |
| Keeping the service secure: abuse detection, rate limiting, fraud prevention, investigating incidents | Logs, auth events, usage | Legitimate interests — Art. 6(1)(f). Our interest is in protecting the service and its users. We use the minimum data, keep it briefly, and never use it to build a profile of you. |
| Understanding and fixing failures; capacity planning | Logs, usage | Legitimate interests — Art. 6(1)(f), on aggregated data wherever aggregation answers the question. |
| Non-essential cookies and browser storage | See the Cookie Policy | Consent — Art. 6(1)(a) and Art. 5(3) of the ePrivacy Directive. Withdrawable at any time from the footer, with no effect on what happened before you withdrew. |
| Product announcements and other marketing email | Account contact | Consent where required, or legitimate interests in a business-to-business context under Art. 6(1)(f) and the soft opt-in in Art. 13(2) of the ePrivacy Directive. Every such email has a working one-click unsubscribe. |
| Processing chat content for a customer | Customer content | Not our decision — we act on the customer's documented instructions under Art. 28. The customer holds the legal basis. |
| Establishing, exercising, or defending legal claims; complying with a binding order | Any of the above, narrowly | Legal obligation or legitimate interests — Art. 6(1)(c) and (f). |
We do not use personal data for automated decision-making that produces legal or similarly significant effects, and we do not profile you within the meaning of Art. 22 GDPR. Automated rate limits and abuse thresholds do exist, but a human reviews any decision that would suspend or terminate an account.
4. Who receives it
We do not sell personal data, and we do not share it for cross-context behavioural advertising. Access inside the company is limited to the people who need it for the task in front of them. The operator console has no code path that decrypts message bodies.
Outside the company, data reaches only:
| Subprocessor | What it does for us | Data it can reach | Processing location | Transfer mechanism | In use since |
|---|---|---|---|---|---|
| Cloudflare, Inc.Customer content | Attachment object storage (R2), DNS, TLS termination, CDN, and denial-of-service protection for poolse endpoints. | Files and images your end users attach to messages; IP addresses and request metadata seen at the edge. | European Union (R2 EU jurisdiction restriction); global edge network for request routing | EU Standard Contractual Clauses + UK Addendum, incorporated by the Cloudflare Data Processing Addendum | 2026-08-19 |
| Oracle (Oracle Cloud Infrastructure)Customer content | Virtual server and block storage running the poolse application, database, background workers, and the call media server. | All data stored by the service. Message bodies, webhook secrets and push credentials are encrypted at rest under a per-tenant key held by poolse. Oracle provides the infrastructure only and does not access customer data in normal operation. | Germany — Oracle Cloud region eu-frankfurt-1 (Frankfurt am Main, EU) | Data stays in the EU region; EU Standard Contractual Clauses in the Oracle Services Data Processing Agreement for any support access from outside the EEA | 2026-10-26 |
| Apple Inc. (APNs) and Google LLC (Firebase Cloud Messaging)Customer content | Delivery of the push notifications your app receives from poolse: incoming-call rings, chat notifications, missed calls and read sync. Sent with the APNs key and Firebase service account you upload, under your own developer accounts. | Device push tokens and the notification payload, which can include the sender name, conversation name and a message preview, depending on your notification settings. | United States and global infrastructure | EU–U.S. Data Privacy Framework and EU Standard Contractual Clauses under Apple’s and Google’s developer terms | 2026-08-19 |
| Lemon Squeezy, LLCAccount & billing data | Merchant of Record for self-serve checkout: payment processing, fraud screening, sales-tax and VAT determination, invoicing, and refunds. Not yet live: while checkout is not open, paid plans are invoiced by Torsten Labs directly and Lemon Squeezy receives no data. | Billing name, email, billing address, country, tax identifiers, purchase history, and payment-method metadata. Full card numbers are handled by Lemon Squeezy and its PCI-DSS certified processors and never reach poolse systems. | United States, with processing by its own payment partners | EU Standard Contractual Clauses under the Lemon Squeezy Data Processing Addendum | 2026-08-19 |
| Resend, Inc.Account & billing data | Delivery of transactional email — address verification, password resets, security alerts, and replies to messages you send us. | Recipient email address, message subject and body, and delivery metadata. | United States and European Union | EU Standard Contractual Clauses under the Resend Data Processing Agreement | 2026-08-19 |
| Zoho Corporation B.V.Account & billing data | Email mailboxes for the addresses we publish (hello@, support@, sales@, billing@, security@, privacy@, legal@): the correspondence you and your users send us. | Sender name and email address, and whatever the email contains, including anything you choose to forward to us. | European Union (Zoho EU data centres) | Data stays in the EU data centres; EU Standard Contractual Clauses in the Zoho Data Processing Addendum for any access by Zoho group support outside the EEA | 2026-10-28 |
| Telegram FZ-LLCOperational metadata | Delivery of internal operational alerts to the poolse on-call channel (for example, a failed webhook delivery in the public demo). | Event metadata only — event type, tenant and conversation identifiers, timestamps. Message bodies are never included in an alert. | United Arab Emirates and global infrastructure | EU Standard Contractual Clauses; alerts are configured to exclude content and direct identifiers | 2026-08-19 |
Each subprocessor is bound by a written contract meeting Art. 28(3) GDPR, is limited to the purposes above, and is assessed before being engaged. The current list is maintained at /legal/subprocessors; customers can subscribe to change notices under the DPA.
Other recipients, which are not subprocessors:
| Recipient | Relationship and what they receive |
|---|---|
| Google LLC / GitHub, Inc. | Identity providers, only if you choose to sign in with Google or GitHub. They tell us your email address, name, and profile image; we tell them nothing about your poolse usage. Each acts as an independent controller for the sign-in itself. |
| Professional advisers and authorities | Accountants, auditors, and lawyers under a duty of confidentiality; and courts, tax authorities, or law-enforcement bodies where a legally binding request requires it. |
| A successor entity | If poolse or Torsten Labs is merged, acquired, or has assets transferred, data moves with the service. You will be told before any transfer changes who controls your data, and the receiving party stays bound by these commitments. |
5. Payments and the Merchant of Record
Today, paid plans are invoiced directly by Torsten Labs DOO. When you apply for a paid plan we activate it by hand and send an invoice. We keep the billing data that requires — name, billing address, country, tax identifiers, invoices and payments — as the controller, for as long as tax and accounting law requires (see § 7). We never receive or store card numbers.
When self-serve checkout opens, it will be run by Lemon Squeezy, LLC as our Merchant of Record and authorised reseller. For purchases made there, your purchase contract for the transaction is with Lemon Squeezy: it takes the payment, determines and remits sales tax and VAT, issues the invoice, and handles refunds and chargebacks. For that transaction it is an independent controller, and its privacy notice governs it. The checkout runs on Lemon Squeezy's infrastructure, so your card number never touches our systems; we receive back only your billing email, country, plan, subscription status, invoice references, and the last four digits and brand of the card for display.
6. International transfers
Torsten Labs DOO is established in North Macedonia. The European Commission has not issued an adequacy decision for North Macedonia under Art. 45 GDPR. We say that plainly because a policy that glosses over it is not much use to a buyer doing diligence.
For personal data coming from the EEA, the UK, or Switzerland:
- Where a customer in those regions sends us end-user data, the transfer to us as processor is covered by the EU Standard Contractual Clauses (Commission Implementing Decision (EU) 2021/914), Module Two (controller to processor), incorporated into our DPA, together with the UK International Data Transfer Addendum and the Swiss adaptations where those regimes apply.
- Where we onward-transfer to a subprocessor, Module Three (processor to processor) applies, and each subprocessor is bound by terms no less protective than ours.
- Where a subprocessor is outside the EEA, we rely on the transfer mechanism named for it in the subprocessor list (the EU–U.S. Data Privacy Framework or the Standard Contractual Clauses), and we apply supplementary measures: message bodies encrypted at rest under per-tenant keys we hold, TLS on every external connection, minimisation of what leaves the primary region, and the request policy under which we challenge overbroad government access requests and tell the affected customer unless legally forbidden.
- The application servers and the database run in Frankfurt, Germany (Oracle Cloud, region eu-frankfurt-1). Attachments are stored in Cloudflare R2, which is not restricted to the EU, so Cloudflare may store them in another region.
You may request a copy of the clauses we rely on, with commercial terms redacted, at [email protected].
Representative in the EU
No representative designated
poolse is available worldwide and is not directed at any particular market. We do not market in an EU language other than English, price in euro, or offer EU-specific plans, and we have not designated a representative under Art. 27 GDPR. Should that change, we will appoint one and name it here.
None of that limits your rights. Where the GDPR applies to a customer's use of poolse, we meet our obligations as processor under the Data Processing Addendum, and anyone may raise a data protection matter with us directly at [email protected].
7. How long we keep it
| Data | Retention | Why |
|---|---|---|
| Dashboard account and organisation records | For the life of the account. Deleted immediately when you confirm account deletion, together with every workspace it owns | Deletion is a deliberate, confirmed step, so there is no grace period |
| Customer chat content (as processor) | For as long as the customer's workspace exists. On deletion, the rows and attachment objects are purged and the workspace's encryption key is destroyed, so no remaining copy in the live system can be decrypted | Destroying the key backs up the row deletion |
| Call records (as processor) | For as long as the customer's workspace exists. Call audio and video are never recorded or stored | Call history in the customer's app |
| Device push tokens (as processor) | Until the customer's app replaces or unregisters it, or Apple or Google reports it invalid | Needed to deliver notifications |
| Webhook delivery records, including their payloads | 30 days | Delivery history and replay; payloads contain message text |
| Attachments | Deleted with their message or workspace. Uploads that are never attached to a message are deleted after 24 hours | Storage hygiene |
| Server and access logs | A fixed-size rotating buffer per service (at most 100 MB), so old entries are overwritten as new ones arrive; at current volume that is normally a few weeks | Enough to investigate an incident, not enough to become a surveillance archive |
| Audit log entries inside a workspace | For the life of the workspace | The customer's compliance record, not ours |
| Billing records, invoices, and tax documentation | 10 years from the end of the financial year | Mandatory retention under North Macedonian accounting and tax law; we cannot delete these on request |
| Support correspondence | Up to 24 months from last contact; we review and delete older mail at least once a year | Context for recurring issues |
| Abuse reports and requests from authorities | 3 years after the case is closed | To show what we were told and what we did |
| Cookie consent records | 12 months, matching the cookie's life | Proof of what you consented to, for as long as the consent stands |
| Backups | Nightly database backups, each kept 35 days, then deleted | A deletion is applied to live systems at once; until the backups taken before it age out, the deleted data still exists in them. Backups are never restored to reverse a deletion |
Where we are required to keep something longer — a legal hold, an open dispute, a regulatory request — we keep only what that specific obligation requires and delete the rest on the normal schedule.
8. How we protect it
- Encryption at rest. Message bodies, webhook signing secrets and push credentials are encrypted with AES-256-GCM under a Data Encryption Key unique to the workspace, which is itself wrapped by a master key (envelope encryption). Other data is stored without application-level encryption, including display names, conversation names, a short preview of the latest message, call records, webhook delivery payloads and attachments; the encryption docs list exactly what is and is not encrypted. This is not end-to-end encryption: our servers hold the keys and decrypt data to serve it.
- Encryption in transit. HTTPS and WSS only on every external connection, with HSTS. Plain HTTP is redirected, never served. Traffic between our own services stays inside one server's private network.
- Credential handling. Passwords are bcrypt-hashed. API keys are stored as a keyed hash (HMAC-SHA256) plus a display prefix; the secret half exists only in the response that created it. Browser clients never receive a long-lived API key; they get short-lived tokens minted server-side.
- Separation of duties. The operator console reads metadata only. Its inability to reach message text is enforced at the module boundary and covered by a regression test.
- Signed webhooks. Deliveries are HMAC-SHA256 signed over a timestamped payload with a five-minute replay window, so you can verify that what arrived came from us.
- Access control. The operator console needs a password and a one-time code sent by email. The servers accept SSH keys only, with no password or root login, and a firewall that denies everything not explicitly opened.
- Resilience. Nightly database backups kept for 35 days, and rate limiting at the edge.
No system is perfect, and we will not pretend otherwise. If a personal data breach occurs, we notify the competent supervisory authority within 72 hours of becoming aware where Art. 33 GDPR requires it, notify affected individuals without undue delay where the risk is high, and notify affected customers without undue delay in every case so they can meet their own obligations. Report a suspected vulnerability to [email protected]; we will not pursue legal action against good-faith security research that follows the disclosure policy.
9. Your rights under the GDPR, UK GDPR, revFADP, and the LPDP
You can ask us to:
- Access — confirm whether we process data about you and get a copy, with the information in this policy.
- Rectify — correct anything inaccurate or complete anything incomplete.
- Erase — delete data where Art. 17 applies, subject to the retention obligations in § 7.
- Restrict — pause processing while an accuracy or objection dispute is resolved.
- Port — receive the data you gave us in a structured, commonly used, machine-readable format, or have it sent directly to another provider where technically feasible. Customers can read their workspace's conversations and messages at any time through the API.
- Object — object to processing based on legitimate interests, including profiling. We stop unless we can show compelling legitimate grounds that override your interests. Where the objection is to direct marketing, we stop without qualification and without asking why.
- Withdraw consent — at any time, as easily as it was given. Cookie choices are changed from the footer link on every page. Withdrawal does not affect processing that already happened.
- Not be subject to automated decisions producing legal or similarly significant effects. We do not make any.
How to exercise them. Email [email protected] from the address on your account, or write to the registered seat above. We respond within one month, extendable by two further months for genuinely complex requests, in which case we tell you within the first month and explain why. There is no charge unless a request is manifestly unfounded or excessive, and we will explain before charging anything. If we cannot identify you from what you have sent, we will ask for what we need — and no more.
Account holders can act directly. Your dashboard lets you edit your profile and delete your account, and every workspace it owns, without asking us first. Deletion is immediate.
Complaints. Tell us first if you can — most issues are a misunderstanding we can fix the same day. You always keep the right to complain to a supervisory authority: the Agency for Personal Data Protection of the Republic of North Macedonia, or, in the EEA, the authority in your country of residence, place of work, or where the alleged infringement occurred. In the UK it is the Information Commissioner's Office; in Switzerland, the Federal Data Protection and Information Commissioner.
10. Marketing communications
We send product and company email only to people who asked for it, and to existing customers about products similar to what they already use, which is permitted under the ePrivacy soft opt-in. Every message has a one-click unsubscribe that works immediately and does not require you to sign in. Unsubscribing never affects service email — verification, password resets, billing notices, and security alerts continue for as long as you hold an account, because they are part of the service and not marketing.
11. Children
poolse is a business tool. The dashboard is not directed at children, and you must be at least 16 — or 18 where local law sets that as the age to enter a contract — to create an account. We do not knowingly collect personal data from children. If you believe a child has given us data, write to [email protected] and we will delete it.
If you build a product on poolse that is directed at children, that is your call and your responsibility: you must obtain any parental consent your law requires (COPPA in the United States, Art. 8 GDPR in the EU, and their equivalents) before routing a child's data through our service. Our Acceptable Use Policy is part of that obligation.
12. Cookies and similar technologies
Covered in full, cookie by cookie, in the Cookie Policy. The short version: strictly necessary cookies keep you signed in, protect our forms, and remember your choice; nothing else is set unless you switch it on; and you can change your mind at any time.
We honour the Global Privacy Control signal. If your browser sends it, we treat that as a refusal of every optional category and as an opt-out of any sale or sharing of personal data.
13. Your rights in the United States
If you live in California, Colorado, Connecticut, Virginia, Utah, Texas, Oregon, Montana, or another state with a comprehensive privacy law, you have rights to know, access, correct, delete, obtain a portable copy, and opt out of sale, sharing, targeted advertising, and significant profiling. You also have the right not to be discriminated against for exercising them — we do not offer financial incentives for data and we do not degrade the service for anyone who says no.
The disclosures those laws require:
- We do not sell personal information, and we have not in the preceding 12 months.
- We do not share personal information for cross-context behavioural advertising, and we have not in the preceding 12 months.
- We do not use or disclose sensitive personal information for any purpose beyond what CCPA § 7027(m) permits without a right to limit. We do not collect it for the dashboard at all.
- We do not knowingly sell or share the personal information of anyone under 16.
- The categories we collect, the purposes, the sources, and the recipients are set out in § 2, § 3, and § 4. Retention is in § 7.
To exercise a right, email [email protected]. We confirm receipt within 10 business days and respond within 45 days, extendable once by a further 45 days with notice. An authorised agent may act for you with written permission that we can verify. If we refuse, we say why, and you may appeal by replying to that decision with the word "appeal"; we answer an appeal within 45 days and, if we still refuse, tell you how to contact your state Attorney General.
For California residents specifically: where we handle your data on behalf of a business customer, we act as a service provider under the CCPA, and we neither retain, use, nor disclose that information outside the direct business relationship or for any commercial purpose other than performing the service.
14. Changes to this policy
We update this policy when the service or the law changes. Every version carries a number and an effective date at the top, and we keep the previous versions available on request.
For a change that materially affects you, we give notice at least 30 days in advance by email to account holders and by a notice on the site — and where the change means we would rely on your consent, we ask for it rather than assume it. Minor clarifications take effect on publication.
15. Contact
| Reason | Address |
|---|---|
| Privacy, data protection, and rights requests | [email protected] |
| Security vulnerabilities | [email protected] |
| Legal notices and DPA signature requests | [email protected] |
| Everything else | [email protected] |
Postal mail reaches us at the registered seat listed at the top of this page. We are below the thresholds in Art. 37 GDPR and Art. 41 LPDP that make appointing a Data Protection Officer mandatory, so the contact above is a designated privacy contact rather than a formally appointed DPO — we would rather tell you that than imply an office we have not created.