Pulse
All documents
Pulse

The CRM with a working agent inside. It reads, it learns how you sell, and it moves.

PRODUCT

How it worksSetupProductPricingQuestionsSign in

LEGAL

PrivacyTermsDPASub-processors

Built on the open-source CRM by Comp AI, MIT licensed.

The legal documents above are published drafts.

ON THIS PAGE

  • 1. Read this part first: what this policy covers, and what it cannot
  • 2. Who we are
  • 3. If you are someone in a Customer's CRM and did not sign up for anything
  • 4. Personal data we hold as controller
  • 4.1 The Customer's users
  • 4.2 Under DPDP
  • 4.3 Under CCPA/CPRA
  • 4.4 Early-access sign-ups
  • 5. Personal data we process for Customers, as processor
  • 5.1 Records about identified individuals
  • 5.2 Special-category and sensitive data
  • 5.3 Children's data
  • 6. Where the data comes from
  • 7. Analytics and telemetry
  • 8. Retention and deletion, described exactly
  • 9. Who the data is shared with
  • 10. The large language model, and what leaves the deployment
  • 11. International transfers
  • 12. Your rights
  • 12.1 If we are the controller of your data (§4)
  • 12.2 If your data is in a Customer's CRM
  • 12.3 California
  • 13. Security
  • 14. Changes to this policy
  • 15. Contact
  • Annex A — every placeholder in this document
  • Annex B — product changes that would let this policy say something better

Privacy Policy

DRAFT — NOT LEGAL ADVICE, NOT IN FORCE. This document was prepared by an AI assistant, not by a lawyer, from this repository's source code and documentation. It must be reviewed by counsel qualified in every jurisdiction in which the Service is offered before it is published, offered to anyone, or relied on. Placeholders in [BRACKETS] are decisions for the operator; nothing in them should be invented by anyone but the operator and their lawyer.

The evidence base for every factual statement below is docs/legal/data-map.md, which was derived by reading packages/db/prisma/schema.prisma, apps/api/src, apps/agent/agent, .env.example and docs/security/audit-2026-08.md. Where the code and this document disagree, the code is correct and this document is wrong.

Document version: draft-1 · Prepared: 2026-08-07 · Status: unreviewed · Effective date: [NOT IN FORCE]


1. Read this part first: what this policy covers, and what it cannot

1.1 The software and the hosted Service are different things. The source code is published under the MIT Licence. If you run it yourself, this policy does not apply to you and we have no relationship with your data. You choose your own database host, your own model provider and your own optional third-party API keys, and you are responsible for telling your own users and your own data subjects what you have chosen. This policy describes only the hosted Service operated by [LEGAL ENTITY NAME] at [SERVICE DOMAIN]. See §2.

1.2 We hold personal data in two capacities, and the difference decides your rights.

The dataWho decides why and how it is processedOur roleGoverning document
CRM records — contacts, companies, deals, activities, email threads and bodies, calendar events and attendees, agent-generated facts and briefsThe Customer (the business that subscribes)Processor / Data ProcessorThe
The Customer's own account — its users, their sessions, invitations, support correspondence, billingUsController / Data FiduciaryThis policy, §4
Early-access (waitlist) sign-upsUsControllerThis policy, §4.4
Anonymous install telemetryUsController, and it is not personal data as configured — §7This policy, §7

This is consistent with §6.2 and with docs/legal/data-map.md §6. If you are one of the Customer's prospects — a person whose details are in a Customer's CRM — we are not the controller of that data. Read §3, which is written for you.

1.3 One awkwardness, disclosed rather than smoothed over. Because each Customer's hosted instance runs against its own database, the Customer's users' account records — including session IP addresses and stored Google OAuth tokens — physically sit in the Customer's own database even though we are the controller of the account relationship. [CONFIRM WITH COUNSEL: the correct characterisation of Session.ipAddress and Account credentials in a deploy-per-customer architecture. docs/legal/data-map.md §6 flags this as unresolved.]


2. Who we are

Controller[LEGAL ENTITY NAME]
Incorporated in[JURISDICTION OF INCORPORATION]
Registered address[REGISTERED ADDRESS]
Privacy contact[PRIVACY EMAIL]
Grievance Officer (India, DPDP Act 2023)[GRIEVANCE OFFICER NAME AND CONTACT]
Data Protection Officer[DPO — or an express statement that none is required and why]
EU representative (GDPR Art 27)[EU REPRESENTATIVE — or the basis for exemption]
UK representative[UK REPRESENTATIVE — or the basis for exemption]

[TWO DECISIONS REQUIRED, AND NEITHER CAN BE DEFERRED PAST LAUNCH.]

  1. The DPDP Act requires a named, contactable Grievance Officer whose details are published. A generic privacy@ alias is unlikely to satisfy the requirement to name a person. See docs/legal/research.md §1.
  2. GDPR Art 27 requires an EU representative for a controller established outside the EU that offers services to people in the EU, unless a narrow exemption applies. The equivalent applies for the UK. Whether either is required depends on where [LEGAL ENTITY NAME] is established and who it sells to. See docs/legal/research.md §2.

3. If you are someone in a Customer's CRM and did not sign up for anything

This section is the honest centre of this document. Most of the personal data the Service holds is about people who never created an account, never agreed to anything, and in most cases do not know the Service exists. Pretending otherwise would be the single most misleading thing this policy could do.

3.1 What happened. A business that uses the Service — most likely one whose salesperson has contacted you, or who you have emailed or met — recorded you in its CRM. That business decided to do that. It is the controller / Data Fiduciary of your data. We process that data on its instructions and for no purpose of our own.

3.2 What may be held about you. Depending on what that business did, this can include your name, business email address, phone number, job title, employer, public social profile links, a profile photograph, notes a salesperson typed about you, the full body and recipient list of email correspondence with that business's connected mailbox, calendar events you attended with them including the other attendees, records of calls placed to you including duration and whether you answered, and written characterisations of you produced by a large language model. §5 sets this out field by field.

3.3 Who to contact. Because the business is the controller, your request is for them, not for us. If you contact us we will, where we can identify the Customer concerned, pass your request on and tell you we have done so, and we will assist that Customer in responding as the requires. We will not act on your request directly without the Customer's instruction, and we generally cannot identify which Customers hold you without searching their databases, which we will not do without instruction. Write to [PRIVACY EMAIL].

3.4 The lawful basis is the Customer's to establish, not ours. In the EU and the UK, processing business-contact data for sales purposes is typically justified under GDPR Art 6(1)(f) — legitimate interests, which requires the controller to have carried out and documented a balancing assessment, and triggers the Art 14 duty to give notice to people whose data was not collected from them directly. In India, the DPDP Act 2023 is consent-first and has no general legitimate-interests ground, which makes third-party prospect data materially harder to justify. See docs/legal/research.md §§1–2.

3.5 What the software does not do, stated plainly.

  • There is no lawful-basis field. No lawfulBasis, no consentedAt, no optOutAt column exists on any contact record. The software does not record why a person is in the database or on what basis.
  • There is no provenance record for imported lists. The CSV import captures company names and domains and records nothing about where the list came from.
  • There is no notice mechanism. The Service does not, and cannot today, notify a person that they have been added to a Customer's CRM.
  • There is no self-service route for a non-user to exercise a right, because a non-user has no account.

We consider these to be defects rather than features, and they are recorded as such in docs/legal/data-map.md §7. [The Customer is contractually required under §5.2 to have a lawful basis for everything it uploads. That contractual allocation does not, on its own, discharge our own obligations, and counsel should advise on what more is needed — in particular whether a public transparency page addressed to non-users under GDPR Art 14, and a corresponding position under DPDP, should be published.]


4. Personal data we hold as controller

4.1 The Customer's users

DataWhere it comes fromWhyLawful basis (GDPR)
Name, email address, profile image, email-verified flagThe sign-in identity providerTo create and operate the accountContract (Art 6(1)(b))
Session IP address, user agent, session token, expiryCaptured automatically on sign-inSession management and securityLegitimate interests (Art 6(1)(f)) — securing the Service
Stored provider credentials — OAuth access, refresh and ID tokens, granted scopes, and a password hash where email-and-password sign-in was usedThe identity provider, or the userTo connect the mailbox and calendar the user chose to connect; to authenticateContract
Workspace membership and role; invitations, including an invited colleague's email address before they have an accountEntered by a workspace administratorAccess controlContract / legitimate interests
Mailbox sync state, including the last error string returned by GoogleGeneratedTo operate and debug the syncLegitimate interests
Agent conversation titles and session handlesGenerated when a user talks to the agentTo show a user their own historyContract
Support correspondenceYou, when you write to usTo answer youLegitimate interests
Billing recordsYou / the payment processorTo take payment and meet tax obligationsContract / legal obligation

A disclosure about sign-in. As at the date of this draft the shipped configuration has email-and-password sign-in enabled alongside the identity provider, marked in the source as "local dev only, revert before deploying" and flagged as a release blocker in docs/security/audit-2026-08.md (finding C2). Until that is resolved, no statement that "authentication is via Google SSO only" would be true, and this policy does not make one. [MUST BE RESOLVED BEFORE LAUNCH. If it is resolved, amend this paragraph; do not delete it silently while the code still enables the path.]

4.2 Under DPDP

Where the DPDP Act 2023 applies, [LEGAL ENTITY NAME] is the Data Fiduciary for the data in §4.1 and processing rests on the consent the user gives at sign-up together with the "legitimate uses" the Act permits, to the extent any applies. [CONFIRM WITH COUNSEL — the notice and consent wording at sign-up must be drafted to DPDP s.5 standards and is not written yet. See docs/legal/research.md §1.]

4.3 Under CCPA/CPRA

We do not sell or share personal information as those terms are defined, and we have never done so. Note that the CCPA's exemption for business-contact data has lapsed, so prospect data held by a Customer is in scope of the CCPA where the Customer is a covered business. In respect of CRM records we act as a service provider and process personal information only to perform the Service under a written contract — the . See docs/legal/research.md §3.

4.4 Early-access sign-ups

If you submit an email address to the early-access form on the marketing site:

  • You must tick an explicit consent box. That check is enforced on the server, not only in the browser — a submission without it is rejected.
  • The address is forwarded to our early-access endpoint and is never written to the product database and never committed to the source repository.
  • The address is never sent to our analytics provider. The analytics event records only that a submission happened. See §7.
  • Submissions are rate-limited per IP address in the server's memory.
  • To be removed, write to [PRIVACY EMAIL]. [STATE THE RETENTION PERIOD FOR WAITLIST ADDRESSES ONCE THE DOWNSTREAM SYSTEM IS CHOSEN. The repository does not determine it, because the address leaves the repository's control at the webhook.]

5. Personal data we process for Customers, as processor

Set out because you are entitled to know what the Service is capable of holding, even though the Customer decides what actually goes in. Every model named is in packages/db/prisma/schema.prisma.

5.1 Records about identified individuals

Record typeWhat it can contain
ContactFirst and last name, email address, phone number, job title, LinkedIn / X / GitHub profile URLs, a mirrored photograph of the individual, employer, owner, last-activity timestamp, source label
Contact factsAny attribute the research agent inferred — job title, seniority, employer, tenure — with a confidence score, the evidence quoted from the source, the method, and the source URL
Contact briefFree prose about a named individual, written by a large language model
ActivitySubject and free-text body — call notes, meeting notes, tasks, research write-ups — with timestamps
Call metadataFor calls: the outcome, the duration in seconds, and whether the person answered. This is communications metadata about an identified person and is treated as one of the more sensitive categories the Service holds
Email thread and messageSender name and address, every To and Cc recipient, subject, snippet, the full message body, direction, timestamps, and the provider's message identifiers
Calendar event and attendeesTitle, description, location, conference URL, organiser, start and end times, and one row per attendee — including people who are not contacts and never become contacts
Company / company enrichmentCompany email, phone, social URLs, city, country; and unbounded JSON extracted from a third-party website-extraction API
Agent task and eventThe contact concerned and free text naming why that person is being researched, plus the outcome
Suppression recordsAn email address and a reason string — see §8.3, which explains why this survives deletion

5.2 Special-category and sensitive data

The Service does not solicit special-category or sensitive personal data, has no field for it, and applies no control specific to it. The §5.3 prohibit Customers from putting it in. However, Activity.body is free text and ContactBrief.narrative is model-written prose, and nothing in the software prevents such content from being written into either. We state this rather than implying a technical guarantee that does not exist.

5.3 Children's data

The Service is a business tool sold to businesses and is not directed at children. It has no age field and no age-verification mechanism. Customers are prohibited from processing children's data through it. [DPDP s.9 imposes verifiable-parental-consent duties and prohibits tracking and targeted advertising directed at children. Counsel should confirm whether the prohibition in the Terms is a sufficient answer for a B2B tool with no age signal, or whether more is required.]


6. Where the data comes from

SourceBuilt today?What arrives
Manual entry by a Customer's usersYesAnything typed
CSV importYesCompany names and domains. No record of the list's provenance is captured
Google Gmail (per-user OAuth)YesFull thread bodies, every recipient, timestamps
Google Calendar (per-user OAuth)YesEvent titles, descriptions, locations, conference URLs, and every attendee
GitHub public APIYes, agent-sidePublic profile matching
PerplexityOnly if a key is configuredWeb presence and recent news about a named person
FirecrawlOnly if a key is configuredCompany website content, scraped and extracted
LinkedIn, via a third-party API (LinkDAPI/RapidAPI)Partly, agent-side, off unless a key is configuredName, title, employer, tenure. See the warning in §4.1
Zoho CRM, HubSpot, Salesforce, Gong, Apollo, Slack, FirefliesNot built. No code reads them and they receive nothing—

6.1 The mailbox sync deserves its own paragraph. When one of a Customer's users connects their mailbox, the Service ingests the content of their correspondence and the attendee lists of their meetings. The people on the other end of that correspondence have no relationship with us and are not asked. A setting (autoCreate, off by default) controls whether a person becomes a CRM record automatically merely by having emailed a salesperson. This is described here because it is the sharpest privacy consequence of the product's design, and it is recorded as such in docs/legal/data-map.md §2.


7. Analytics and telemetry

Once a day the hosted API sends counts to PostHog, keyed to a random install identifier. docs/telemetry.md is the complete account and the code matches it.

  • No person profile is ever created. The identify call is never made and person processing is disabled on every event.
  • Every event sets the IP address to null, geolocation is disabled, and the receiving project has IP anonymisation on — three independent measures.
  • Contact counts are sent in bands, not exact numbers. No name, email address, company, subject line, deal amount, prompt or API key is ever sent.
  • An early-access email address is never a property of a telemetry event.
  • Marketing-site analytics load on two named hostnames only; on any other host the analytics library is never fetched at all.
  • Telemetry is off entirely during test runs, and can be disabled by setting CRM_TELEMETRY_DISABLED=1 or DO_NOT_TRACK=1.
  • Error reports are separate from telemetry and off by default. When the operator sets SENTRY_DSN, the web app, the API and the agent send exception messages, stack traces, the request path and the logger's context to Sentry. sendDefaultPii is off in all three, the API never logs headers, bodies or query strings, and no user or contact identifier is attached to an event. Sentry appears in the sub-processor list only when that variable is set.

We are describing this in detail because it is one of the few places where the software is meaningfully better than the category norm, and because a reader is entitled to check the claim against docs/telemetry.md and the source.

Cookies. The Service sets a session cookie required for sign-in, secured in production. [COMPLETE THIS SECTION WITH THE FULL COOKIE INVENTORY FOR THE MARKETING SITE AND THE APPLICATION, AND STATE WHETHER A CONSENT BANNER IS REQUIRED IN THE EU/UK. Not resolved in this draft.]


8. Retention and deletion, described exactly

This is where a policy most easily becomes a misrepresentation, so it is set out against what the code does rather than against what would be reassuring.

8.1 There is no automatic retention schedule. Nothing expires. No scheduled job deletes old activities, old email bodies, old calendar events, old agent events, or superseded research facts. Data is retained until the Customer deletes it or the subscription terminates. We will not state a retention period here, because the software does not implement one, and stating one would be stating something untrue. [This is a storage-limitation problem under GDPR Art 5(1)(e) and a minimisation problem under DPDP. It is a product gap, not a drafting gap. See docs/legal/data-map.md §4.5.]

8.2 There is no soft delete and no archive. A delete is a delete, and it cascades:

  • Deleting a company also destroys every deal and every activity at that account.
  • Deleting a contact also destroys that person's research facts, briefs, deal roles, activities and agent conversations, and clears the links from email threads, calendar events and attendee rows.
  • Deleting a deal destroys its contact roles, activities and agent conversations.

8.3 Deleting a person leaves a suppression record behind, permanently. When a contact is deleted, the Service writes a suppression record containing that person's email address and a reason string that today also includes their name. Its purpose is legitimate and necessary: without it, the connected mailbox sync recreates the person from the next email thread, defeating the deletion. But the effect must be stated without softening:

Deleting a person does not remove all of their data. Their email address, and currently their name, remain in the database indefinitely, in a table with no expiry and no deletion path in the user interface. The suppression is lifted only by re-adding the contact. There is no "forget completely" operation.

This is capable of being justified as a minimal record kept precisely in order to honour a deletion — the argument recognised in GDPR Art 17(3) and in suppression-list practice generally — but it must be disclosed, and it is disclosed here. [RECOMMENDATION TO THE OPERATOR, REPEATED FROM docs/legal/data-map.md §4.3: change the reason string so it does not embed the person's name. The name is more data than the purpose requires, and removing it makes the justification much stronger. Until then, no document may say erasure removes all of a person's data.]

8.4 Removing a member of a Customer's workspace deletes, in a single transaction, that user's membership, all of their sessions, all of their stored provider credentials and their mailbox sync state. Their Google grant is revoked and their mailbox sync stops immediately. What is not deleted is the user record itself and every activity they authored, because the database prevents deleting a user who owns a deal or authored an activity without reassigning it first. A former employee therefore remains in the database as a name and an email address attached to historical activity, and honouring their own erasure request requires manual reassignment first. This is a real operational constraint and is stated rather than glossed.

8.5 Deletion on termination. Because each Customer's data sits in its own database, deletion on termination means destroying that database and the associated stored files. There is no scripted teardown procedure today, so this policy states no number of days. [DO NOT FILL IN A FIGURE UNTIL A TEARDOWN PROCEDURE EXISTS AND HAS BEEN TIMED. See docs/legal/data-map.md §4.6 and §6.5, which carries the same instruction.]

8.6 Backups. [UNRESOLVED. Backup retention is determined by the managed database provider chosen, not by this software. State the provider's actual backup retention window here before publication, and note that deletion from backups lags deletion from the live database by that window.]


9. Who the data is shared with

The complete list, with what each recipient receives, is the . In summary:

  • The hosting provider and the managed database provider — everything.
  • Google — sign-in, and mailbox and calendar reads for mailboxes a user connected.
  • The AI gateway and, through it, the selected model provider — see §10.
  • The email delivery provider — invitation and account notices.
  • PostHog — counts only, no personal data as configured (§7).
  • Sentry — error reports without personal data as configured, and only when the operator enables it (§7).
  • Optional capabilities, each off unless a key is configured: Perplexity, the LinkedIn lookup API, GitHub, blob storage for mirrored images and photographs, and a shared cache.

We also disclose personal data where we are required to by law, and to professional advisers and to a successor in a merger or sale of assets under appropriate confidentiality terms. We do not sell personal data and do not use Customer Data to build a profile of any individual for our own purposes.


10. The large language model, and what leaves the deployment

10.1 What is sent. The research agent reads CRM records and puts their content into prompts. Assume that names, business email addresses, job titles, employers, company website content, call and meeting note text, and the user's own question leave the deployment on every agent run.

10.2 Which company receives it is a runtime setting, not a fixed dependency. Model calls are routed through an AI gateway, and which model is a value a workspace administrator selects in Settings from a catalogue fetched live from that gateway. A single settings change alters which company receives contact names, call notes and model-written briefs about named individuals. That is why the §3.1 cannot be a static list and poses an explicit decision — restrict the catalogue, or place the choice on the Customer.

10.3 Training and retention. Whether a provider uses inputs or outputs to train models, and how long it retains them, is governed by that provider's terms, not ours. This policy therefore makes no blanket statement that your data is never used to train a model — it is not ours to give.

Two specific facts, verified and stated because they are unflattering:

  • The AI gateway does not, by default, route on the basis of a provider's data retention policy, and its zero-data-retention option is a setting that must be turned on (docs/legal/research.md §4).
  • That setting is not enabled anywhere in this codebase. As at the date of this draft, no zero-data-retention flag is set on any model call.

[VERIFY THE CURRENT PUBLISHED POSITION OF EVERY PROVIDER IN THE CATALOGUE, CITE IT, AND STATE IT HERE BEFORE PUBLICATION. Enabling zero data retention is a small code change that would convert this paragraph from a disclosure into a commitment — see docs/legal/research.md §4 and Annex B below.]

10.4 Agent session state is stored outside the application database by the agent framework. [UNRESOLVED — establish where that state physically lives and under whose terms before publication. docs/legal/data-map.md §3.2 flags this.]

10.5 Accuracy, and the limits of it. Model output may be wrong, incomplete or confidently mistaken. A written characterisation of a person produced by a model is an inference, not a fact, and is labelled with its evidence and a confidence score in the interface. Additionally, the agent reads text it did not author — company websites, email bodies, public profiles — any of which may contain content crafted to influence it. We take measures against this but cannot guarantee that output is free from the influence of injected instructions (docs/security/audit-2026-08.md finding M1).

10.6 No solely automated decisions with legal effect. The Service is not to be used as the sole basis for a decision producing legal or similarly significant effects on an individual, and Customers are contractually prohibited from doing so ( §7.3). Where the Service scores, ranks or prioritises, a human remains in the loop. [CONFIRM WITH COUNSEL against GDPR Art 22 and the California ADMT regulations — see docs/legal/research.md §3.]


11. International transfers

[UNRESOLVABLE UNTIL THE ENTITY AND THE HOSTING REGION ARE CHOSEN. This section is a checklist for counsel, not a statement of position.]

  • The hosting region, the database region, and the model provider's processing region each need to be stated.
  • For transfers out of the EEA: the appropriate mechanism is likely the Standard Contractual Clauses (2021/914), using the module that matches the relationship, plus a transfer impact assessment. There is no adequacy decision for India.
  • For transfers out of the UK: the UK International Data Transfer Agreement or the UK Addendum to the SCCs.
  • Under the DPDP Act, cross-border transfer follows a restricted-country model rather than an adequacy model, and the current list of restricted countries must be checked at the time of publication.
  • See docs/legal/research.md §2 and §1 respectively.

12. Your rights

12.1 If we are the controller of your data (§4)

Subject to the conditions and exceptions in the applicable law, you may ask us to give you a copy of your data, correct it, delete it, restrict or object to its processing, receive it in a portable form, and withdraw a consent you gave. Write to [PRIVACY EMAIL]. We aim to respond within one month, which is the GDPR deadline; [state the DPDP grievance-response timeframe here once the Rules position is confirmed — see docs/legal/research.md §1].

You may complain to a supervisory authority: in the EU, the authority in your country of residence or work; in the UK, the Information Commissioner's Office; in India, the Data Protection Board of India, after first raising the matter with our Grievance Officer, which the DPDP Act requires.

Two disclosures about how well we can serve a request:

  • There is no export tooling and no per-person erasure workflow. An access or erasure request is answered today by hand-written queries against the database. That is slower and more error-prone than a built process, and we say so rather than implying a mechanism that does not exist.
  • There is no audit log. The Service keeps no record of who read, exported or deleted a record. We therefore cannot tell you who accessed your data. This is recorded as an open gap in docs/security/audit-2026-08.md and docs/plan/multi-tenancy.md §C.9.

12.2 If your data is in a Customer's CRM

Your rights are against that Customer. See §3.3.

12.3 California

Where the CCPA/CPRA applies you have rights to know, delete, correct, and to limit the use of sensitive personal information, and to be free from discrimination for exercising them. We do not sell or share personal information, and we honour Global Privacy Control signals on the marketing site [CONFIRM THIS IS IMPLEMENTED BEFORE PUBLISHING IT — as at this draft it is not verified, and an unimplemented GPC claim is precisely the kind of statement that becomes an enforcement matter].


13. Security

Everything in this section is limited to what docs/security/audit-2026-08.md verified as present. The standing rule for this document is to understate. Understating is safe; overstating is a misrepresentation.

13.1 What is in place and was verified.

  • All raw SQL is parameterised. No unsafe query construction exists anywhere in the API.
  • Outbound fetches are protected against server-side request forgery: DNS is resolved and private, loopback, link-local and carrier-grade NAT ranges are blocked, non-HTTP schemes are refused, and every redirect hop is re-checked.
  • Standard security headers and global input validation are applied on the API.
  • Cross-origin requests are not enabled; there is no wildcard origin anywhere.
  • Cookies are secure in production and trusted origins are built from configured URLs with no wildcard.
  • The sign-in allow-list is required at boot and fails closed when empty.
  • Single-sign-on registration and removal are restricted by role, not merely by being signed in.
  • Agent output is rendered through a markdown parser, not by injecting raw HTML.
  • The authentication routes are rate-limited by the authentication library, backed by the database.
  • Each Customer's data sits in its own database, reached by its own deployment. The isolation is physical rather than a filter in a query. This is a stronger separation claim than most software of this kind can make, and it is true today.

13.2 What is not in place. We are telling you because the alternative is a misrepresentation.

  • There is no application-level rate limiting outside the authentication routes. No statement that "we rate-limit our API" would be true.
  • Email-and-password sign-in is enabled in the shipped configuration, marked in the source as a development-only setting. It is a second, weaker credential path with no multi-factor authentication.
  • There is no audit log.
  • We make no encryption-at-rest claim of our own. Encryption at rest is whatever the managed database provider and the file storage provider provide, and it is theirs to describe, not ours to claim.
  • A third-party research API key is stored in the application database in plain text, and can be set by any signed-in member.
  • Several destructive operations — including deleting a company, a contact or a deal — are available to any signed-in member of the workspace and are not restricted by role. This is a consequence of the shared-book design and is stated so that no reader infers a role-based restriction on deletion that does not exist.
  • Known advisories exist in the dependency graph whose applicability to the installed versions was not resolved in the audit. We therefore do not claim that dependencies are free of known critical vulnerabilities.
  • We do not warrant that the Service is free from vulnerabilities ( §11.3).

13.3 Breach notification. Where a personal data breach occurs we will notify the relevant supervisory authority and, where required, affected individuals, within the periods the applicable law requires — 72 hours to the supervisory authority under the GDPR, and under the DPDP Act notification to the Data Protection Board and to affected Data Principals with no materiality threshold [confirm the prescribed form and timing against the current DPDP Rules position in docs/legal/research.md §1]. Where we act as processor we will notify the Customer without undue delay under the , and the Customer makes the regulatory notification.


14. Changes to this policy

We will post any change here with a new version number and date, and we will give Customers [NOTICE PERIOD — 30 days recommended] notice of a material change by [NOTIFICATION MECHANISM]. The version history is the git history of this file in the public repository, which is a stronger record than most published policies offer and should be cited as such.


15. Contact

Entity[LEGAL ENTITY NAME]
Registered address[REGISTERED ADDRESS]
Privacy[PRIVACY EMAIL]
Security reports[SECURITY EMAIL]
Legal notices[LEGAL NOTICES EMAIL]
Grievance Officer (India, DPDP)[GRIEVANCE OFFICER NAME AND CONTACT]
Data Protection Officer[DPO — or a statement that none is required]
EU representative (GDPR Art 27)[EU REPRESENTATIVE — or the basis for exemption]
UK representative[UK REPRESENTATIVE — or the basis for exemption]

Annex A — every placeholder in this document

PlaceholderDecided byBlocking launch?
[LEGAL ENTITY NAME], [REGISTERED ADDRESS], [JURISDICTION OF INCORPORATION]OperatorYes
[SERVICE DOMAIN]OperatorYes
[PRIVACY EMAIL], [SECURITY EMAIL], [LEGAL NOTICES EMAIL]OperatorYes
[GRIEVANCE OFFICER NAME AND CONTACT]Operator — a named person, required by DPDPYes, if India is in scope
[DPO]Operator + counselYes, if a threshold is met
[EU REPRESENTATIVE], [UK REPRESENTATIVE]Operator + counselYes, if the EU/UK are in scope
Cookie inventory and consent-banner position (§7)OperatorYes
Waitlist retention period (§4.4)OperatorYes
Backup retention window (§8.6)Determined by the database providerYes
Deletion-on-termination timeframe (§8.5)Blocked on a teardown procedure existing and being timedYes
Transfer mechanism and regions (§11)Operator + counselYes
Model catalogue and each provider's training position (§10.3)Operator, then verify and citeYes
Where agent session state is stored (§10.4)Unresolved engineering questionYes
GPC honoured on the marketing site (§12.3)Verify implementation before claiming itYes, if California is in scope
DPDP grievance-response timeframe (§12.1)Confirm against the RulesYes, if India is in scope

Annex B — product changes that would let this policy say something better

Each of these is a code change, not a drafting change. They are listed because the honest version of this policy is worse than it needs to be, and the fix is in the software.

  1. Enable zero data retention on model calls. The gateway supports it, it is off by default, and the code never sets it. Turning it on converts §10.3 from a disclosure into a commitment.
  2. Remove the person's name from the suppression reason string. One line. Makes §8.3 substantially more defensible.
  3. Disable email-and-password sign-in so §4.1 and §13.2 can be shortened.
  4. Add application-level rate limiting so §13.2 can be shortened.
  5. Add a retention job — even one configurable maximum age for email bodies and calendar events would turn §8.1 from an admission into a policy.
  6. Add an audit log, so §12.1 can answer "who accessed my data".
  7. Add a data-subject-request export path, so §12.1 does not have to say "hand-written queries".
  8. Record list provenance on CSV import, so §3.5 can say where a list came from.
  9. Add a lawful-basis or source field to contacts, so the Customer's Art 6(1)(f) position is recorded in the system rather than asserted in a contract.