AI sector job intelligence platform. Track hiring trends across top AI companies with automated scraping, LLM-powered analysis, and weekly synthesis reports.
- Scrapes job postings from 11+ AI companies daily (Greenhouse, Lever, Ashby APIs)
- Normalizes job data with GPT-4o-mini (title standardization, seniority, function, team area)
- Synthesizes weekly intelligence reports with GPT-4o (company + sector analysis)
- Surfaces insights via a dashboard (trends, anomalies, hiring velocity)
| Component | Technology |
|---|---|
| Backend | FastAPI (Python) |
| Database | PostgreSQL |
| Frontend | Next.js 15, Tailwind CSS |
| LLM | OpenAI API (gpt-4o-mini, gpt-4o) |
| Hosting | GCP Cloud Run + Vercel |
- Python 3.10+
- Node.js 18+
- PostgreSQL (or use Docker)
cd backend
# Create virtual environment
python -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -e ".[dev]"
# Copy environment file
cp .env.example .env
# Edit .env with your DATABASE_URL and OPENAI_API_KEY
# Start PostgreSQL (if using Docker)
docker-compose up -d
# Run migrations
alembic upgrade head
# Seed companies
python scripts/seed_companies.py
python scripts/load_profiles.py
# Start server
uvicorn app.main:app --port 8100 --reloadcd frontend
# Install dependencies
npm install
# Start dev server (connects to local backend)
NEXT_PUBLIC_API_URL=http://localhost:8100 npm run dev -- -p 3100Or use the convenience scripts from the root:
./start.sh # Starts both backend and frontend
./stop.sh # Stops both# Scrape all companies
./repopulate.sh scrape
# Normalize jobs (uses OpenAI)
./repopulate.sh normalize
# Run synthesis (weekly reports)
./repopulate.sh synthesizeGET /api/companies # List all companies
GET /api/companies/:slug # Company detail + jobs
GET /api/jobs # List jobs (filterable)
GET /api/summaries/sector # Latest sector summary
GET /api/summaries/company/:slug # Company summary
POST /api/admin/scrape/:slug # Scrape single company
POST /api/admin/scrape-all # Scrape all companies
POST /api/admin/normalize # Normalize pending jobs
POST /api/admin/synthesize-all # Generate weekly reports
See deploy.sh for GCP Cloud Run + Vercel deployment:
./deploy.sh setup # One-time GCP setup
./deploy.sh backend # Deploy backend to Cloud Run
./deploy.sh frontend # Deploy frontend to Vercel
./deploy.sh scheduler # Set up Cloud Scheduler (daily scrape, weekly synthesis).
├── backend/
│ ├── app/
│ │ ├── api/ # FastAPI routes
│ │ ├── models/ # SQLAlchemy models
│ │ └── services/ # Scrapers, normalizer, synthesizer
│ ├── alembic/ # Database migrations
│ └── scripts/ # Seed data scripts
├── frontend/
│ ├── app/ # Next.js pages
│ ├── components/ # React components
│ └── lib/ # API client, types
├── info/
│ └── company_profiles/ # Markdown profiles for each company
├── deploy.sh # Deployment script
├── start.sh # Local dev start
└── stop.sh # Local dev stop
| Company | ATS | Jobs |
|---|---|---|
| OpenAI | Ashby | ~450 |
| Anthropic | Greenhouse | ~290 |
| xAI | Greenhouse | ~260 |
| Scale AI | Greenhouse | ~130 |
| Mistral | Lever | ~125 |
| Cohere | Ashby | ~100 |
| Figure AI | Greenhouse | ~90 |
| Perplexity | Ashby | ~65 |
| Together AI | Greenhouse | ~50 |
| Cursor | Ashby | ~30 |
| Fireworks AI | Greenhouse | ~25 |
MIT