Live competitive intelligence, forged from the web.
Features · Architecture · Tech stack · Quick start · Deployment · Demo accounts
SignalForge is a full-stack competitive intelligence platform built for the Web Data UNLOCKED Hackathon (Bright Data × lablab.ai). It monitors competitors across pricing, messaging, hiring, and news—using real-time web data from Bright Data—and surfaces actionable change events in a modern dashboard.
Forge Scout, the built-in AI agent, researches competitors via Bright Data MCP (SERP + scrape) orchestrated with LangGraph—no stale training data, only live web signals.
Track: GTM Intelligence — pricing moves, positioning shifts, hiring velocity, and news for go-to-market teams.
| Area | What it does |
|---|---|
| Competitor monitoring | Add competitors with sources (pricing, homepage, careers, news) |
| Bright Data collection | SERP API, Web Scraper, Web Unlocker zones; MCP fallback pipeline |
| Change detection | Snapshot diff engine emits structured events with severity |
| Forge Scout agent | LangGraph + Bright Data MCP: search, scrape, synthesize intel |
| Event feed & charts | Filterable timeline, overview metrics, daily brief |
| Alert rules | Configurable rules evaluated on new events |
| Scheduler | APScheduler runs autonomous collection on an interval |
| Auth & demo mode | JWT sessions; demo account with read-only + agent quota |
| Demo toolkit | Simulate HTML changes for live demos without waiting on crawls |
flowchart LR
subgraph Frontend["frontend/ · Vercel"]
UI[React Dashboard]
end
subgraph Backend["app/ · FastAPI Cloud"]
API[FastAPI API]
COL[Collectors]
DIFF[Diff Engine]
AGT[Forge Scout · LangGraph]
SCH[APScheduler]
end
subgraph Data["Storage"]
DB[(SQLite / Neon PostgreSQL)]
end
subgraph BrightData["Bright Data"]
SERP[SERP API]
SCR[Web Scraper]
UNL[Web Unlocker]
MCP[MCP Server]
end
UI -->|REST / JWT| API
API --> COL
COL --> SERP
COL --> SCR
COL --> UNL
COL --> MCP
AGT --> MCP
COL --> DIFF
DIFF --> DB
API --> DB
SCH --> COL
| Technology | Role |
|---|---|
| FastAPI | REST API, OpenAPI docs, middleware |
| SQLAlchemy | ORM — competitors, snapshots, events, alerts |
| SQLite / Neon PostgreSQL | Local dev vs production database |
| Bright Data | SERP, Scraper, Unlocker REST + MCP SSE |
| LangGraph | Forge Scout agent workflow |
| langchain-mcp-adapters | MCP tool integration |
| BeautifulSoup + lxml | HTML extraction |
| APScheduler | Scheduled collection jobs |
| PyJWT | Bearer token authentication |
| Pydantic Settings | Environment configuration |
| Technology | Role |
|---|---|
| React 19 | Dashboard UI |
| TypeScript | Type-safe components |
| Vite 8 | Dev server & production build |
| Recharts | Overview charts & metrics |
| react-markdown + remark-gfm | Forge Scout rendered responses |
| Service | Use |
|---|---|
| FastAPI Cloud | Backend hosting |
| Vercel | Frontend hosting |
.
├── app/ # FastAPI backend (API, collectors, agents, scheduler)
├── frontend/ # React + Vite dashboard
├── docs/ # README cover (signalforge-cover-16x9.png)
├── schemas/ # pulse_events JSON schema
├── data/ # SQLite (local) + runtime settings
├── fixtures/ # Demo HTML for simulate-change
├── scripts/ # CLI helpers
├── requirements.txt
├── pyproject.toml
└── .env.example
- Python 3.12+
- Node.js 20+
- Bright Data API token (and optional MCP URL) for live collection
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
# Edit .env — set BRIGHTDATA_API_TOKEN, BRIGHTDATA_MCP, DATABASE_URL, auth secrets
python run_api.py- API: http://localhost:8000
- Docs: http://localhost:8000/docs
cd frontend
npm install
npm run dev- App: http://localhost:5173 (Vite proxies
/apito the backend in dev)
Optional frontend/.env.local:
VITE_API_URL=http://127.0.0.1:8000/api/v1pip install "fastapi[standard]"
fastapi login
fastapi deploySet environment variables from .env.example in the dashboard. Use Neon DATABASE_URL for production PostgreSQL.
- Entrypoint:
app.main:app([tool.fastapi]inpyproject.toml)
- Import repository — Root Directory:
frontend - Framework: Vite (
vercel.jsonincluded) - Environment:
VITE_API_URL=https://<your-api-host>/api/v1
See .env.example for the full list. Key values:
| Variable | Description |
|---|---|
BRIGHTDATA_API_TOKEN |
Bright Data API key |
BRIGHTDATA_MCP |
MCP SSE URL (Forge Scout + MCP fallback) |
BRIGHTDATA_SERP_ZONE / SCRAPER_ZONE / UNLOCKER_ZONE |
REST zone names |
DATABASE_URL |
sqlite:///./data/pulse.db or Neon PostgreSQL URL |
COLLECTOR_MODE |
brightdata (default) or local for HTTP-only demo |
SCHEDULER_ENABLED |
Autonomous collection on/off |
AUTH_* |
JWT login, demo user, token expiry |
| Role | Username | Password | Notes |
|---|---|---|---|
| Demo | demo |
demo |
Read-only competitors; 5 Forge Scout requests |
Change credentials before any public deployment.
SignalForge uses Bright Data across the stack:
- REST collectors — SERP for news signals, Web Scraper for pages, Web Unlocker for protected sites
- MCP pipeline — Fallback when zones fail; primary path for Forge Scout (
search_engine,scrape_as_markdown) - LangGraph agent — Plans queries, runs MCP tools, returns cited competitive intel
References: Bright Data AI Agents · MCP Server
| Item | Details |
|---|---|
| Event | Web Data UNLOCKED |
| Organizer | Bright Data × lablab.ai |
| Project | SignalForge — GTM / competitive intelligence |
| Live web data | Bright Data SERP, Scraper, Unlocker, MCP |
| AI agent | Forge Scout (LangGraph + MCP) |
Built for Web Data UNLOCKED (May 2026). Replace this section with your team names and repository links before final submission.
