Privacy Policy

Effective date: 2026-04-27 Last updated: 2026-06-09 Version: 1.0.4


1. Introduction

This Privacy Policy describes how CT Core (operated by Viktar Martavitski as a sole proprietorship registered with the Polish Central Registration and Information on Business — CEIDG) collects, uses, stores, and discloses Personal Data in connection with the Threadmaker product ("Threadmaker", the "Service"), which provides bidirectional synchronization of comments between Atlassian Jira Cloud and Slack workspaces.

This document is issued in accordance with Regulation (EU) 2016/679 ("GDPR"), the Polish Act on the Protection of Personal Data of 10 May 2018, and other applicable data protection laws.

2. Data Controller

Trading name CT Core
Full legal name Viktar Martavitski CT Core
Legal form JDG (Jednoosobowa Dzialalnosc Gospodarcza, Poland)
NIP (Tax ID) 9512543228
REGON 522272970
Registered address ul. Hoza 86/410, 00-682 Warsaw, Poland
Contact for privacy matters dpo@threadmaker.dev

CT Core acts as an independent Data Controller for account administration, billing, security, fraud prevention, operational telemetry, support, and compliance-related processing described in this Policy.

For customer content transmitted through the Service on behalf of customer organizations, and for customer-content synchronization metadata (including comment-mapping records) insofar as such metadata is required to provide the synchronization functionality requested by the Customer, CT Core generally acts as a Data Processor under the applicable Data Processing Addendum (see threadmaker.dev/dpa).

3. Categories of Data Subjects

Depending on how the Service is used, we may process Personal Data relating to the following categories of individuals:

The specific categories of Personal Data processed may vary depending on the nature of the interaction with the Service and the applicable processing context.

This Policy does not apply to data processed by Slack, Atlassian, or other third-party platforms except to the extent that data is transmitted to CT Core for processing.

4. Personal Data We Collect

4.1 Data collected at installation

Category Data Source
Workspace identity Slack workspace ID, Slack bot user ID, Slack team name (public) Slack OAuth
Authentication material Slack bot OAuth token (stored in Cloudflare D1 with platform-level AES-256 encryption at rest) Slack OAuth
Installing admin Name, Slack user ID, email (if disclosed by OAuth scope) Slack OAuth
Jira connection Jira site URL, Jira issue keys referenced in mapping Forge plugin configuration
Billing Atlassian account ID and seat count Atlassian Marketplace (for paid tiers)

Threadmaker does not store Jira API tokens. All Jira operations are executed by the Forge plugin running inside Atlassian's runtime under the customer's licensed tenant using api.asApp().requestJira(). CT Core never receives, holds, or transmits long-lived Jira credentials.

4.2 Data processed in transit (content)

When end users post messages in mapped Slack channels/threads or comments on mapped Jira issues, the Service temporarily processes:

Retention of content — message content is processed transiently for synchronization purposes and is not intentionally retained beyond the period reasonably necessary to complete delivery, retries, incident handling, or short-term operational recovery:

Internal table Purpose Retention
retry_queue Durable queue for delivery retries Completed entries: 7 days. Failed entries: 30 days then purged.
message_origins Echo-loop prevention flag Purged every 10 minutes (first successful read also deletes).
audit_log Who-did-what record for customer admins 90 days, then automatic deletion.
metric_events Operational metrics (no PII in tags) 30 days.
rate_limits Per-tenant request counters Rolling 1-hour window (auto-reset).
slack_users_cache Email → Atlassian accountId mapping for cross-system @mention rendering. Email addresses are used solely for cross-system user matching required to render mentions consistently between Slack and Jira; they are not used for marketing, profiling, or independent identity enrichment. Cache value refreshed on demand every 24 hours; row deleted 30 days after last refresh, OR immediately on workspace uninstall, OR within 30 days of an operator-handled data-subject erasure request.
admin_audit_log Internal CT Core staff access via tm-admin tool (§5) 2 years. Calibrated to GDPR Art. 28(3)(h) Sub-Processor accountability and the typical 12–18 month claim-emergence window for commercial disputes.
comment_map, issue_threads, channel_project_map, workspaces, comment_attachment_map, reaction_sync_map, project_settings Mapping, thread references, and per-tenant integration configuration For the lifetime of the install; deleted on uninstall or DSR via FK CASCADE on workspaces_local(id) (Class A tables) and direct DELETE on workspaces (Class C).
workspace_deletions Compliance tombstone (workspace ID + deletion timestamp + DSR ticket reference if any; NO content or PII beyond operator email of requestor) Retained for as long as reasonably necessary to demonstrate compliance with deletion obligations and defend against legal claims.
workspace_suppression_markers Internal rate-limit marker for Sentry capture of stray-retry suppression events (workspace ID + most-recent capture timestamp; NO content). Records the fact that we previously captured ONE Sentry observation about a customer's reinstall race, so we don't capture the same observation again within the same 24-hour window. 30 days since the most-recent capture; daily 03:30 UTC purge.
Cloudflare R2 backup snapshots Daily AES-256-GCM-encrypted full-database snapshot. Customer data is encrypted at the application layer with a Processor-controlled key never written to R2 metadata. 90-day rolling retention in production / 30-day in staging. Article 17 erasure requests are satisfied within the rolling window per GDPR Recital 65 (no per-snapshot erasure; backup naturally rotates out within the SLA).

Attachments are not persisted after delivery completes; failed deliveries drop the file reference after 30 days.

4.3 Operational logs

Cloudflare Workers produce request logs (source IP, user agent, response code, path) used for security and abuse detection. These logs are retained by Cloudflare for up to 7 days and are not cross-referenced with content.

5. How We Use Personal Data

Purpose Legal basis (GDPR Art. 6)
Provide the synchronization service the customer contracted for Art. 6(1)(b) — performance of a contract
Maintain service security, integrity, fraud detection, rate limiting Art. 6(1)(f) — legitimate interest
Incident investigation, support response, abuse review, and security analysis via the tm-admin operator portal (per-tenant /triage monitoring view; pseudonymous actor identifiers masked by default with audited reveal-on-click; per-tenant time-bounded debug-logging toggle that may transiently surface message text for diagnosis — auto-disables after at most 60 minutes; every operator access logged in admin_audit_log with 2-year retention) Art. 6(1)(f) — legitimate interest
Comply with tax, accounting, marketplace audit obligations Art. 6(1)(c) — legal obligation
Send transactional emails (billing, outage notifications, policy updates) Art. 6(1)(b) — performance of a contract
Send occasional product announcements to admin contacts Art. 6(1)(f) — legitimate interest; one-click opt-out in every email, where permitted under applicable electronic communications laws
Engage in legal disputes or enforce agreements Art. 6(1)(f) — legitimate interest

We do not, and do not permit any sub-processor to, use Customer Data, content messages, or attachments for AI / ML — including to train, fine-tune, or evaluate foundation models, retrieval indexes, or recommender systems — or for advertising, profiling, automated decision-making, or any purpose other than synchronization.

5.1 Operator-side data minimization (v1.4.1)

The tm-admin portal applies pseudonymization at the display layer for personal data shown to CT Core internal staff:

These controls are defense-in-depth measures, not anonymization in the GDPR sense — the underlying data remains in scope of this Policy and the customer's DPA. They reduce the blast radius of an operator account compromise and the temptation of casual staff browsing without legitimate need.

6. Data Sharing and Sub-processors

Access to Customer Data is limited to authorized personnel and contractors who require such access for support, security, maintenance, operational, or legal-compliance purposes and who are bound by written confidentiality obligations consistent with GDPR Art. 28(3)(b) and appropriate security measures.

We share data with the following sub-processors strictly as required to deliver the Service:

The table below distinguishes parties engaged by CT Core as Sub-processors (we contract them, instruct them, and pay them) from host platforms that the Customer is independently contracted with (Slack, Atlassian) — these are listed for transparency and to disclose the data flow, but CT Core does not engage them as Sub-processors and the Customer's primary contract with each platform governs.

Party Engagement Processing activity Location Transfer mechanism
Cloudflare, Inc. — Workers Engaged by CT Core as Sub-processor Edge compute (request handling, OAuth callbacks, slash-command and event ingest, cron triggers) United States, region wnam (Western North America) EU-US Data Privacy Framework (DPF) + 2021 SCCs Module 2 (layered)
Cloudflare, Inc. — D1 Engaged by CT Core as Sub-processor Primary tenant database (workspaces, channel-project mappings, comment_map, issue_threads, retry_queue, slack_users_cache, audit_log, etc.). Cloudflare-managed SQLite with platform AES-256 encryption at rest. United States, region wnam EU-US DPF + SCCs Module 2
Cloudflare, Inc. — KV (TENANT_SHARDS) Engaged by CT Core as Sub-processor Shard-routing lookup cache (workspace_id → shard binding); no message content; cache lifetime measured in seconds United States (replicated edge cache) EU-US DPF + SCCs Module 2
Cloudflare, Inc. — R2 Engaged by CT Core as Sub-processor Daily AES-256-GCM-encrypted full-database snapshot (90-day rolling retention production / 30-day staging) United States, region wnam (same Cloudflare account / DPA as Workers and D1) EU-US DPF + SCCs Module 2
Cloudflare, Inc. — Cloudflare Access Engaged by CT Core as Sub-processor Zero-Trust SSO gateway for the operator-only admin portal tm-admin (no Customer access; Customer Data not exposed via this surface) United States EU-US DPF + SCCs Module 2
Functional Software, Inc. (Sentry) Engaged by CT Core as Sub-processor Error reporting (scrubbed payloads — workspace identifiers, severity tags, operational metadata — only; Sentry payloads are configured and designed to exclude message bodies, comment text, and authentication credentials) United States EU-US DPF; SCCs fallback
Atlassian, Inc. — Marketplace billing Engaged by CT Core narrowly, as the channel through which Customer pays for paid tiers Payment-processor role (Atlassian collects subscription fees and remits to CT Core net of Atlassian's revenue share) Atlassian-managed; tenant-region-dependent Atlassian Customer Agreement + Atlassian DPA
Atlassian, Inc. — Forge plugin runtime Host platform. CT Core does not engage Atlassian as a Sub-processor for runtime; the Customer's primary Atlassian Cloud Terms / Atlassian DPA govern. Hosts the Threadmaker Jira plugin inside the Customer's licensed Atlassian tenant; Jira data does not leave Atlassian's infrastructure Atlassian-managed; tenant-region-dependent Customer's existing Atlassian contract governs
Slack Technologies LLC (Salesforce) Host platform. CT Core does not engage Slack as a Sub-processor; the Customer's primary Slack Customer Terms / Slack DPA govern. Source and sink for synced message data via the OAuth grant the Customer's workspace administrator provided Salesforce-managed Customer's existing Slack contract governs

Threadmaker does not sell, rent, or exchange Personal Data with any other party. We do not use third-party analytics, advertising networks, or trackers on the public site.

Cookies. The public website and the Service use only a single strictly-necessary cookie: a short-lived (10-minute), HttpOnly CSRF-protection token set during the Slack OAuth installation flow and scoped to that callback path. We set no analytics, advertising, profiling, or cross-site tracking cookies, and we use no third-party tracking technologies. Because the only cookie is strictly necessary to perform a security function you request (secure installation), no consent banner is required under the ePrivacy Directive as implemented in Polish law (Prawo telekomunikacyjne).

The current list of sub-processors is mirrored at threadmaker.dev/privacy/subprocessors and updated at least 30 days before a change takes effect.

7. International Data Transfers

The Controller acknowledges that Stored Operational Metadata, authentication artifacts, and limited diagnostic data may be transferred to and processed in the United States by CT Core's infrastructure and monitoring Sub-processors, including Cloudflare, Inc. and Functional Software, Inc. d/b/a Sentry. The primary Cloudflare D1 database region is wnam (Western North America, United States); EU and UK customer data therefore leaves the European Economic Area.

For such transfers, the parties rely on the following layered mechanisms:

  1. EU-US Data Privacy Framework. Where the relevant Sub-processor maintains an active certification under the EU-US Data Privacy Framework, the UK Extension to the EU-US Data Privacy Framework, or the Swiss-US Data Privacy Framework, the parties rely on that certification to the extent applicable (Commission Decision C(2023) 4745 of 10 July 2023; GDPR Art. 45).
  2. Standard Contractual Clauses. Where the Data Privacy Framework is unavailable, invalidated, challenged, or insufficient for a particular transfer, Module Two of the EU Standard Contractual Clauses is incorporated by reference and completed as set out in the DPA.
  3. UK data. For transfers subject to the UK GDPR, the UK Addendum to the EU Standard Contractual Clauses applies.
  4. Swiss data. For transfers subject to the Swiss FADP, the Swiss-specific modifications to the EU Standard Contractual Clauses apply.

Technical measures additionally protect transferred data: encryption at rest (D1 storage encryption), encryption in transit (TLS 1.2+), HMAC-signed internal service-to-service calls, and least-privilege OAuth scopes. Customers who require EU-resident data processing may contact us; bespoke regional deployment is available on enterprise terms.

8. Data Retention

See Section 4.2 for category-level retention schedules. At a glance:

9. Your Rights under GDPR

Data subjects in the EU/EEA/UK have the following rights. Customers outside the EU/EEA/UK should consult their local data-protection regulator; we apply the same operational measures globally.

Right How to exercise
Right of access (Art. 15) dpo@threadmaker.dev
Right to rectification (Art. 16) dpo@threadmaker.dev
Right to erasure — "right to be forgotten" (Art. 17) dpo@threadmaker.dev
Right to restriction (Art. 18) dpo@threadmaker.dev
Right to data portability (Art. 20) dpo@threadmaker.dev — we export your workspace mapping in JSON
Right to object (Art. 21) dpo@threadmaker.dev
Right not to be subject to automated decision-making (Art. 22) We may use automated systems and tools to support the operation, security, moderation, analytics, and functionality of the Service. However, we do not make decisions based solely on automated processing that produce legal effects or similarly significant effects on individuals within the meaning of Article 22 GDPR.

We will respond to a verified DSR within one calendar month. Complex or multiple requests may be extended by two further months with notice.

Right to complain

You may lodge a complaint with your local data-protection supervisory authority. In Poland:

Prezes Urzedu Ochrony Danych Osobowych (UODO) ul. Stawki 2, 00-193 Warsaw https://uodo.gov.pl

9.1 Additional Information for California Residents

If you are a resident of California, the California Consumer Privacy Act, as amended by the California Privacy Rights Act ("CCPA"), may provide you with certain rights regarding your Personal Information.

Your California privacy rights. Subject to applicable law and certain exceptions, California residents may have the right to:

Exercising your rights. Contact dpo@threadmaker.dev. We may need to verify your identity before processing your request, and you may designate an authorized agent to submit a request on your behalf, subject to applicable verification requirements.

"Shine the Light" (Cal. Civ. Code § 1798.83). We do not disclose Personal Information to third parties for their own direct-marketing purposes.

10. Security

We implement technical and organizational measures appropriate to the risk, including:

No security model is perfect. In the event of a personal-data breach likely to result in risk to affected individuals, we will notify the competent supervisory authority within 72 hours (GDPR Art. 33) and affected data subjects without undue delay.

We maintain an internal Record of Processing Activities under GDPR Art. 30 and make a redacted version available to controllers under NDA on written request.

11. Eligibility

Threadmaker is a B2B service. Access is granted exclusively through a Slack workspace or Jira site administered by an employer or organisational entity that has agreed to the upstream Slack Customer Terms of Service or Atlassian Cloud Terms of Service. Those upstream agreements require the workspace administrator to be of majority age in their jurisdiction and to ensure that authorised end users are of working age. CT Core does not provide self-serve consumer signup, does not contract directly with end users, and does not perform separate age verification.

Where statutory age limits apply to data subjects' consent capacity (e.g. GDPR Art. 8 as implemented in Poland by the Polish Data Protection Act of 10 May 2018, Art. 4 — age 16), CT Core relies on the upstream platforms' admin onboarding and acceptable-use controls to enforce them.

12. Changes to this Policy

We will publish any material change to this Policy at threadmaker.dev/privacy at least 30 days before it takes effect. Trivial clarifications (typo fixes, contact updates) may be published without prior notice and will be reflected in the "Last updated" date above.

13. Contact


CT Core is the trading name of Viktar Martavitski, NIP 9512543228, a Polish JDG operating under Polish commercial law. This document does not create any rights not granted by applicable law.