Privacy Policy

Last updated: October 13, 2026

The short version

You give PairHarbor text about yourself (a résumé or CV, a bio, any text you choose) and we turn it into a skill cloud. The text itself is analyzed once and never stored. Only the derived skill list is kept, and you control it. Project descriptions are the one exception: a project you post keeps its description so people can read what it is about. We don't sell data, we don't run ads, and we don't use your submissions to train AI models.

What we collect

Waitlist: your email address and when you joined.

Text and files you submit for analysis: pasted memory or bio text, and uploaded documents (PDF, DOCX, TXT, MD). These are processed in memory to build your skill cloud and are not saved to any database or file store. Before the text is analyzed, we automatically strip strings that look like passwords, API keys, or other credentials. The exception is a project description: when you post a project while signed in, its text (after the same credential stripping) is kept with the project, as described under “What's public” and “Company workspaces”.

Derived skills: the output of the analysis: skill names, an estimated depth for each, and a category. For text about you, this is the only thing that persists: building a cloud while signed in automatically publishes it as a share link (see “What's public”) and keeps a saved copy on your account. Both are yours to delete. Anonymous builds stay in your browser unless you explicitly share them.

Account: if you sign in, we receive your account identifier and email from Google, GitHub, or LinkedIn, or store your email if you use a sign-in link. We keep that email to notify you when you receive a message (you can turn message emails off in Settings) and to check its domain when you join a domain-restricted company workspace; the address is never shown to other users. Sign-in uses an essential session cookie. We use no tracking cookies. You can optionally add profile details in Settings (display name, headline, city, country, website, your full-/part-time availability, and your remote/hybrid/on-site work mode). Every field is voluntary, editable, and clearable at any time. The display name titles your share links, and your country, availability, and work mode are shown publicly with your published clouds and filterable in the Harbor. Project postings can likewise carry optional country, city, remote, and full-/part-time details, shown publicly with the project.

Usage analytics: two things, neither used for advertising and neither sold. First, our own cookieless counters: aggregate event counts (a page was viewed, a cloud was built, a link was shared) stored in our own database, recording at most a page path and the referring site's domain: no IP address, no device details, no identifiers. Second, PostHog, a third-party analytics service that records pageviews and interaction events so we can see how the product is actually used. PostHog keeps a random identifier in your browser's local storage (not a cookie) to group events from the same browser; anonymous visitors are never profiled, and share-link addresses are rewritten to a placeholder before anything is sent, so neither system can be used to enumerate live share links. If you mark your account as a test account in Settings, your events carry a flag (a single yes/no, no identity) so our statistics reflect real usage.

Agents and API tokens: in Settings you can register agents (the machines, VMs or containers you run) and create API tokens for them. We store the agent's name and description and, for each token, only its hashed form plus the label and usage times you see there. A token acts as you, within your own account and the workspaces you belong to, nothing more; delete a token or an agent and it is refused at once.

Messages: signed-in users can message the owner of a published cloud. We store each message (the sender and recipient account identifiers, the cloud it concerns, the text, and timestamps) so both sides can read the conversation. Messaging is pseudonymous: the other party sees the cloud's title and your words, never your account identity. You reveal only what you write; the composer warns you when a message looks like it contains contact details, and credential-shaped strings (API keys, passwords) are removed automatically before storage. Your availability status (“open to projects” / “exploring”), if you set one on a listed cloud, is shown publicly with that cloud.

GitHub enrichment (optional): if you signed in with GitHub and click “Enrich from my GitHub,” we fetch a summary of your public repositories (names, descriptions, languages, topics) from GitHub's API and place it in the import box for you to review and edit before submitting. It then follows the same analyzed-once path as pasted text. Nothing is fetched without that click, and we never access private repositories.

How analysis works

Your submitted text is sent, after credential redaction, to Anthropic, our AI processing provider, whose API terms do not permit training on customer data. The response is returned to you and holds only derived data: your skill list, an estimate of your years of experience, and a short professional headline (like “Senior Backend Engineer”) used to name your cloud. The submitted text is then discarded.

To prevent abuse, analysis is limited per day: per account when you are signed in, per IP address otherwise. IP addresses are used only for this counting, kept solely as a salted hash that expires within 24 hours, and are never stored with your content.

What’s public

Building a cloud while signed in automatically publishes it at one permanent page with a random handle (pairharbor.com/u/…) showing its title and skills, visible to anyone with the link. That page is live: it always shows your current cloud, and edits appear there automatically until you unpublish it. Project postings are separate pages that keep the skills they were posted with and, when posted while signed in, the project description, readable by anyone who opens the page. You can edit or clear that description at any time, and it is deleted with the project or your account; anonymous postings keep only the skills. The link is shown to you the moment it's created, with one-click removal right there and in Settings. Signed-out visitors publish only if they explicitly choose to share; those anonymous profiles are deleted automatically after 90 days. Clouds and pages on signed-in accounts are kept until you delete them.

The Harbor: clouds you build while signed in are additionally shown in the Harbor by default, a directory where any signed-in user can discover them without needing the link, grouped with similar clouds. A control to turn this off appears next to the link the moment it's created, and in Settings at any time. Anonymous clouds are never shown there. The Harbor displays only what the public page already shows: the cloud's title, skills, location and work-preference facts, and (if you set one) your availability status. Similarity scores you see there are computed in your own browser; your cloud is never uploaded by that page.

Company workspaces

A workspace is a private space for a company: its name, member list, and internal projects (a title and a derived skill list) are stored in our database and visible only to the workspace's members. Nothing in a workspace appears in the Harbor, on any public page, or to any other account. Joining a workspace shows other members a display label for you, but it does not share your skill cloud: that is a separate switch inside the workspace, off by default, and you can turn it off again at any time. Leaving a workspace removes your membership; deleting a workspace (admins) permanently removes its projects and memberships, while members' own clouds are untouched. As on a public project, the description you post is kept with the project as its brief, but here it is visible only to the workspace's members, so planners and workers can read the full intent. The poster or an admin can edit or clear it at any time, and it is deleted with the project or the workspace.

Workspaces can also hold tasks under their projects (a title, description, required skills, and, once done, a completion report with links). Every task change is recorded with the member who made it and, when it came through one of their agents' tokens, that agent's name, so unattended activity can be reviewed. When a task is completed, its required skills are added to the assignee's own cloud, with a history entry. A workspace admin can register webhook endpoints; each task event (including the task's title, description, report and the acting member's id) is then sent to those endpoints, which the admin controls, not us. All of a workspace's tasks, history and webhooks are deleted with the workspace.

A public project can carry tasks too. Only its owner defines them. An open task's title, description and required skills are visible to anyone signed in who opens the project's page, and any account can claim one. The completion report, its links and the task's history are visible only to the project's owner and the person who did the task; each sees the other under a neutral label, never an account id or a name. No webhooks fire for public tasks. They are deleted with the project.

Write to them (mail campaigns): a signed-in organizer can create a form that helps a community email an authority. We store the organizer's form only: the recipient addresses, the email template, and the field definitions, kept until the organizer deletes it. The public form page is served to anyone with the link without an account, and it records no visit. What a community member types into it is never sent to us: the email is assembled in their own browser and handed to their own mail app (or copied out), so neither PairHarbor nor the organizer sees it. If the organizer asks for wording variations, the organizer's subject and email template (with credential-shaped strings removed) are sent to Anthropic, our AI provider, which rewrites them; the variations are stored with the form. Nothing a member types is ever part of that. To show the organizer how many emails went out, the page counts the first press of a send or copy button for each email: a number per form, day and channel (mail app, Gmail, Outlook, copied), with no name, text, account or address. To keep one device from inflating it, a salted hash of the sender's IP address is held in a counter that expires within a day; the address itself is never stored. When sending, a member can tick “Let the organizer know I sent this”. Only then are the values of the fields the organizer marked for it (for example a name and unit number) sent to us, with the date and channel, and shown to that organizer only; never the email text. They are kept until the organizer clears the list or deletes the form. They are self-reported and never sent to an AI provider.

Paid plans: a workspace admin can put a workspace on a paid plan. Payment is taken by Polar, our merchant of record, on Polar's own pages: your card number never reaches PairHarbor. Polar receives the workspace's name, the admin's email address for the receipt, and the workspace's id. We store the plan, the subscription's status and renewal date, and Polar's identifiers for the workspace. To keep usage in step with the plan we count, per workspace and per month, how many tasks were completed through members' agent tokens; for workspaces on a paid plan each such completion is also reported to Polar as one usage event carrying the workspace id, the task id and the agent's name, never the task's content. Billing records are deleted with the workspace; Polar keeps its own invoice records as tax law requires.

A workspace admin can restrict joining to a company email domain. In that case, the domain of your sign-in email is checked when you use an invite link, and workspace admins can see whether a member's sign-in email matches the workspace's domain (a yes or no, never the address itself).

Where data lives

PairHarbor runs on Vercel (hosting), Neon (Postgres database), and Redis Cloud (short-lived cache). Sign-in emails are delivered by Resend; OAuth sign-in involves Google, GitHub, or LinkedIn; analysis is performed by Anthropic; usage analytics are processed by PostHog in the United States; paid workspace plans are billed by Polar (Polar Software Inc., United States) as merchant of record. When something breaks, a technical error report (the failure's stack trace and page, never your submitted text or skills) goes to Sentry, our error monitoring service. These providers process data only to run the service.

Retention

Waitlist emails: until launch, or until you ask to be removed.

Submitted text and files: not retained. Analyzed once, discarded.

Anonymous published profiles: 90 days, then deleted automatically.

Signed-in saved clouds and account records: until you delete them.

Messages: kept while both accounts exist; contact us to have your conversations removed.

Delete your account

You can delete your PairHarbor account and its data yourself, at any time:

1. Sign in at pairharbor.com and open Settings.
2. Scroll to the Danger zone and choose Delete my account.
3. Confirm. Deletion runs immediately and signs you out.

This permanently removes your account record and profile details, your saved clouds, your published share pages and project postings, your messages (sent and received), and your agents with their API tokens. There is no recovery window: deleted data is gone from the live database at once, not retained for a holding period. What survives is only what was never tied to your account: aggregate usage counts with no identity in them, and, if you separately joined the waitlist, that email (ask us to remove it). If you prefer, or if you can no longer sign in, email privacy@pairharbor.com and we'll do it for you.

Delete some data, keep your account

You don't have to delete your PairHarbor account to remove data from it:

1. Sign in at pairharbor.com and open Settings.
2. Your published share pages, project postings, and saved clouds are listed there, each with its own unpublish or delete control. Removal is immediate and permanent, with no retention period.

For anything without a Settings control (your message history, a waitlist email, or your optional profile details beyond clearing the fields yourself), email privacy@pairharbor.com and we'll remove it.

Your rights

You can ask for a copy of your data, correct it, or have it deleted. email privacy@pairharbor.com. Saved clouds can be deleted directly in the app. If you are in the EU/EEA or UK, these rights are backed by the GDPR; we honor them for everyone regardless of location.

Children

PairHarbor is not directed at children and may not be used by anyone under 16.

Changes

If this policy changes, we'll update this page and the date at the top. Material changes to how your data is handled will be called out, not buried.