Dashboards your risk managers build, and alerts they define

A treasurer, a credit officer and a head of trading do not want the same screen, and none of them wants to file a ticket to get it. Safetifi ships a dashboard builder instead of a fixed set of reports — and anything you can put on a dashboard, you can turn into an alert.

Start from a template, or from nothing

Six seat templates cover the common desks — prime broker, OTC desk, stablecoin float, exchange and broker, morning review, and blank. Each is a starting point, not a cage: add, remove and resize until the page is the one you actually look at. Dashboards live under Overview, and every user can keep several.

  • Ready-made widgets for the figures every desk needs
  • Six seat templates as starting points, or start blank
  • Widgets span a quarter, a half or the full width, and go full-screen
  • Layouts are saved per user, so nobody edits someone else’s page

The query builder, in plain terms

Pick one of nine datasets — clients, counterparties, venues, net book, liquidity, limits, collateral, positions or alerts — then choose the columns, filter the rows, sort them, group them, total them and cap them. No SQL, and no exposure to the underlying schema. The catalogue lives on the server, so the picker can never offer a field the engine cannot answer.

  • Filter, sort, group, subtotal and paginate without writing a query
  • Column formatting: labels, widths, bars, tints and conditional rules
  • Row-level colour rules driven by a field you do not have to display
  • Trend columns and charts over any metric held in history
  • Click through from a row to the client behind it
  • Export to CSV or Excel with the raw values, not the formatted text

Turn a query into an alert

The reason the builder matters is what comes next. Any query you build can be saved as a watch: when its result goes from empty to non-empty, Safetifi raises an alert; when it empties again, it clears. It is edge-triggered on purpose — a condition that stays true for an hour is one alert, not two hundred and forty.

  • Alert on a condition you defined, not only on the ones we anticipated
  • Edge-triggered: raises on the change, clears when it resolves
  • Managed alongside the built-in alerts, in one place

Thirteen things it already watches

The saved-query watches sit alongside a built-in catalogue grouped by discipline: risk (a client past maintenance, a client approaching its trigger), collateral (a margin call issued, a call past its deadline), margin (a client charged under the venue, a venue changing its tiers), pricing (venues disagreeing on a mark), financing (funding flipping sign) and system (a data source lost or recovered). Each user chooses which kinds reach them and where.

  • Per-user preferences: pick the kinds that matter to your seat
  • Delivered in-app, by email, to Slack, to Telegram, or to a raw webhook
  • The in-app feed is always on — it is the record, not a notification
  • Send a test message to any destination before you rely on it

Live without hammering anything

Dashboards update over a single WebSocket connection. Each distinct widget is evaluated once per cycle no matter how many people are watching it, and a result is only sent when it has actually changed — so a wall of screens costs about what one screen costs. If a proxy blocks the upgrade, the page falls back to polling rather than going blank, and the header says which mode it is in.

Questions

Dashboards & alerting: common questions

No. The builder is point-and-click: choose a dataset, choose columns, filter and sort. There is no SQL, and no need to understand the underlying tables. The field catalogue comes from the server, so the options you are offered are always ones the engine can answer.

Yes — that is the point of saving a query as a watch. If you can express the condition as a filter in the builder, you can have it raise an alert when it becomes true and clear when it resolves.

In-app always, and optionally to email, Slack, Telegram or a raw webhook for a pager or your own handler. Destinations and the kinds that reach them are set per user, and you can send a test message to any destination before relying on it.

No. Widgets stream over one WebSocket connection, each distinct widget specification is evaluated once per cycle regardless of how many people are watching, and results are only pushed when they change.

See it against your own book

A pilot connects one channel against a slice of your live book and reports what it finds — client by client, product by product.