entreprenoid

How it works

You are being asked to put our code in your request path. This page is the detail that deserves — the mechanism, the limits, and the sentences the product itself is held to.

Where it sits

One middleware at your server boundary. It reads what is already in the request and in the completed response headers, and sends it to our ingest after your response has gone.

Every adapter carries a response-preservation test: the same app with and without the middleware must produce a byte-identical body, headers and status — including with a collector injected to throw on every call.

The two channels

The server middleware is the product. Every metric works from server request and response data alone, and none depends on browser JavaScript.

An optional page tag is off until you switch it on, carries a separate public credential, and exists mainly to generate twins: it reads the rendered DOM, so a page a server-side fetch would see as an empty shell still produces a usable twin. It strips the page in the browser before anything leaves it. Harvesting is authorised by your site's record in our database — never by the flag inside the tag file we served, because a control living in a cached file is one nobody can audit or withdraw.

How an identity becomes verified

Four levels, and the product is built to refuse to round any of them up.

Two promises the code is held to, quoted rather than paraphrased:

Classification is data, not code: a versioned ruleset, stamped on every stored event, so a request classified last month can be explained by the rules that were actually in force when it arrived.

When the markdown twin is served

Only GET and HEAD are ever considered. Everything else passes through untouched.

How a twin gets published, and how you take it back

A twin is not published because one browser uploaded one. The page is harvested, its content hash is recomputed at our ingest rather than taken on the uploader's word, and publication requires agreement across distinct networks on more than one day — or an anonymous fetch from our own servers that reproduces the same content, which is only available once you have proved the domain with a DNS record. That anonymous fetch runs on every publish as a veto even when it cannot authorise.

You can see and withdraw every twin your domain serves. Withdrawal is not instant, and it is worth being precise about why, because there are two separate windows and only one of them is ours:

The exact windows are stated in the product, from a single place in the source that every surface reads — so they cannot drift page by page. And we only promise the layer we control: measured on three live origins in September 2026, none honoured the cache lifetime we asked for and two returned a year.

What is recorded, and what is only counted

Not every request is stored, and the rule has one author in the source:

A request is stored when a known AI client makes it (every such request, whatever it asked for), when it asks for markdown, when it fetches a discovery file such as /llms.txt, or when it is served an HTML page. Everything else -- scripts, form posts, redirects, missing pages, assets, and the site's own admin and scheduled traffic -- is counted by reason and not stored.

The decision reads facts about the request, never the classifier's verdict, so a later ruleset can still relabel what was kept.

What we collect, and what we refuse

Never collected, by default or otherwise: request or response bodies, authorization headers, cookies, arbitrary request headers, arbitrary query parameters, URL fragments, form values, console output, email addresses, names, user identifiers.

Query strings are dropped, and a conservative redactor runs over the path itself because a path can carry a secret. On the visitor's IP address:

The address is RETAINED on the stored request and is deleted with it, on the site's own retention schedule. It is also used at the ingest boundary for coarse country, rate limiting and crawler verification, and a separate 24-hour hold exists for that purpose. It is also matched, on our own servers, against public network data to record what kind of network it belongs to; no third-party service is consulted. Each request additionally carries a site-scoped, daily-rotating HMAC pseudonym and a two-letter country code, which are what the aggregates group on.

The schema is the list: the public field-by-field documentation is generated from the same definitions the collector uses, and a test fails if the two disagree. A promise nothing checks is a promise that quietly expires.

What this product does not do