Behavioral intelligence for AI coding agents

Your AI built the app.
Now it can see what’s broken — and fix it.

Drop-in behavioral tracking your AI coding agent can read, query, and act on — in one conversation.

Fig. 0 — Install
<script
  src="https://useractivity.ai/tracker.js"
  data-site="YOUR_SITE_ID"
  defer
></script>
One tag. Zero config. Every behavioral signal, captured — no event taxonomy to design, no SDK to wire up.
§ 01

The problem

Millions of apps ship from AI coding tools every month — fast, and blind.

Shipped in hours. Shipped blind.

AI tools never add analytics

Prompt “build a signup flow” and you get the flow — not tracking for drop-offs, rage clicks, or abandonment. Observability is never on the happy path.

Built for dashboards, not agents

PostHog, Mixpanel, Amplitude output charts for humans. Not a knock — a different job. Your agent needs structured data and prose it can reason about.

The loop stays open

You can’t say “users drop off at step 3 — fix it” and have your agent act on real behavioral data. Behavior and code never meet.

§ 02

The moat

record_change → get_change_impact. The step every other tool skips.

The loop other tools leave open

the loop closes — record_change → get_change_impactObservetracker.jscaptures behaviorReadagent queriesstructured dataFixagent shipsthe changeConfirmdid it work?get_change_impact
Collecting behavior is table stakes. Closing the loop is the product.

Fig. 1 — The closed loop. Every analytics tool stops at “here’s the data.” UserActivity adds the return arc: your agent records a change, then get_change_impact measures whether it actually worked. Watch the whole loop close, with sample data →

§ 03

How it works

Three steps, one conversation

1 — One script tag

Paste a single line into your HTML. Works anywhere — React, Vue, Svelte, vanilla, Lovable, Vercel.

<script src="https://useractivity.ai/tracker.js" data-site="YOUR_SITE_ID" defer></script>

2 — Connect your agent

Add the hosted MCP server to your project. Nothing to install — your agent connects directly.

// .mcp.json (Claude Code, Cursor, etc.)
{
  "mcpServers": {
    "useractivity": {
      "type": "http",
      "url": "https://useractivity.ai/api/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

3 — Close the loop

Ask about real user behavior. Your agent queries the data, finds the problem, fixes it, and confirms the fix — all in one thread.

You:   “Users aren’t converting on signup. What’s wrong?”

Agent: [calls get_frustration_signals for /signup]

Agent: “The signup page scores 34/100. 67% never scroll past
       the first fold and 11% u-turn. Move the CTA above the
       fold? I can ship it and check whether it worked.”
§ 04

The output

Same data over MCP, CLI, or a context file committed to your repo.

What your agent sees

Not a dashboard. Structured payloads and natural-language summaries, designed to be read by a model and acted on in the same turn.

Fig. 2 — API response · /api/v1/frustration
{
  "command": "frustration",
  "site_id": "abc-123",
  "score": 72,
  "narratives": [
    { "severity": "warning",  "summary": "Dead clicks on /pricing",
      "detail": "12% of sessions click non-interactive elements" },
    { "severity": "critical", "summary": "Rage clicks on checkout submit",
      "detail": "8% of sessions show 3+ rapid clicks on .btn-submit" }
  ]
}
Fig. 3 — MCP tool response · get_change_impact
// get_change_impact({ change: "moved CTA above the fold" })
{
  "verdict": "improved",
  "frustration":  { "before": 34, "after": 71 },
  "scroll_reach": { "before": "33%", "after": "78%" },
  "summary": "The fix worked. Fold drop-off fell 45 pts;
             rage-clicks on .btn-submit are gone."
}
The verdict line is the whole point — and the only green in the payload.
§ 05

Honest by default

Source-available so you can verify exactly what is collected.

Built in the open, by one person

Privacy by default

No PII, no session replay, no fingerprinting. Cookieless by default — one first-party cookie only under an explicit consent signal. Anonymous behavioral patterns, truncated at every boundary. DNT and GPC respected.

Source-available

The tracker is MIT — audit exactly what runs in your users’ browsers. Read the source →

Development Preview

UA.ai is in Beta and tracks its own usage with itself. What works today →

Built independently

One person, in public, by Roarke.

§ 06

Pricing

Free while you find the loop

Usage-based, not access-gated. Every feature is free through 500K events/month; paid plans kick in only when you scale. Founder pricing for early teams on the waitlist.

See the loop close — no signup.

A populated dashboard and the full agent walkthrough — your agent finds a problem, fixes it, and confirms the fix worked — on sample data you can explore right now.