clipunity
ALL DOCS⟡ DOCS

Signals

One unified feed for everything you want to track: stocks, crypto, and Ideate topics today — prediction markets next. A refresh Lambda runs every minute and each signal type has its own cadence.

Source types

TypeSourceCadenceConfig
StocksFinnhub /quote60s{ symbol: "AAPL" }
CryptoCoinbase /v2/prices60s{ pair: "BTC-USD" }
TopicsIdeate snapshot pull-through6h{ queryId: "…" }

Adding a signal

On /signals, admins click Add signal, pick a type, enter the config (ticker symbol, trading pair, or a pinned Ideate query id), and optionally pin it to the home strip. The refresh Lambda picks it up on the next tick.

Admin source gating

Workspace owners can enable/disable source types in Settings → Signal sources. If stockis disabled for a workspace, the API refuses to create stock signals there — useful for workspaces that shouldn’t be tracking markets.

Home strip

The live signal strip on /home reads from the same table the /signalspage does, sorted pinned-first then most-recently-updated, capped at 6. Updates every 15 seconds while the tab is focused.

Errors

If a refresh tick fails (Finnhub 429, Coinbase 5xx, snapshot missing), we stamplastError and lastErrorAt on the row — visible as a red footnote on /signals. The next successful tick clears it.

Finnhub key

Stock signals require a Finnhub API key in Secrets Manager at clipunity/finnhub. The bootstrap script prints the exact aws secretsmanager create-secret command if the secret is missing; the Lambda simply skips stock signals until it lands.