Privacy Policy

HookDoc collects and processes only the minimum personal data required to operate the Service. This policy applies both to senders (signed-in users) and reviewers (anonymous visitors), and explains what we collect, why, where it lives, how long we keep it, and how you exercise your rights.

1. What we collect

At sender sign-up: via Google OAuth we collect your email, name, profile picture URL, and Google account subject ID. No passwords are stored.

For reviewer visits we collect no name or email. Instead we store the `viewer_session_{reviewId}` cookie (32-byte random Base64URL) and the SHA256 hash of a visitor ID generated by the open-source FingerprintJS. IP addresses are stored only as SHA256-hashed /24 (IPv4) or /64 (IPv6) subnets, and the raw User-Agent is never stored (only the parsed browser/os plus a SHA256 hash).

2. Purposes

We use the collected data to: (a) identify and authenticate accounts, (b) distinguish reviewer sessions (detect the same device returning), (c) filter bots and scrapers, (d) compute the review signals (page dwell, outcomes) we surface back to senders, and (e) respond to security incidents.

Under GDPR Recital 26, anonymized reviewer data (cookie ID + fingerprint hash + subnet hash) is treated as re-identification-resistant statistical data. We do not sell data to third parties for marketing without explicit consent.

3. First-party analytics and session replay

HookDoc does not use any third-party analytics SDK of any kind. Page dwell, clicks, scroll, and other review signals are written directly to our own event log (`document_events`), and — where relevant — an rrweb-based session replay is stored in our Cloudflare R2 bucket and shown only to the sender.

As a result, reviewer data never leaves to a third-party domain, and all data stays in the storage locations named in §4.

4. Storage locations

Uploaded PDFs, page images, thumbnails, and annotated PDF derivatives are stored in Cloudflare R2. Storage and processing locations follow the Cloudflare R2 bucket configuration and Cloudflare's data location policy. Database records (users, document metadata, comments, event log) are stored in Supabase Postgres, with the actual region determined by the operational Supabase project configuration.

Original PDFs are never used for third-party AI training, and only the HookDoc operator has direct access.

5. Retention and deletion

Documents deleted via the Danger Zone are hard-deleted from R2 immediately (not recoverable). Database rows are soft-deleted for 30 days for audit, then background cleanup fully removes them.

Account deletion applies the same policy to every document and workspace you own. The event log (`document_events`) is the basis of review outcome evidence and is removed together with the document's hard delete.

6. Your rights (GDPR / Korean PIPA)

You have the right to access, correct, delete, restrict, and object to processing of your data. The fastest path is the "Permanently delete account" button in `/app/settings`.

For anything not supported by self-service — a data copy request (Right to Access), correcting specific fields, or deleting reviewer sessions for a specific document — email us and we will reply within 7 business days with the outcome.

7. Cookies and local storage

Essential cookies: `viewer_session_{reviewId}` (reviewer session), `sb-*` (Supabase sign-in session), `NEXT_LOCALE` (language preference). These are required for the Service to function and are used regardless of consent.

Optional cookies and third-party analytics cookies are not used at this time. The Cookie Policy page contains the full inventory.

8. Payment processing (for paid plans)

During the beta period, HookDoc does not enable paid billing. If a paid plan is introduced in the future, payments will be processed through a PCI DSS compliant Merchant of Record (MoR) such as Polar.sh, and HookDoc servers will not store credit card numbers or payment details.

This policy will be updated in advance once a payment processor is confirmed.

9. Children's privacy

The Service does not permit users under 14. Accounts suspected of belonging to a user under 14 will be removed after prior notice.

10. Policy changes

We notify you at least 7 days in advance by email or in-service notice when this policy changes. Material changes (new collection categories, third-party recipients) trigger a 30-day notice period and re-consent.

Recipient (Reviewer) data processing

This section describes how we process data about anonymous reviewers — anyone who opens a document via a shared link. Sender (signed-in customer) processing is described in §1 through §10 above; this section applies only to the automatic, recipient-side processing.

Collection categories

When a reviewer opens a review page, HookDoc collects pseudonymous/hashed session identifiers and review activity data to provide review signals to the sender.

Collected items: the `viewer_session_{reviewId}` cookie (a 32-byte anonymous token), an irreversible fingerprint hash, SHA256 hashes of the IP address truncated to a /24 (IPv4) or /64 (IPv6) subnet, normalized browser family · OS family · device type, per-page dwell time / clicks / scroll events, rrweb-based mouse coordinates, comment bodies (only if the reviewer types one), and (when an email gate is enabled by the sender) the email address the reviewer enters.

Raw IP addresses, raw User-Agent strings, full browser versions, and raw keystrokes are never stored. Password and email input fields, and the comment composer's text area while the reviewer is typing, are automatically masked and never recorded.

These identifiers are not asserted to be irreversibly anonymized data; they are classified as pseudonymous/hashed session identifiers. The sender never sees raw identifiers — only anonymous labels (e.g., "1st Reviewer").

Purposes

(a) Provide review signals to the sender, (b) filter bots and scrapers, (c) respond to security incidents and improve service quality. We do not process recipient data for advertising, marketing, or third-party sale.

Legal basis

Korea: legitimate interest under Article 15(1)(7) of the Personal Information Protection Act — limited to processing reasonably necessary to deliver the core Service (review signals), with reviewer data identifiable only via anonymous hashes to minimize impact on the data subject's rights.

United States: legitimate business purpose (CCPA §1798.140(e) business purpose definition + §1798.100(b) reasonably-necessary-and-proportionate principle). California residents may exercise CCPA rights including §1798.105 (deletion) and §1798.110 (right to know).

Retention

rrweb session replays: 30 days, then deleted from Cloudflare R2. The `document_events` log: 180 days, then deleted from the database. When a sender permanently deletes a document, all associated reviewer data is removed immediately via the three-step process (R2 hard delete + database soft delete + Cloudflare CDN purge).

How we provide notice (no popup)

When a reviewer opens a shared link, a slim disclosure rail is permanently shown at the bottom of the screen describing this processing. We do not use a separate consent popup or banner; processing relies on the legitimate interest basis above. Senders are also responsible for informing recipients ahead of time (Terms §9.1), and the two notices apply cumulatively.

Reviewer rights — access, deletion, restriction, objection

Reviewers have the right to access, delete, restrict, and object to processing of their review session data. Email `contact@hookdoc.app` with (a) the link URL you received and (b) the approximate visit time, and we will respond within 7 business days (Korean PIPA §35–37 "without delay" standard).

No third-party analytics SDKs

We do not embed any third-party analytics SDK. All analytics run on our own infrastructure (Cloudflare R2 + Supabase Postgres + our own rrweb implementation), and reviewer data is never transmitted to a third-party analytics domain.

Geographic scope

The reviewer page currently operates only in Korea, the United States, Canada, Australia, and New Zealand. Reviewers in the EU, EEA, the United Kingdom, and Switzerland are routed to an interim notice page until we ship a separate mode that satisfies GDPR / UK GDPR / nFADP.

AI-Assisted Reply Drafts

HookDoc may offer an AI-Assisted Reply Draft feature to help senders respond to reviewer comments.

In the current production environment, this feature is disabled until policy verification (Anthropic data retention / Zero Data Retention conditions / retention policies) is completed. The UI shows the message: "AI reply draft feature is temporarily disabled while we verify privacy policy and provider retention conditions."

If the feature is activated in the future, only the following minimum data will be sent to the AI provider:

Allowed: reviewer comment body, selected proposal region quote, page number, limited document context, comment type, sender-selected reply tone/type.

Forbidden: viewerCookieId, raw cookie, IP address, raw User-Agent, full browserVersion, reviewer email, R2 storage_key, sourceKey, signed URL, full PDF text, full document text, rrweb session replay, full event timeline, raw download event payload, browser fingerprint combinations.

AI reply drafts are auto-generated assistive text and do not constitute legal advice, contract advice, professional consulting, or final decision-making guidance. Raw AI prompts are not stored in the production database, operational logs, or Sentry.

Subprocessors

HookDoc uses the following subprocessors to deliver the service. Only actively used processors are listed; the policy will be updated in advance if a new processor is introduced.

• Cloudflare (R2 / Pages / Workers / KV) — object storage, static hosting, edge compute. Data processed: uploaded PDFs, page images, session replay chunks, cron warming. • Supabase (Auth / Postgres) — sender authentication, database. Data processed: sender accounts, document metadata, comments, event log. • Google (OAuth) — sender login. Data processed: email, name, profile picture URL, Google subject ID. • Anthropic (AI reply drafts) — currently disabled in production. When enabled, only the data specified in the AI section is sent.

HookDoc does not use third-party analytics SDKs (Microsoft Clarity, Google Analytics, PostHog, Mixpanel, external heatmap/replay SDKs). If error monitoring such as Sentry is enabled, it will be added to this policy.

Data access requests, deletion, or any privacy question: privacy@hookdoc.app (reply within 7 business days)