Signal feed
The Signal feed is the main dashboard — every news item Claude has classified for your tracked companies lands here. One row per signal. Newest first.
What's on a row
- Type chip —
funding,hiring,fda_approval,partnership,leadership, plus any custom types you've added. Color-coded; no two types share a color - Company name — clicking opens the company detail dialog with the full signal history
- Title + snippet — Claude's one-line summary of the item
- Date — publication date (not when we ingested it)
- Source pill —
linkdapi(LinkedIn),custom,company_site,google_news,openfda,crunchbase - "Sent" badge — light yellow if you've already pushed this signal to Slack
- Checkbox — for bulk-select. The footer slides up showing how many you've picked
Tabs
| Tab | What it shows |
|---|---|
| AI-suggested | Only signals Claude flagged as high importance (last 7 days), not yet sent, not dismissed |
| All signals | Everything Claude classified |
<type> tabs | One per signal type — count badge tells you how many exist |
Right-aligned + Add button creates a new signal type on the fly. Click the (i) next to it for the signal-types docs. See Signal types in the docs for slug rules + Claude prompt injection.
Filter bar (under the tabs)
| Control | What it does |
|---|---|
| Search | Substring match against signal title + snippet. Debounced 300 ms |
| Date range | 7d / 30d / 90d / Year / All / Custom. Filters on the publication date |
| Sort | Newest ↔ oldest. Toggles between desc and asc |
| Sources | Multi-select chips. Limits to only the picked sources. Empty = all |
| Auto-send (on AI-suggested tab) | Toggles auto-send for high-importance signals — see Auto-send signals |
Same filter bar style as Companies → Imported data + the import wizard map step.
Adding custom signal types
- Click + Add (top-right of the tab bar) OR open Settings → Signal types → + Add signal type.
- Name the type — anything is fine; we slugify it (
M&A→m_and_a). - Write a description: trigger phrases, examples, edge cases. This is the most important field — it's injected verbatim into the Claude classify prompt. A bad description = noisy results.
- Save. We automatically trigger a sync so the new type backfills against your existing companies.
Editing a description doesn't trigger a sync — it applies on the next sync (manual or auto). You can remove a type by clicking the × on its chip in Settings; the existing signals keep their slug but the type disappears from filter UI.
AI-suggested tab
Claude assigns every signal an importance: low / medium / high. The AI-suggested tab isolates the high ones from the last 7 days that you haven't acted on yet.
- "High" by Claude's rubric: named exec move, exact funding round, dated FDA clearance, named partnership — clearly actionable + recent + specific. Vague mentions don't make the cut.
- Dismiss removes a row from this tab without sending it (sets
suggestion_dismissed_at— the signal stays in All signals). - Auto-send toggle in the filter bar — when ON, high signals get auto-posted to Slack during the sync that fetched them. After auto-send they leave this tab (sent).
See AI-suggested tab docs for more on what counts as high. See Auto-send signals for the delivery format.
Sending to Slack
- Per-row Slack button — fires a one-off send with optional custom message
- Bulk — select checkboxes, the footer pops up with "Send N to Slack"
- "Sent" badge shows up after delivery; if you re-send the same signal, the badge updates with the latest send time
Empty states
- "No signals match" — your filters are too tight. Try widening the date range or clearing sources
- "No AI-suggested signals right now" — Claude hasn't flagged any high-importance items in the last 7 days. Either trigger a sync, or lower your bar by editing signal-type descriptions to be more inclusive
Performance notes
- Infinite scroll — rows load in pages of 30 as you reach the bottom
- Each sync invalidates the query; new signals appear without a manual refresh
- Search is server-side (Postgres trigram), not client filtering