Settings

Connect external services by adding their API keys. Keys are validated immediately against the live service and saved locally — they never leave this machine. The worker reads keys on every ingest cycle, so changes take effect within 30 minutes without a restart.

Active
6
receiving data
Free
6
no key needed
Needs Key
9
add to enable
Invalid
0
key rejected
Authentication
HMAC-signed session cookie · single-operator basic auth
DISABLED
⚠ Configuration warnings
  • Auth gate is OFF — anyone with the URL can read the dashboard
To activate (or update) auth, edit apps/web/.env and restart the Next.js server:
AUTH_GATE_ENABLED=true
AUTH_USER=your-username
AUTH_PASSWORD=use-a-real-password-here
AUTH_SECRET=$(openssl rand -hex 32)
Then npm run dev or restart the prod server. Existing sessions stay valid until AUTH_SECRET changes — rotating the secret invalidates everyone.
Why env-only? The auth gate runs on Edge runtime which can't read the DB. Keeping the toggle in env also means a DB compromise can't disable the gate. For multi-broker tenant isolation see Sprint C-3 (planned).
Loading tuning controls…

Signal Ingestion

Google News

Always on

Tracks 9 industry queries via Google News RSS — no key required.

Always on. No configuration required.

Trade Publications

Always on

RSS feeds from drinks trade press (The Drinks Business, Punch, etc.) — no key required.

Always on. No configuration required.

SEC EDGAR

Always on

US SEC filings (10-K, 10-Q, 8-K) for public mortgage lenders + bank lenders — no key required.

Always on. No configuration required.

Reddit

Always on

Charleston + mortgage subreddits (r/Charleston, r/Mortgages, r/RealEstate, r/LoanOriginators, etc.) via Reddit's public JSON endpoints — no key required.

Always on. No configuration required.

Bluesky

Always on

Charleston real-estate + mortgage chatter via the public Bluesky search API — no key required.

Always on. No configuration required.

YouTube

Needs key

Video reviews and transcripts via YouTube Data API v3. 10,000 quota units/day on the free tier — about 100 searches.

Enable "YouTube Data API v3" in Google Cloud Console first.
Get API key

Meta Ad Library

Needs key

Active Facebook & Instagram ads from competitor brands.

Create a Facebook app and request the ads_read permission.
Create app + get token

X / Twitter

Needs key

Brand mentions and review tweets via X API v2 search. Free tier is heavily rate-limited; basic plan ($200/mo) recommended for production.

Required scopes: tweet.read, users.read.
Get bearer token

NewsAPI.org

Needs key

Broader news coverage beyond Google News. Developer plan: 100 requests/day, headlines delayed 24h.

Free signup

AI Intelligence

Anthropic Claude

Needs key

Powers AI briefs, narrative summaries, and earnings-call extraction. Without a key, the app still runs — those features just stay dark.

Get API key

Alerts & Notifications

Slack

Needs key

Posts high-priority signals (score ≥ 4) to a Slack channel via incoming webhook.

Create webhook

Resend (Email)

Needs key

Daily digest email + high-severity escalation. Free tier: 3,000 emails/month, no credit card. Set sender/recipients in the Email Channel entry below.

Create API key

Email Channel

Needs key

Sender + recipients for the daily digest. Used by Resend (above) or SMTP fallback. Comma-separate multiple recipients.

Market Data

Yahoo Finance

Always on

Daily stock prices for public mortgage lenders + bond ETFs (MBB, TLT) + homebuilders via yfinance — no key required.

Always on. No configuration required.

Alpha Vantage

Needs key

Backup market data feed when Yahoo throttles. Free tier: 25 requests/day.

Get free key
Privacy. Keys are stored in your local Postgres database (table: api_credentials). They are not encrypted at rest — this app is designed for single-operator local use. If you change deployment topology, harden by adding a keychain-backed encryption layer.