read this before you paste a key
a stranger wants your posthog key and a github token. fair to be suspicious. here is every read, the one write, and the file names.
bevel is one loop, on repeat:
watch posthog + github + vercel + the public web
decide up to 3 tickets per scan. ceiling, not quota.
every rec gated and verified before you see it.
hand the move, ready to use: leads, a draft, copy,
or a claude code prompt. whatever the ticket needs.
track did the number move? checked on a later scan.everything below is the fine print on that loop. it stays boring on purpose.
you paste a personal api key (you create it, read-only) and a project id. bevel finds your cloud region (us or eu) and then runs queries against posthog's query api. the queries: a 30-day overview (event count, unique users, sessions), top pages, top events, daily active users, high exit-rate pages, feature request and feedback events, error spikes, survey and nps responses. it filters out localhost traffic so your own dev clicks don't pollute the read.
the scanner is one file, src/lib/scanners/posthog.ts, and every call in it is a query. there is no code path that writes to posthog.
you create a classic personal access token with reposcope, labeled “bevel access” so it's easy to find in your token list and revoke in one click. bevel reads: repo metadata, the file tree, key files like README and package.json, current file contents on demand (capped at 60KB per read), the last 10 commits, open PRs with their age (flagged stale at 7 days), and the latest ci run.
straight talk: github's classic repo scope is read/write. there is no read-only classic scope. so the guarantee is behavior, not token math. the only call that writes is create_github_issue in src/lib/agent/tools/ship.ts, and it fires only when you explicitly say ship. it opens an issue labeled bevel with the claude code prompt in the body. no pushed commits, no opened PRs, no edited files, ever. if you want the token itself locked down, use a fine-grained token with read-only contents on one repo. everything works except issue creation.
you paste a token (read-only is fine) and pick the project. bevel polls the rest api for the last 20 deploys: succeeded vs failed, the error lines from the most recent failed build, build durations, and what's live in production right now. no webhooks, no writes. src/lib/scanners/vercel.ts.
bevel also reads public pages while reasoning: your landing page, reddit and hacker news mentions of your product. nothing to grant here.
[drop-off] "/pricing" has 71% exit rate. not raw event streams, not your users' profiles.purge windows, same numbers as /privacy: disconnect a source and bevel stops pulling immediately and purges that source's cached data within 7 days. delete your account and everything is purged within 30 days, including backups. want your data out first? email victor and you get a JSON export within a week.
claude, running on aws bedrock. your prompt and the relevant slice of your source data go to bedrock for inference and come back. aws does not use bedrock inference data to train models. neither do we: recommendations are generated on demand from your data and discarded server-side after the response.
nothing during beta. soft caps keep our model bill sane: 100 manual scans and 5,000 chats a month. the 12h watcher runs regardless. hit a cap, email victor@bevel.sh and we'll bump your limits. details on /pricing.
get startedstill skeptical? good. email victor@bevel.sh with the hard questions and he'll show you the code.