Legal

Terms of Service

Draft · last updated 2026-10-06

DRAFT — needs legal review before public launch. This page was written by the engineering team to describe what Soil's software actually does today, in plain language. It is not legal advice, has not been reviewed by a lawyer, and must not be relied on as a finished terms of service until it has been. Where a term has not been decided, this page says so outright rather than inventing one.

These terms cover your organization's ("you," "your org") use of Soil, software that connects to Jira, GitLab, and, on the paid plan, GitHub, Slack, Google Drive/Calendar/Gmail, Outlook Calendar, PagerDuty, HubSpot, Freshdesk, your own Stripe or Razorpay, AWS Cost, and Zoom, to summarize engineering work and answer questions about it. By creating an account or connecting an integration, you agree to these terms.

What Soil is (and isn't)

Soil computes facts about your connected tools using deterministic, rules-based code, and uses those facts to write a weekly plain-language brief and to answer direct questions you ask it. Where an AI model is used, it only turns already-computed facts into readable text — it does not independently decide what to fetch or verify. Soil is a reporting and summarization tool: it does not replace your own judgment, and every claim it makes is meant to link back to the specific ticket, merge request, or message it came from so you can verify it yourself.

Beta status — no warranty

Soil is offered as-is, in active development, with no warranty of any kind, express or implied, including fitness for a particular purpose. There is no uptime guarantee — and that is a statement about the software before it is a disclaimer: no availability target, response-time target or service-level agreement exists anywhere in Soil's code, configuration or deployment files. We aim to keep the service available and your data intact but make no promises about specific uptime or response time.

Not settled yet. Whether this beta framing is still accurate at public launch, and what enforceable wording a warranty disclaimer needs, are a lawyer's call and the owner's, not the engineering team's. Both are listed as open questions in this repository's docs/NEEDS_FROM_KARTIK.md, and are part of what the review named in the banner above has to settle.

Your responsibilities

  • You're responsible for the accuracy of the credentials/OAuth grants you connect, and for only connecting accounts and Slack channels/Drive folders you have the right to share with your team via Soil.
  • An org admin is responsible for who else they invite as a member of their organization, and for what they turn on (e.g. the Slack bot's ability to post, or the Actions approval queue's ability to send a real Slack DM once a human approves it).
  • You agree not to use Soil to access data you're not authorized to access, or to attempt to circumvent the per-organization data isolation the product is built around.

Payment

Free-plan use (Jira + GitLab, weekly brief only) requires no payment. Paid ("Team") plan use is billed through Stripe on a recurring basis. What the software does: checkout runs on Stripe's own hosted page, and cancelling is done in Stripe's hosted billing portal, which Soil links to and does not reimplement (soil/billing.py's create_checkout_session and create_billing_portal_session). Cancelling stops future charges. Soil's own code never issues a refund — it contains no refund path at all.

Not settled yet. Soil has no cancellation or refund policy. Rather than invent a window here, this page states the absence: until a policy is written and reviewed, the only terms that apply to a charge are the ones Stripe shows you at checkout. The open question is recorded in docs/NEEDS_FROM_KARTIK.md.

Data ownership and deletion

Your organization's data is yours. Soil stores it to provide the service (see the Privacy Policy for what's stored and why) and does not claim ownership of it or use it for any purpose beyond running Soil for your organization. An org admin can export or permanently delete the organization's data at any time from Settings, self-serve.

What "delete" actually does, in the code that does it (soil/store.py's delete_organization, reached from the Settings "Danger zone" route, which first makes an admin type the organization's own slug): Soil deletes the organization row, and because every org-scoped table carries a database-enforced ON DELETE CASCADE foreign key back to it, Postgres performs the entire cascade server-side in that one statement. It is immediate — no queue, no grace period, no "deleted" flag left behind — and irreversible: Soil keeps no second copy to restore from and has no undelete path. Two things survive on purpose. The audit-log entry recording that the deletion happened is written first, in the same transaction, and holds the organization's name and slug and none of its data. The user accounts themselves are never touched, because a person may belong to another organization too. Disconnecting a single tool is the narrower version of the same thing: it deletes that tool's stored credential and every row synced from it, immediately (disconnect_integration).

Not settled yet. How long Soil keeps an organization's data when nobody deletes it, and how long a deleted organization's rows may survive inside database backups, are not decided. Nothing in the code implies an answer to either, so this page states no period at all. Both are open questions in docs/NEEDS_FROM_KARTIK.md.

Termination

You may stop using Soil and disconnect your integrations at any time, and an org admin can delete the organization outright from Settings.

What the software does today: nothing in Soil suspends or terminates an account. There is no suspension state on an organization and no code path that disables one. The only automatic consequence of a lapsed payment is that the paid-plan connectors stop being offered and the organization reads as the Free plan again (soil/billing.py's is_pro and _DEAD_SUBSCRIPTION_STATUSES); no data is deleted by that.

Not settled yet. The conditions under which Soil may suspend or terminate an account — abuse, non-payment, breach of these terms — are not decided, and this page will not invent them. Open question in docs/NEEDS_FROM_KARTIK.md.

Changes to these terms

Since this document is a draft, expect it to change materially before public launch, and periodically afterward. The date under the heading above is the only version marker this page has.

Not settled yet. How continuing users will be told about a material change is not decided. Soil can send email to an organization's address (soil/email.py), but no code sends a terms-change notice, and Soil keeps no record of who accepted which version of this document, so this page claims neither. Open question in docs/NEEDS_FROM_KARTIK.md.

Questions

There is no published contact address yet. No support mailbox is configured anywhere in this deployment, and naming one that does not exist would be worse than saying so. Until an address is published and this document has been reviewed, reach the person who invited you to your organization, or whoever runs the Soil deployment you signed up on. Publishing a real address is an open item in docs/NEEDS_FROM_KARTIK.md.