Home

Signal engine · GTM home

A startup announces a funding round, and sixty seconds later an AE has a researched, personalized outbound email waiting for review.

That is the whole system. Funding rounds and Brex-displacement complaints are captured, scored against the ICP, and drafted for a human to approve. Anyone on the GTM team extends it in plain English — no engineer, no ticket.

Business banks already sell on signals. A Stripe Atlas formation partnership puts an account in a founder's hands at incorporation, before the EIN arrives. This is the same motion one stage later, at the raise, when the money actually lands.

What the machine is producing

Signal records

48

live RSS + seeded history

Qualified companies

22

scored 60 or above

Drafts pending review

44

nothing auto-sends

Approval rate

100%

2 drafts decided

Live operational counts, not closed-won pipeline.

Extend it without an engineer

a rep describes what they want in plain English, and the system builds it

Displacement window · the Brex harvest

Capital One closed the Brex acquisition

April 7, 2026

The independence wedge is a harvest window, not a permanent signal. Every day it narrows.

Displacement signals captured

3

companies on the wedge

Avg score vs funding

79 vs 52

displacement runs hotter

Qualified + drafts approved

3 · 1

scored 60+ · approved to send

Displacement signals score on Intent: naming Brex maxes the axis at 25/25.

How it works · listen → score → draft → review

Step 1

Listen

Public funding signals and displacement complaints, streamed in and deduped.

TechCrunch RSSFinsmes RSSmanual + live trigger

Step 2

Score

Claude scores each signal against the ICP with a rubric matched to its type.

Fit × Timing × Access × Intentpost-raise, pre-CFOBrex-displacement wedge

Step 3

Draft

Two personas drafted per qualifying company, sign-off guaranteed in code.

Founder / CEOFinance lead60+ threshold

Step 4

Review

Every draft lands pending. A human approves or rejects before anything sends.

approverejectnothing auto-sends

Engineering decisions · the hard parts, handled

the questions a platform lead asks in the first ten minutes

Two signal types, one engine

Funding rounds and competitor-displacement complaints share the same enrich/draft pipeline, each with its own scoring rubric and email framing.

Structured outputs enforce shape, not content

The JSON schema guarantees the response parses. It doesn't guarantee the model follows every prose rule — the sign-off line is enforced with a deterministic code fallback, not trusted to the prompt alone.

Idempotent by construction

A signal claimed by the live-trigger route is excluded from the batch sweep, so a cron landing mid-request can't double-enrich it and insert a duplicate company.

RSS ingest degrades gracefully

Per-feed timeout plus parallel fetch, so one slow feed can't stall the whole ingest run — it just gets logged as failed and the rest continue.

Ownership, not locking

The Hetzner monitor and the live-trigger route never contend for the same row — each only touches signals it's allowed to, so there's no lock to forget.

One gate, every surface

A single access layer covers the dashboard, database mutations, and paid model calls, while preserving the separate cron-secret path for scheduled ingestion.

Signal mix

right now, by signal type

Funding round45 · 94%
Competitor displacement3 · 6%

Draft outcomes

right now, by review status

Pending44 · 96%
Approved2 · 4%
Rejected0 · 0%