Capture & fix · AI investigations

It reads your code,not just the ticket.

Tore investigates every bug against your repository as it is today, with your errors, metrics and past fixes beside it. Your engineer gets a root cause down to the file and line.

Tore opens soon. Join the waitlist and we'll email you the day you can start.

app.tore.ai/beacon-data/investigations/INV-2291
Example data
Tore is investigating INV-2291Beacon Data · opened on its own from a new Sentry error
investigating
  1. Gemini Pro · med
    ExportRowMismatchjobs/export/run.ts · 41 events · 17 users · since 09:05
  2. Gemini Pro · med
    export_rows_writtenp95 · last 14 days
  3. Codex Astra · high
    jobs/export/paginate.tsmain · read 09:14
    55 while (cursor !== undefined) {
    56 const res = await fetchPage(query, { cursor })
    57 cursor = null
    58 rows.push(...res.rows)
  4. Codex Astra · high
    refactor(export): simplify page loopa41c9e2 · beacon/app · 2 days ago
    Dan
  5. Claude Opus · high
  6. Claude Opus · high
  7. Claude Opus · high
    jobs/export/paginate.ts:576 sources read · Sentry · Grafana · code · commit · TCK-311 · customer report
    Root cause
  8. Claude Opus · high

Stop investigatingthe slow way.

The part of a bug that eats an afternoon is finding it. Tore does that part before your engineer opens the ticket.

It reasons about today's code

Every investigation reads your live repository, so it never works from a snapshot of code you already changed.

Guessing from the ticket text

An answer, not a search

The root cause comes back as a file and a line, with the commit that last touched it.

Searching the repo for the error string

It remembers past fixes

It learns from your old tickets and fixes, so it gets to the right file faster every time.

Solving the same bug twice

You can check its working

It shows everything it looked at, not just what it concluded, so you can verify the reasoning before you trust it.

Taking the AI's word for it

From the chat widget

It starts with a report your customer made in seconds. Pinned element, marked-up screenshot, screen recording and the last 30 seconds, sent from your chat widget and linked to the matching error.

  • Pin the element
  • Marked-up screenshot
  • Screen recording
  • Last 30 seconds
  • Console and network
  • Secrets stripped
See the bug tools

From first errorto the exact line.

Your code, as it is today

It reads the repository you connect.

Tore opens the file that threw, the commit that last changed those lines and the code around them, at the moment it investigates. Not a copy it memorised months ago.

  • Reads the live repository, so it never reasons about code you already changed
  • Root cause reported down to the file and line, with the commit and its author
  • Connected through a GitHub app you can revoke in one click
  • Your code is never used to train a model
beacon/app · jobs/export/paginate.ts
Example data
Read on main at 09:14:06live, not cached
52export async function exportAll(query) {
53 const rows = []
54 let cursor = query.start
55 while (cursor !== undefined) {
56 const res = await fetchPage(query, { cursor })
57 cursor = null
58 rows.push(...res.rows)
59 }
60 return rows
Dan
Line 57 · a41c9e2 · Dan, 2 days agorefactor(export): simplify page loop
culprit

Every source, one report

The evidence arrives together.

The error, the metric that moved, the commit and what the customer actually saw, side by side in one investigation. No six tabs, no Slack thread to reconstruct it.

  • Sentry errors and stack traces, grouped by fingerprint
  • Grafana metrics and logs, read-only, without giving it shell access
  • The customer's report linked to the matching error
  • Past tickets and fixes that touched the same code
INV-2291 · evidence
Example data
Sentry
ExportRowMismatch41 events · 17 users · first seen 09:05
Grafana · read-only
export_rows_writtenflat at 500 since deploy
GitHub
a41c9e2 · simplify page loopDan · 2 days ago · touched paginate.ts:57
Customer report
Priya

"My export stops at 500 rows. I have 912 contacts."

Past fix TCK-311: same cursor bug, contacts exportFixed by Hana · checked this pattern first
What it looked at: stack trace2 metrics4 files1 commit1 report1 past fix

Before anyone writes in

It starts on its own.

Connect your error tracker and a new error becomes an investigation without anyone filing a ticket. Often the root cause is ready before the first customer notices.

  • New errors open investigations without a human filing anything
  • Grouped by fingerprint, so one bad deploy is one investigation
  • Thresholds decide what is worth picking up and what is noise
See Error monitoring
beacon/app · error stream
Example data
Incoming from Sentryproduction
ExportRowMismatch · run.ts:88user 4471
ExportRowMismatch · run.ts:88user 1902
ExportRowMismatch · run.ts:88user 3318
ExportRowMismatch · run.ts:88user 0254
ExportRowMismatch · run.ts:88user 2760
41 events · 1 fingerprint · threshold met
Investigation INV-2291 opened09:14 · nobody filed it · 0 customer tickets yet

Budgets and limits

It will not run away with your bill.

You set how much each investigation may spend, what it ignores and how many it can start in an hour. One switch stops work that is already running.

  • A spend cap per investigation and a budget for the month
  • An ignore list for known noise, and an always-escalate list
  • Hourly and daily limits on what starts on its own
  • A kill switch, and at zero budget your support keeps working
See AI controls and spend
Settings · Investigations
Example data
Spend cap per investigation$1.24 of $2.00
Starts on its own10 an hour · 50 a day
Ignore list3 rules
ResizeObserver loop limitChunkLoadError · stagingNetworkError · offline
Always escalate to a personlocked
authenticationbillingmigrationspersonal data
Kill switch RunningStopped
Stopped 2 running investigations. Support keeps answering.

Correct it

Think the cause is somewhere else? Say so.

Your engineer tells Tore where to look. It re-checks against the evidence, updates the investigation and remembers the correction next time.

INV-2307 · discussion
Example data
Tom · engineer

Not the export loop. The rate limiter on /api/contacts is cutting it off.

Tore · re-checked

You're right. 429 responses from api/limits.ts line 22 start at 09:05 for this workspace. Diagnosis updated.

Cause moved to api/limits.ts:22Learned: check rate limits on export reports

Tune it

Investigations at once 3Per investigation cap $4.00, then asks a personModel for root cause Claude Opus · high
All AI controls →
file:lineEvery root cause points to a file and a line in your code
6Kinds of evidence in one investigation: code, commits, errors, metrics, past fixes, customer reports
1 clickTo revoke Tore's access to your repository
1 switchStops every investigation already running

Connect a repository.Get your first root cause.

Install the GitHub app, point Tore at your error tracker, and the next bug is investigated before anyone has to ask.

You're on the list. We'll email you the day you can start.

Get early access when Tore opens. No spam.