truefold
Signals

The one surface that comes to you.

Dashboards and chat both wait to be opened. Signals is what makes the platform useful on the days nobody logs in with a question: a short morning briefing of what changed, ranked by the money at stake, with the evidence inside the item rather than a link to go verify. Capped at three alerts and two insights, because the fastest way to lose an alerting channel is to send a fourth one that didn't matter.

01 · The briefing

Three things, ranked by money, at 7:40 in the morning.

Every other surface is pull — you have to know to open the dashboard and know what to ask the chat. Signals is the one that comes to you. It is deliberately short: at most three alerts and two insights, ranked by dollars at stake, each written as a sentence a person would actually say out loud.

  • Ranked in money, never percent: a 60% swing on $12 a day is noise, and treating it as news is how alerting gets muted
  • Hard cap on the surface: three alerts, two insights. Enforced by design, not by hoping the ranking behaves
  • Spend floors before any ratio fires: "CPA up 340%" on $47 of spend is not a finding
  • Baselines that know what day it is: same-weekday trailing weeks, so Saturday isn't an emergency every week
  • New things are left alone: campaigns younger than about a week, and anything you changed in the last two days, stay quiet
  • Every item states its counterfactual: expected, actual, window, and how the baseline was built. No expectation means no finding
In practice

It also reports the silence. “Nothing else needs you today — 214 checks ran across 4 sources, none crossed threshold.” An empty inbox and a broken pipeline look identical unless somebody says which one it is, and the quiet mornings are what make the loud ones credible.

This morning2 alerts · 1 insight
  • Alert$36.8k understated

    Shipping cost is recorded on 4% of orders, so every margin below is a floor.

    Expected: near-complete. Actual: 250 of 6,285 orders carry a real figure.

  • AlertRecoverable today

    60% of Google Ads spend is losing impressions to budget rather than rank.

    Budget-lost impressions respond to budget. Rank-lost ones don't.

  • InsightMER 6.00× → 5.05×

    Discounts are costing 3.4% of net sales — enough to move headline efficiency 16%.

    Promo cost counted as marketing spend, four weeks, all channels.

Nothing else needs you today. 214 checks ran across 4 sources — none crossed threshold.

02 · The checks behind it

A check stays silent until your data can actually answer it.

Checks are declarations, not code: each one names the roles it needs — a metric, a dimension, a source — and binds to your layer only if you have them. Anything it can't satisfy lies dormant instead of firing on an empty table. That is why the briefing doesn't fill up with findings about data you never connected.

  • Bound to roles, not tables: a check asks for "an efficiency metric", and your layer decides what that is
  • Dormant by default: no data to satisfy it means no check — not a false positive, and not a zero presented as a fact
  • Freshness gates the rest: a business alert never fires off a stale sync; "revenue collapsed" because a pipeline broke is the fastest way to lose the channel
  • Data health today: a source that stopped arriving, and columns added, removed or retyped upstream
  • Three origins, each badged: the library we ship, thresholds you set on top of it, and checks you author yourself
  • Every signal ends: each one reaches a terminal state and closes itself when the condition stops holding. If you can't kill an item, you kill the channel
In practice

Cross-connector is the part no single platform can do. Meta can tell you a campaign's CPA; it cannot tell you that campaign is spending against three sold-out SKUs, or that the revenue it claims disagrees with the orders Shopify recorded. Those checks are the reason the semantic layer exists.

Check catalogbound to your layer
  • Source stopped arriving
    requires: any connected source
    Armed
  • Schema changed upstream
    requires: any connected source
    Armed
  • Margin resting on assumed costs
    requires: a coverage metric
    Armed
  • Spend against out-of-stock SKUs
    requires: inventory + spend
    Dormant
  • List growth stalled
    requires: list membership
    Dormant

A dormant check is not a gap in the product. It is the product declining to report on data you haven't got — which is the same rule the metrics follow.

  • Read-only on every source.

    Truefold pulls; it never writes. Nothing in your store, your ad accounts or your flows changes because you connected us.

  • Isolated, and minimised on the way in.

    One BigQuery dataset per organisation, used by nobody else. Customer names, email addresses, phone numbers and shipping addresses are dropped before anything is written.

  • The definitions are yours to adjust.

    Rename metrics to your team's language, correct anything that doesn't match how you run the business. Version-controlled, with a name against every change. We don't train AI on your business data.

See it against your own numbers.

Beta access is going out to Shopify brands a few at a time. Tell us what you're running and we'll walk you through what it finds.