← All releases
Product v0.4 May 10, 2026

Custom signals — compose, preview, visualise

This release rebuilds custom signals around a different primitive: atoms. Until now, defining a custom signal meant typing a prompt and hoping the LLM interpreted you correctly. Every backfill was a fresh LLM run. Now you compose signals by clicking coloured tokens drawn from the same vocabularies our pipeline already extracts. Same rule shape across customers means shared caches, deterministic compiles, and a live preview that shows you exactly what the rule will surface before you save it.

The composer flow

Three surfaces, left to right: a palette of atoms, a canvas where you compose, and a live preview that updates 400ms after every click. No syntax. No "compile and wait." Click an atom, see what changes.

PALETTE CANVAS LIVE PREVIEW event industry region size keyword window Hiring spike DACH 50 to 500 "Hiring spike · DACH · sized 50–500" CACHED 12 MATCHES Acme Robotics Northwind AG Helios Solar UG

The cost gradient

Every preview also tells you how the rule will run. Four tiers, driven by what's already cached across customers and whether you added a free-text rider on top of the atoms:

GREEN · CACHED YELLOW · NEW COMBO ORANGE · VERIFIER RED · BROAD Inherited rule. Zero cost. Save and matches appear. Unique atoms combo. Deterministic compile, backfill on save. Rider on top of atoms. LLM runs the pre-filtered slice only. Free text, no atoms. LLM reads every article. Costly. The canvas nudges you left as you add atoms.

The free-text rider

Atoms cover the patterns we've seen across thousands of customers. They won't cover everything. Below the canvas sits a small textarea, the rider, for clarifiers atoms can't express ("must mention SAP HANA in the headline", "only if the role is senior level"). Adding a rider flips the pill to orange because we still need an LLM verifier, but the atoms ensure that verifier only sees a pre-filtered slice of the corpus, not the whole thing.

The company-signals graph

Open any company detail page and look for the new Graph view button next to "Send email." Every signal Surfacer extracts about that company laid out as an interactive node map. The company sits at the centre. Around it, one node per signal category (jobs, growth, drift, pricing, hiring intent, snapshots, news, custom signals) colour-coded to match the dashboard's Live Signals badges. Empty categories are quietly hidden so sparse companies don't get phantom edges.

This is for the moment when you want to see the shape of a company's activity at a glance, not just read facts off the detail page.

Why atoms?

Two reasons: cost and quality.

Cost. Two customers picking the same atom combination produce identical rules. One canonical compile, one canonical evaluation, one cache that serves everyone. The platform gets cheaper for everyone the more customers use it.

Quality. Atoms map directly onto the structured facets our pipeline already extracts. When you say "Automotive", the rule matches against our computed industry tag, not whatever the LLM guessed "automotive" meant today. Fewer false positives, no drift between rules.

How to use it

  1. Hit + Create a signal from the Custom Signals page.
  2. Click 2 to 4 atoms from the palette. Pick an event type first, then narrow with industry, region, or size.
  3. Watch the plain-English summary and the live preview update. Green pill means you're inheriting a cached rule, save and the matches appear immediately.
  4. Yellow pill means save anyway. We'll backfill against your historical corpus in the background.
  5. Need precision atoms can't express? Add a rider. Pill flips orange, verifier runs on the atom-filtered slice.

What's next

Three more pieces of the composer are queued: a templates ribbon (popularity-sorted starter signals you apply in one click), smart text-to-atom suggestions that convert riders back into atoms as you type, and edit / duplicate / pause from the list view without recomposing.

The atom catalog itself is also growing. Telemetry tells us which combinations get picked, abandoned, or hit the orange tier because the catalog couldn't express the intent. That feedback drives what we add next.