Currently in alpha. Sign up free. Expect a few rough edges.
Docs

How Overscore tells you

An alert watches a number or finds rows that should not exist. The admins hear everything, anyone you add hears that one thing, and all of it lands in the Inbox.

What an alert is

An alert watches your data and tells people when something is off. You can build two kinds.

  • A number against a line. Net sales for last week below $60,000. Cost per lead above $45. The number is one of your metrics, or the number your own query gives, for when the number on the dashboard is too jumpy to watch as it is.
  • Rows that should not exist. Leads with no email address. Orders with no customer. It is a query that finds the bad rows, and it fires when the query returns anything.

Where an alert lives

An alert lives on a dashboard, the one whose numbers it watches. Open the dashboard, go to its Alerts tab and press New alert. The form starts with that page's own metrics. Dashboards, Alerts lists every alert in the company, grouped by dashboard.

An alert made in a chat, or made before alerts had dashboards, sits under Not on a dashboard until someone picks one for it on the alert, under On dashboard. Deleting a dashboard keeps its alerts. They move under Not on a dashboard, and the list says so.

Who gets told

Every admin gets everything, by email and on a phone that has notifications on. Anyone else gets only what they were added to. To add one person to one alert, open the alert and use Add or remove people under Who gets this. An email source has the same kind of list, Who to tell, on its own page.

Settings, Alerts shows who gets what in one table, every member with what they get in a few words. Click an admin to switch off a dashboard, all sources, or one of the data problems for them. Click anyone else to see what they were added to.

What tells you on its own

Some things tell the admins without anyone setting up an alert.

  • A source whose file is late or whose pull failed.
  • A check that failed on new rows, so the model was not updated.
  • A build that failed.
  • The plan's month nearly used.
  • Something paused, such as an alert or an email whose maker has left.

The admins hear all of these unless they switched them off on Settings, Alerts. An email source also tells its own Who to tell.

Each says what happened in its own words, and every place says the same words. A failure is the agent's own message ("I saw the Shopify sync fail at 6:02 am on Oct 21... Want me to run it again?"), an alert one sentence ("Net sales for last week came in at $56,702, below the $60,000 line you set."). The email says the message, the fix on the card and the link that opens it, and the phone and Slack say its first line with that link. A card about something that broke says what looks wrong. When AI on its own is on (Settings, Company), the AI writes that from the run's error and its log. When it is off, a rule of thumb does, and the card says so.

Slack

A Slack channel can get the same things. On Settings, Alerts, under Also posted to, press Add a Slack channel, give it the channel's name and paste the channel's incoming webhook. Overscore sends one test message before it saves it. Each channel gets everything until you switch some of it off, with the same switches an admin has. Slack comes with Self-serve and Done for you.

The Inbox, once per incident

Everything lands in the Inbox, whoever else hears it. The same thing again is the same card, and the card counts the times ("Failed 5 times and worked the next time" under Handled for you). When it is fine again the card closes itself, and the next time this month reopens it.

Mail, phones and Slack hear once per incident. A reader that fails every hour mails once and its card counts the hours. A new incident inside a day of the last mail waits for the next one. The card says whom it reached ("Sent to Rachel Moore and Ben Carter by email, 1 phone and Slack"), so you can tell whether Rachel got it. A channel that fails ten times in a row is paused with a card until an admin changes one of its switches.

It looks into it first

Before an alert reaches you, Overscore looks into it. It checks whether the data under the number is fresh, whether a sync landed far fewer rows than usual, which part of the number moved, and whether the definition changed. The card says what it found. When AI on its own is on (Settings, Company), it also says it in a few sentences, written by AI from those facts and checked against them.

What it found is a few lines under the number and its line, such as "Shopify has been behind since Tue 6:02 am, and its syncs since then landed nothing", "Online: $11,500 of the $11,850 fall" and "Definition unchanged". A source that is behind comes with the fix its own card offers. The sentences sit above the lines, with a line under them that says AI wrote them from the facts and they were checked. Every figure in them has to be one the facts give. A claimed fall or rise must match that part's change, direction and comparison period. A current total cannot stand for a fall. If a second draft still fails the check, the card goes with the facts alone. When AI on its own is off, or at its ceiling for the month, the card is the same without the sentences.

It looks once each time an alert crosses its line, and the AI writes once. The email says the same. Slack says the lines under the message, and the phone says the message with the first of them. Ask about it on the card opens a chat that already has what it found. On the alert's own page, each check that told says how long the look took and what the sentences cost.

The looking is by code. It looks into a number against a line when the number is one of your metrics, or your own query built on one. Rows that should not exist are not looked into, since the rows are what it found. Claude Code can do the same looking with no AI spent in the app (Agents and keys says how).

The list and the alert

Dashboards, Alerts is a table in groups by dashboard. Each alert is named by what it watches ("Net sales last week below $60,000"), with the number now, who it tells and when it last checked. A dot marks one past its line or one whose check failed. One that cannot judge yet says what it is waiting for ("Waiting for last month to settle", "Waiting for Shopify to arrive"). A paused one says Paused. A dashboard's own Alerts tab has that page's alerts, each by its name, the line it watches, the number now, who gets it and when it last checked.

Click one and it opens on the right. First comes how it is calculated, which is the metric, as a link, with its period, or the query itself. Then comes who gets this, with Add or remove people for whoever made it or an admin, and Tell me too or Stop telling me for yourself. Then come the number now, how often it checks with Check now, the dashboard it is on, and its last checks. Under them are Ask about it, which opens a chat with the alert's question, Edit, Pause or Resume, and Remove.

Setting one up

New alert asks first what to watch, a number or rows that should not exist. A number is a metric for a period that has ended (last week, last month, last quarter or last year) against a line, as in Watch net sales for last week is below $60,000. A period still moving would wait for data and never be judged. Before you save, the form says what the number is right now and whether it would tell anyone. Only where narrows the metric to some of its rows, as a condition in SQL. Leave it empty to watch the whole number.

Write a query instead swaps the metric for your own query, which gives one row with one number. Cost per lead swings all morning while spend is thin, so watch the last six hours and only once spend is past $200. Put that guard in the query (having sum(spend) > 200), so no row means too early to judge, and nothing is said. Rows that should not exist is a query alone.

Then come how urgent it is, how often it checks, and who gets it. More holds the rest, which most alerts leave alone. That is how long it stays quiet after telling you, and how many fine checks before it can tell you again. An alert the assistant saves for you in a chat shows there as a card with Open the alert.

On Free nothing runs on a timer, so an alert is saved switched off and checks when you press Check now.

How a check tells

Checking and telling are separate. A breach tells once, then stays quiet while the number stays past the line. Two healthy checks in a row close its Inbox card and make it ready to tell again. A new breach inside the quiet time after it told (Then quiet for, under More, a day unless you change it) waits until that time passes, then tells if it is still breached. A young or incomplete period, or late source data, waits for data instead of sounding a sales alarm. A check that fails (the query broke, a table went away) tells nobody, and ten failures in a row pause the alert with a card saying why.

The email, and the notification on a phone, open that alert in the app with its number now and its last checks. The Inbox card sits under Broke or went quiet, with Open the alert and Noted, and calls it what the list calls it. Check now checks an alert without telling anyone. Saving does the same once, so a broken query never gets saved. Every check is kept, the one on save and the ones by hand included, with when, the value, the line at the time and whether anyone was told.

Your own copy

Anyone it tells can stop their own copy, and anyone in the company can ask for one, without the person who set it up. Every alert email ends with Stop sending me this. One click, with no sign-in, stops that one copy and nobody else's, and the page it opens has Send it to me again. Your mail app's own Unsubscribe button does the same. On the alert, Stop telling me and Tell me too do it in the app. Notifications on your phone follow what you chose.

Stopping does not change the alert's list. Whoever made it, and an admin, see who stopped ("Ruth stopped"), and putting Ruth back on the list does not start it again. Only Ruth can, so ask. If everyone stops, the alert still checks and still puts its card in the Inbox.

Who sees which alerts

An alert reads as the person who made it, read only, so it never sees more than they could. An admin, and anyone in the Everything group, sees every alert. A key sees one, with its values and history, only when it reads everything the alert reads.

Someone in any other group sees the alerts on the dashboards shared with their group, and the ones they made themselves, under Settings, Account in one table with their emails. Pause and Delete are on the ones they made. Theirs watch a metric shared with their group, never a query of their own, and tell them alone. They make one in a chat. If that metric stops being shared with them, the alert stops checking and its history says why. An alert someone made while they were in Everything follows them when an admin moves them to another group. It checks only while that group has its metric, and one that runs its own query stops checking.

Only its maker or an admin changes one, and two keys made on Settings, Agents are two makers. If the key that made it is revoked, or the person who made it leaves, the alert pauses and a card in your Inbox says whose it was. Someone who has left is not told.

What to say to it

Tell me when net sales for last week drop below $80,000.
Watch cost per lead on the last six hours, once spend is over $200, and warn me above $45.
Alert me if any lead from today has no email address.

All docs · Something wrong on this page? Tell us.