# entreprenoid

> Your analytics cannot see AI agents. entreprenoid measures traffic at your server
> boundary, so it counts the clients that never run JavaScript — and serves them a clean
> markdown twin from the same middleware.

Install is two lines:

```ts
import { entreprenoid } from "@entreprenoid/analytics/express";

app.use(entreprenoid());
```

Nothing loads in a visitor's browser: no client script, no cookies.

## Measure the gap, then close it

**See it.** Every request is classified at the boundary — AI crawlers, fetchers, search
bots, agent browsers and humans — with the evidence and confidence behind each answer.

**Fix it.** The same middleware serves a markdown twin when a client asks for one, so an
agent reads your content rather than your markup.

## We do not overstate what we know

- A User-Agent is a **claim**. It becomes **verified** only through forward-confirmed
  reverse DNS or a vendor's published IP ranges.
- A DNS failure produces **unverifiable**, never **mismatch**. We will not accuse your real
  crawler of spoofing because a resolver blinked.
- Response format is labelled **measured**, **inferred** or **unknown** — and the absence of
  a response is a fourth, different fact.

## The twin is served on `Accept`, never on identity

Markdown goes to a client that asks for it: by requesting the `.md` path or sending
`Accept: text/markdown`. Never because of who we think it is.

Serving different content by User-Agent is cloaking, it forces `Vary: User-Agent` and
destroys shared caching, and it lets a spoofable string decide what a visitor receives. A
browser always gets the page.

## What we collect

No request bodies, cookies, authorization headers, raw query strings or form values. A
visitor's IP is used for coarse geography and crawler verification, then discarded within
24 hours — what remains is a site-scoped, daily-rotating pseudonym.

---

entreprenoid is a Fifth Mind LLC product. Private beta.
