← back to gallery

Chip IPO Radar

Live SEC filing tracker and signal feed for AI chip company IPOs

financeAI chipsIPOSEC EDGARsemiconductorsignals
Open product ↗

Chip IPO Radar

Real-time intelligence feed tracking AI chip company IPO filings, secondary valuations, and supply-chain signals — built for investors, procurement leads, and AI infrastructure teams.

What It Does

Data Sources

| Source | URL | What | Refresh | Failure Mode |
|--------|-----|------|---------|--------------|
| SEC EDGAR Full-Text Search | https://efts.sec.gov/LATEST/search-index | S-1/S-1A filings for AI chip/semiconductor companies | Every 6 hours | Shows "data unavailable", logs error |
| Brave Search News API | https://api.search.brave.com/res/v1/news/search | News about chip IPOs, valuations, supply chain | Every 30 minutes | Shows notice, skips without key |

No hardcoded or fabricated data. All filings come from real SEC EDGAR API calls. News comes from Brave Search. If a source is unavailable, the UI displays "data unavailable" — never synthetic values.

Setup

npm install
cp .env.example .env
# Edit .env — add BRAVE_API_KEY for news
node server.js

Open: http://localhost:4714/chip-ipo-radar/

Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| PORT | No | HTTP port (default: 4714) |
| BRAVE_API_KEY | For news | Brave Search API key |
| OPENROUTER_API_KEY | Optional | For future LLM analysis features |

API Endpoints

All endpoints are public — no authentication required.

### Filings (SEC EDGAR)
``
GET /chip-ipo-radar/api/filings # Paginated filing list
GET /chip-ipo-radar/api/filings/stats # Filing statistics
GET /chip-ipo-radar/api/filings/search?q= # Search by company name
GET /chip-ipo-radar/api/filings/:id # Single filing detail + EDGAR links
POST /chip-ipo-radar/api/filings/refresh # Trigger manual EDGAR scrape
``

### News (Brave Search)
``
GET /chip-ipo-radar/api/news # Paginated news articles
GET /chip-ipo-radar/api/news/topics # Topic breakdown
GET /chip-ipo-radar/api/news/recent # Latest 10 articles
POST /chip-ipo-radar/api/news/refresh # Trigger manual news scrape
``

### Signals
``
GET /chip-ipo-radar/api/signals # Paginated signal list
GET /chip-ipo-radar/api/signals/summary # Dashboard summary
GET /chip-ipo-radar/api/signals/latest # Latest 20 signals
POST /chip-ipo-radar/api/signals/compute # Recompute signals
``

### Watchlist
``
GET /chip-ipo-radar/api/watchlist # List watchlist
POST /chip-ipo-radar/api/watchlist # Add company
PATCH /chip-ipo-radar/api/watchlist/:id # Update status/notes
DELETE /chip-ipo-radar/api/watchlist/:id # Remove company
``

### System
``
GET /chip-ipo-radar/health # Health check
GET /chip-ipo-radar/api/status # Data source availability + counts
``

Architecture

chip-ipo-radar/
├── server.js           # Express app, middleware, route mounting
├── db.js               # SQLite (WAL), schema, prepared statements
├── scheduler.js        # node-cron: EDGAR every 6h, news every 30min
├── scrapers/
│   ├── edgar.js        # SEC EDGAR EFTS full-text search scraper
│   ├── news.js         # Brave Search news scraper
│   └── signals.js      # Signal computation from real data
├── routes/
│   ├── filings.js      # Filing CRUD + refresh trigger
│   ├── news.js         # News CRUD + refresh trigger
│   ├── signals.js      # Signal API + compute trigger
│   └── watchlist.js    # User watchlist management
└── public/             # Vanilla JS SPA
    ├── index.html
    ├── app.js
    └── style.css

Stack