Methodology
How the observatory archives, detects, and classifies published terms.
The published contract terms of cloud infrastructure and AI model providers, side by side, as they change. This page describes how that is done: what is captured, how values are extracted, what the status labels mean, and where the limits are.
How documents are captured
Twice daily, an automated workflow fetches each tracked provider's public terms of service, SLAs, acceptable-use and usage policies, model licenses, and deprecation policies, and archives a normalized text snapshot with a timestamp and content hash.
Fetching uses three tiers in order: a direct request as an identified archival agent, a headless browser for JavaScript-rendered pages, and the Internet Archive as a fallback (dated by capture time). It never attempts to bypass a CAPTCHA or other interactive challenge. A small number of sources block direct automated retrieval; for those, the archived version is the most recent Internet Archive capture, dated individually on each value, and may lag the live page.
The “terms last checked” time on the main page reflects the most recent run of the directly fetched sources.
How values are extracted
When a document changes, an AI model (Claude, by Anthropic) reads it against a fixed, published schema of contract dimensions and records, for each, a value and a short verbatim supporting quote copied from the document. The code mechanically checks that the quote actually appears in the archived text. Values whose quote cannot be verified are published as “unverified” with low confidence and should be given no weight.
Every value records the document it came from, its source URL, the fetch date, the archived version's content hash, and the model used, so any datapoint traces back to the exact text that produced it. License values attach to the specific license document and model generation they came from; they are never asserted across a whole model family.
Cell labels and confidence
Every cell carries one label. The reader sees the label, so each is defined here under the exact words it displays. Nothing is human-verified; the labels describe an automated check, not anyone's review.
- Quote verified against source. The value is backed by a short verbatim quote that the code found, word for word, in the archived source. Where a value rests on two separated passages, each is stored and checked as its own contiguous quote; a quote is never joined across an ellipsis, because the joined form appears nowhere in the document.
- Quote not verified against source. The model returned a value but no supporting quote could be matched. The value is shown but unconfirmed; give it no weight without reading the document yourself.
The remaining labels describe the terms, or the absence of a captured document, rather than the check. Each is defined in the next section.
Confidence (high, medium, low) sits alongside a verified value and reflects how directly the quote supported the reading: a verified quote with low confidence usually means the clause was partial or qualified.
When no value is reported
Where the Observatory reports no value, the cell says which label applies and, in its drawer and in exports, a full sentence stating what was reviewed and why. Each label is defined here under the words it displays.
- No provision found. The governing documents were reviewed and none addresses this point. A finding about the terms, not a failure of the tool: the provider could have addressed the point and did not. The cell names the documents reviewed.
- Not applicable. The point cannot arise for this kind of offering, so no provision is expected. Service-level or capacity terms for a downloadable open-weight model, for example, which is a license rather than a hosted service. The cell states the reason.
Two further labels describe a document that is not in the corpus at all, rather than anything the terms say. Neither is a finding about the provider's drafting.
- Access restricted by provider. Some providers block automated retrieval via robots.txt, CAPTCHAs, or login walls. The Observatory honors these boundaries and does not bypass them; affected documents carry this label rather than being captured through workarounds. The mechanism is shown in parentheses.
- Not retrievable. No governing document is currently captured to review, for a technical reason shown in parentheses: a JavaScript-rendered page that returns no text, a broken provider link, a capture too short to be the document, or a source removed from the registry.
Which copy of a document is authoritative
Some documents exist in more than one place. Which copy the Observatory tracks follows one rule, applied by document type.
- Open-weight model licenses and use policies: the provider's official repository copy (their GitHub or Hugging Face organization) is the operative document, and is preferred over a website copy. It is the license attached to the distributed artifact, which is what a reader of an open-weight license is bound by.
- Service terms, privacy policies, data processing addenda, and any other hosted-platform document: the provider's website is canonical. A repository copy is never an acceptable substitute for these.
A document is never substituted across types. A model license is not a platform's service terms, and one is not evidence of the other.
Where a license text is generic and names no generation (a bare MIT or Apache-2.0 file, for example), the binding between document and model generation is the repository path it sits at, not the words in the file.
Some publishers ship no license file at all, declaring the license in the model card’s front matter or the repository’s metadata instead. Where that is so, the model card is recorded as the operative license document, the identifier is quoted from the front matter, and the repository’s license tag is noted as corroboration. One document then fills two roles in the registry, which is preferable to inventing a second URL for a file that does not exist.
Every document in a provider's entry must govern the tracked artifact or relationship. Sharing a parent company is not enough: a consumer platform's privacy policy does not govern a set of downloadable model weights, because running the weights creates no data-processing relationship with the publisher.
Every document carries a stated basis: one sentence recording what it governs and why that is this entry’s tracked artifact. The basis is written when the document is registered, not derived afterwards, so the judgment is made explicitly and once. Mechanical checks sit around it, a document type that could not govern an entry’s artifact is a build error, and each document’s own scope language is compared against the entry it sits on, but neither can settle whether a given instrument governs a given thing. That remains a judgment, and it is contestable: a reader who believes a cell cites a document that does not govern the artifact can say so through the error channel, and that is a listed category of error rather than a special case.
Archived captures. Where a provider blocks direct retrieval, the Observatory falls back to the most recent Internet Archive capture. Values from an archived capture are marked with the capture date, because the archived text may lag the provider's live page: it is evidence of what the document said on that date, not necessarily what it says today. Where the capture is more than seven days old the entry also carries a staleness flag.
Dimension sets by segment
Each segment’s table shows only the dimensions that can meaningfully exist for that entry type. A dimension is omitted only when it is structurally inapplicable, meaning the precondition does not exist, not merely because today’s providers are silent. Collective silence is a finding and stays (for example, closed-API providers that publish no SLA still show an availability row, because a service could commit to uptime). The omissions per segment:
Cloud Infrastructure Providers
- Model license: infrastructure providers distribute no model weights, so the license under which weights are distributed has no referent.
- Model documentation commitments: infrastructure providers publish no model/system cards; the commitment has no referent for a compute service.
- Training data provenance statements: infrastructure providers train no models on their own account, so training-data provenance has no referent.
Hosted platform terms
- Hardware substitution rights: a closed API allocates tokens/throughput, not GPUs; there is no hardware to substitute.
- Model license: closed-API providers distribute no model weights, so the license under which weights are distributed has no referent (references to IP ownership or usage restrictions belong to other dimensions).
Weights licence terms
- Availability definition: an availability definition describes a service's uptime commitment; an open-weight license distributes weights with no service attached, so the precondition does not exist.
- Credit regime: SLA service credits presuppose a service level to breach; a downloadable license has no service.
- Claim mechanics: there is no SLA to claim credits against.
- SLA exclusions: there is no SLA whose scope could be excluded.
- Capacity & reservation terms: no hosted capacity is provisioned to reserve.
- Capacity delivery remedies: there is no capacity delivery obligation to remedy.
- Hardware substitution rights: no hardware is allocated, so none can be substituted.
Change detection and the feed
When a document's normalized text changes between runs, the system records the localized before/after difference. The change feed is generated from those differences; quoted excerpts are kept short.
A change to a document also triggers re-extraction of that provider, so the matrix and the feed stay in step. The feed shows only genuine changes to a provider's published terms. Timestamp or counter movement with the terms unchanged, and the Observatory's own tracking changes (adopting a newer document for an entry, for example), are not changes to what a provider published and are kept out of the feed.
Coverage and limitations
This site reports what public documents say, with citations. It does not characterize, rate, or recommend, and it gives no advice. It is AI-generated analysis of public documents; no attorney reviews individual classifications before publication, and classifications may be wrong, incomplete, or out of date. Public terms are only a starting point: negotiated agreements routinely differ from a provider's public documents. Nothing here is legal advice, and no attorney-client relationship is created by reading it. Read the underlying documents, which are linked from every datapoint, and consult your own counsel.
Corrections. Every datapoint links to its source. Everything here is AI-reviewed; there is no human-verified tier. A correction can adjust a value or its citation, but the corrected quote is then re-checked against the archived source exactly like any other value, and carries no special badge. If you spot an error, open an issue in the source repository.
Language. The Observatory tracks the English-language versions of provider documents. Where a provider publishes the same terms in other languages, those versions are not captured, and the English version is treated as the reference text. Where a provider's own document states that another language governs in the event of a conflict, that statement is part of the terms and is read like any other clause, but the non-English text behind it is not archived here.
Code and data. The source code is published for inspection and verification, under a source-available licence rather than an open-source one. The change history is published here as the change feed; the archived snapshot corpus is maintained in the project's data repository. See the About page for the full provider and dimension coverage.
Verifying a change claim
A change report is a claim about what a document used to say and what it says now. Every such claim ships with the material needed to check it, so a reader does not have to take the Observatory's summary on trust.
- The captured text, both sides. For any document appearing in the change feed, the full text of the prior and current captures is published, each with its capture date, fetch method and content hash. The hash is computed at capture time, so the published text can be checked against the fingerprint recorded when it was archived.
- The redline and the full comparison. The feed shows a windowed redline; the comparison page shows every changed passage whole.
- Independent captures. Where the Internet Archive holds a capture reasonably close to the change on either side, it is linked. These are not the Observatory's captures and are not under its control, which is the point. Where no capture exists near the change, no link is shown: a link to a capture months away would look like corroboration while corroborating nothing.
Only documents that appear in the change feed have their full text published. The rest of the archived corpus is not public.
The published text is evidence of what a document said on a particular date. It is not a substitute for the provider's live document, which is linked from every version page and every value.
How to cite
Every value carries the document it came from, that document's URL, the archived version's content hash, and the date it was fetched, so a citation can be pinned to an exact text rather than to a page that may since have changed.
A citation to a term generally names the provider, the dimension, the source document, and the date of the archived version, and links to the primary document. The provider's own document is the authority; this site is a reading of it.
Where the point being cited is that terms changed, the change feed entry records the date the change was first detected, which is the date that supports that point. Where the reading itself is what is being cited rather than the underlying document, cite this site together with the “checked” timestamp shown on the relevant section, since values are re-derived whenever their documents change.