Your intelligent opportunity radar for startups and developers
OpportunityRadar helps you discover, match, prepare for, and win opportunities that accelerate your growth — government grants, hackathons, startup competitions, accelerators, and pitch events.
- Smart Discovery: Aggregates opportunities from multiple sources (Kaggle, Devpost, MLH, government grants, etc.)
- Intelligent Matching: Matches opportunities to your profile using semantic similarity + eligibility rules
- Material Generation: AI-powered generation of READMEs, pitch decks, demo scripts, and Q&A predictions
- Pipeline Tracking: Track your opportunities from discovery to submission to results
- Personalized Match Scores: See match percentages with detailed score breakdowns (relevance, eligibility, timeline, team fit)
- Eligibility Checking: Visual indicators showing which requirements you meet and suggestions to improve
- Quick Actions: Bookmark, dismiss, or add opportunities to pipeline with hover actions
- Drag-and-Drop Pipeline: Move opportunities between stages by dragging cards
- Materials Library: View, copy, and manage all your AI-generated materials in one place
- 3-Step Onboarding: Quick profile setup with URL extraction and instant matches
- Dashboard Overview: See top matches, pipeline stats, and quick actions at a glance
- Calendar Integration: Add deadlines to Google Calendar, Outlook, or download .ics files
- Framework: FastAPI (Python)
- Database: MongoDB (Beanie ODM)
- AI/ML: OpenAI embeddings for semantic matching
- Scrapers: Playwright-based scrapers for multiple platforms
- Framework: Next.js 14 with App Router
- Styling: Tailwind CSS
- State: Zustand + TanStack Query
- UI Components: Custom components with Radix UI primitives
- Animations: Framer Motion
OpportunityRadar/
├── src/opportunity_radar/ # Backend Python package
│ ├── api/ # FastAPI routes
│ │ └── v1/endpoints/ # API endpoints
│ ├── ai/ # AI/LLM integration
│ ├── scrapers/ # Platform scrapers
│ ├── matching/ # Matching engine
│ ├── models/ # Beanie/MongoDB models
│ ├── schemas/ # Pydantic schemas
│ ├── services/ # Business logic
│ └── repositories/ # Data access layer
├── frontend/ # Next.js frontend
│ ├── app/ # App router pages
│ │ ├── (auth)/ # Auth pages (login, signup, onboarding)
│ │ ├── (dashboard)/ # Main app pages
│ │ └── (admin)/ # Admin panel
│ ├── components/ # React components
│ ├── services/ # API client
│ └── stores/ # Zustand stores
├── docker/ # Docker configs
├── scripts/ # Utility scripts
└── docs/ # Documentation
| Route | Description |
|---|---|
/dashboard |
Main dashboard with stats, top matches, and quick actions |
/opportunities |
Browse all opportunities with match scores and filters |
/opportunities/[id] |
Opportunity detail with match breakdown and eligibility |
/pipeline |
Kanban board to track opportunity progress |
/generator |
AI material generator for README, pitch, demo scripts |
/materials |
Library of all generated materials |
/profile |
User profile and preferences |
/teams |
Team management and collaboration |
/community |
Public shared opportunity lists |
/notifications |
Notification center |
/settings |
Account settings |
- Python 3.11+
- Node.js 18+
- Docker & Docker Compose
- MongoDB (or use Docker)
# Create virtual environment
python -m venv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows
# Install dependencies
pip install -r requirements.txt
# Start databases with Docker
docker-compose -f docker-compose.dev.yml up -d
# Run backend
uvicorn src.opportunity_radar.main:app --reload --port 8001cd frontend
# Install dependencies
npm install
# Run development server
npm run devCopy .env.example to .env and configure:
# Database
MONGODB_URL=mongodb://localhost:27017
MONGODB_DATABASE=opportunity_radar
# AI
OPENAI_API_KEY=your_openai_key
# Auth
JWT_SECRET_KEY=your_jwt_secret
# OAuth (optional)
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...Frontend frontend/.env.local:
NEXT_PUBLIC_API_URL=http://localhost:8001Currently supported platforms:
- Kaggle Competitions
- Devpost Hackathons
- MLH Hackathons
- ETHGlobal Events
- HackerEarth Challenges
- Government Grants (Grants.gov, SBIR, EU Horizon, Innovate UK)
- Y Combinator RFS
POST /api/v1/auth/signup- User registrationPOST /api/v1/auth/login- User loginGET /api/v1/auth/me- Get current userGET /api/v1/auth/oauth/{provider}/authorize- OAuth login
GET /api/v1/opportunities- List opportunitiesGET /api/v1/opportunities/{id}- Get opportunity detail
GET /api/v1/matches- Get matched opportunities (with scores)GET /api/v1/matches/top- Get top N matchesGET /api/v1/matches/by-batch/{batch_id}- Get match for specific opportunityPOST /api/v1/matches/{id}/bookmark- Bookmark a matchPOST /api/v1/matches/{id}/dismiss- Dismiss a match
GET /api/v1/pipelines- Get user's pipeline itemsPOST /api/v1/pipelines- Add opportunity to pipelinePOST /api/v1/pipelines/{id}/stage/{stage}- Move to stageDELETE /api/v1/pipelines/{id}- Remove from pipeline
POST /api/v1/materials/generate- Generate materialsGET /api/v1/materials- List generated materialsDELETE /api/v1/materials/{id}- Delete material
GET /api/v1/profiles/me- Get user profilePUT /api/v1/profiles/me- Update profile
# Backend
pytest
pytest --cov=src/opportunity_radar
# Frontend
cd frontend
npm run lint
npm run build# Backend
black src/ --line-length 100
ruff check src/
mypy src/
# Frontend
npm run lint- Design Document - Full system design and architecture
- Workflow Checklist - End-to-end workflow guide
- Roadmap - Feature roadmap
MIT