aiwatch AI usage inventory and inline policy
Sample data, synthetic tenants

Brightline Capital (sample)

Every AI tool this organisation's people touched, built from browser and desktop sensor events. Each event is deduplicated on its id within this tenant, checked against the tenant's policy inline, and answered with allow, coach or block before the sensor releases the action.

13
AI apps discovered
8
not on approved list
1529
events ingested
119
retries deduplicated
336
coached in the moment
46
blocked

AI application inventory 13 apps, sorted by interventions

ApplicationStatusRetention riskUsersPromptsPastedUploadsOAuthCoachedBlockedLast seen
ChatGPT (consumer)
OpenAI · Chat assistant
Unapproved high 42 55 381.1 KB 18 6 124 14 1h ago
Grok
xAI · Chat assistant
Unapproved high 30 20 15.5 KB 7 1 47 5 1h ago
v0
Vercel · Code assistant
Unapproved medium 35 25 86.2 KB 3 0 38 2 1h ago
Replit Agent
Replit · Code assistant
Unapproved medium 32 25 112.6 KB 7 2 29 6 1h ago
You.com
You.com · Research and search
Unapproved high 25 12 52.0 KB 6 3 25 8 1h ago
Lovable
Lovable · Code assistant
Unapproved high 20 10 24.3 KB 3 0 30 2 1h ago
Midjourney
Midjourney · Image and video
Unapproved high 18 14 20.6 KB 2 1 25 2 1h ago
deck-builder-ai.example.app
Unknown · Unclassified
Unapproved high 19 18 61.4 KB 5 2 18 7 1h ago
Claude
Anthropic · Chat assistant
Approved medium 45 193 892.9 KB 55 35 0 0 1h ago
Cursor
Anysphere · Code assistant
Approved medium 44 100 456.3 KB 32 13 0 0 1h ago
Perplexity
Perplexity · Research and search
Approved medium 43 59 348.5 KB 16 5 0 0 1h ago
DeepL Write
DeepL · Writing
Approved medium 38 34 208.7 KB 11 3 0 0 1h ago
Anthropic Console
Anthropic · Model API console
Approved low 33 28 269.1 KB 11 5 0 0 1h ago

Sensor traffic

About 8% are replays of earlier event ids, the way a sensor retries after a dropped connection. They are answered with the original decision and never counted twice.

Policy evaluator latency last 1529 decisions

40 nsp50
189 nsp99
250.0 µsbudget
2 decisions over budget. Rules compile into a lookup table keyed by event type, approval status and risk tier, so evaluation does no allocation.

Recent interventions

  • coachReplit Agent · visit
    chloe.m@brightline.example · coach-visit-unsanctioned
  • coachChatGPT (consumer) · visit
    chloe.j@brightline.example · coach-visit-unsanctioned
  • coachChatGPT (consumer) · prompt
    kemi.i@brightline.example · coach-large-prompt-unsanctioned
  • coachChatGPT (consumer) · prompt
    uma.m@brightline.example · coach-large-prompt-unsanctioned
  • coachMidjourney · prompt
    ava.m@brightline.example · coach-high-retention-prompt
  • coachMidjourney · visit
    quinn.n@brightline.example · coach-visit-unsanctioned
  • coachChatGPT (consumer) · visit
    wen.h@brightline.example · coach-visit-unsanctioned
  • coachReplit Agent · visit
    rosa.k@brightline.example · coach-visit-unsanctioned
  • coachv0 · visit
    dev.w@brightline.example · coach-visit-unsanctioned
  • coachChatGPT (consumer) · prompt
    sam.p@brightline.example · coach-high-retention-prompt
  • coachChatGPT (consumer) · prompt
    jonah.h@brightline.example · coach-large-prompt-unsanctioned
  • coachChatGPT (consumer) · upload
    nikhil.o@brightline.example · coach-high-retention-prompt
  • coachChatGPT (consumer) · prompt
    chloe.h@brightline.example · coach-high-retention-prompt
  • coachMidjourney · visit
    isla.f@brightline.example · coach-visit-unsanctioned
  • coachGrok · prompt
    farid.k@brightline.example · coach-high-retention-prompt
  • coachYou.com · prompt
    nikhil.s@brightline.example · coach-high-retention-prompt
  • coachReplit Agent · visit
    rosa.k@brightline.example · coach-visit-unsanctioned
  • blockChatGPT (consumer) · upload
    sam.p@brightline.example · block-sensitive-upload-unsanctioned
  • coachv0 · visit
    quinn.n@brightline.example · coach-visit-unsanctioned
  • coachv0 · visit
    dev.w@brightline.example · coach-visit-unsanctioned
  • coachChatGPT (consumer) · visit
    chloe.j@brightline.example · coach-visit-unsanctioned
  • coachv0 · visit
    yusuf.k@brightline.example · coach-visit-unsanctioned
  • coachv0 · visit
    dev.n@brightline.example · coach-visit-unsanctioned
  • blockChatGPT (consumer) · upload
    liam.n@brightline.example · block-sensitive-upload-unsanctioned
  • coachv0 · visit
    liam.m@brightline.example · coach-visit-unsanctioned
  • coachChatGPT (consumer) · visit
    hiro.a@brightline.example · coach-visit-unsanctioned
  • coachChatGPT (consumer) · visit
    rosa.k@brightline.example · coach-visit-unsanctioned
  • coachv0 · visit
    elena.h@brightline.example · coach-visit-unsanctioned
  • blockYou.com · upload
    hiro.a@brightline.example · block-sensitive-upload-unsanctioned
  • coachChatGPT (consumer) · prompt
    liam.n@brightline.example · coach-high-retention-prompt
  • coachLovable · prompt
    rosa.k@brightline.example · coach-high-retention-prompt
  • coachChatGPT (consumer) · prompt
    tara.m@brightline.example · coach-high-retention-prompt
  • coachChatGPT (consumer) · prompt
    elena.h@brightline.example · coach-high-retention-prompt
  • coachMidjourney · prompt
    sam.j@brightline.example · coach-high-retention-prompt
  • coachReplit Agent · visit
    maya.r@brightline.example · coach-visit-unsanctioned
  • coachChatGPT (consumer) · visit
    grace.p@brightline.example · coach-visit-unsanctioned
  • coachdeck-builder-ai.example.app · prompt
    chloe.n@brightline.example · coach-high-retention-prompt
  • coachYou.com · visit
    sam.p@brightline.example · coach-visit-unsanctioned
  • coachLovable · visit
    chloe.j@brightline.example · coach-visit-unsanctioned
  • blockMidjourney · upload
    rosa.k@brightline.example · block-sensitive-upload-unsanctioned
  • coachReplit Agent · visit
    chloe.a@brightline.example · coach-visit-unsanctioned
  • coachGrok · prompt
    dev.w@brightline.example · coach-high-retention-prompt
  • coachv0 · visit
    isla.w@brightline.example · coach-visit-unsanctioned
  • coachChatGPT (consumer) · prompt
    ben.o@brightline.example · coach-high-retention-prompt
  • coachGrok · visit
    grace.p@brightline.example · coach-visit-unsanctioned
  • coachYou.com · prompt
    chloe.n@brightline.example · coach-high-retention-prompt
  • coachGrok · prompt
    zara.n@brightline.example · coach-large-prompt-unsanctioned
  • coachGrok · visit
    wen.h@brightline.example · coach-visit-unsanctioned
  • coachYou.com · prompt
    quinn.n@brightline.example · coach-high-retention-prompt
  • coachGrok · visit
    grace.p@brightline.example · coach-visit-unsanctioned
  • coachChatGPT (consumer) · prompt
    chloe.m@brightline.example · coach-high-retention-prompt
  • blockYou.com · upload
    isla.f@brightline.example · block-sensitive-upload-unsanctioned
  • coachChatGPT (consumer) · visit
    sam.j@brightline.example · coach-visit-unsanctioned
  • coachMidjourney · prompt
    isla.f@brightline.example · coach-high-retention-prompt
  • coachReplit Agent · prompt
    kemi.s@brightline.example · coach-large-prompt-unsanctioned
  • coachChatGPT (consumer) · visit
    dev.n@brightline.example · coach-visit-unsanctioned
  • coachChatGPT (consumer) · prompt
    chloe.m@brightline.example · coach-large-prompt-unsanctioned
  • coachReplit Agent · prompt
    liam.n@brightline.example · coach-large-prompt-unsanctioned
  • coachChatGPT (consumer) · prompt
    farid.k@brightline.example · coach-high-retention-prompt
  • coachChatGPT (consumer) · visit
    quinn.w@brightline.example · coach-visit-unsanctioned

Active policy first match by severity: block, then coach, else allow

blockblock-sensitive-upload-unsanctioned

On upload to unapproved apps; risk tier medium or higher; data or secret file type.

"Uploading data files to an unapproved AI tool is blocked. Use {alt} instead."

blockblock-broad-oauth-unsanctioned

On oauth_grant to unapproved apps; mail, file or code scopes.

"This app asked for access to mail, files or code. Grants to unapproved AI apps are blocked."

coachcoach-large-prompt-unsanctioned

On prompt to unapproved apps; content at least 4.0 KB.

"That is a large paste into an unapproved tool. {alt} is approved for this and keeps your data out of training."

coachcoach-high-retention-prompt

On prompt, upload to any app; risk tier high or higher.

"This tool may retain or train on what you submit. Leave out customer data, or switch to {alt}."

coachcoach-visit-unsanctioned

On visit to unapproved apps; risk tier medium or higher.

"This AI tool is not on the approved list. {alt} covers the same job."

Sensor ingest API

curl -s https://aiwatch.levelbrook.com/v1/events \
  -H 'Authorization: Bearer sk_demo_brightline' \
  -d '{"id":"evt_demo_001","user":"ava.k@brightline.example","sensor":"browser",
       "type":"upload","domain":"chat.deepseek.com","file_ext":"csv","content_bytes":482113}'
The tenant comes from the sensor key, never from the body; a body that names another tenant is refused with 403. Prompts arrive as a SHA-256 of redacted content plus a size, and the decoder rejects unknown fields, so raw prompt text cannot be stored by accident. Send the same id twice and the second call returns "status":"duplicate" with the original decision.