A smart research professor matching platform that helps students find and connect with professors based on research interests, using AI-powered semantic matching.
- 🔍 Intelligent Professor Discovery - AI-powered search across multiple academic databases
- 🎯 Research Matching - Semantic matching between student interests and professor research
- 📧 Email Outreach - Integrated email drafting and management
- 💬 AI Chatbot - Dual-mode chatbot (basic RAG + deep mining)
- 📊 Pipeline Management - Track and manage professor outreach status
- Frontend: Next.js 14, React, TypeScript, Tailwind CSS
- Backend: FastAPI, Python
- Database: Supabase (PostgreSQL)
- AI/LLM: Google Vertex AI / Gemini
- APIs: OpenAlex, Tavily, Brave Search
- Node.js 18+ (see
.nvmrc) - Python 3.10+
- Supabase account (or local Supabase CLI)
-
Clone the repository
git clone https://github.com/yourusername/antigravity_research_match.git cd antigravity_research_match -
Set up environment variables
# Root directory (frontend) cp .env.example .env.local # Backend cp backend/.env.example backend/.env
Fill in your API keys and Supabase credentials in both files.
-
Install frontend dependencies
npm install
-
Install backend dependencies
cd backend python -m venv .venv .venv/Scripts/activate # Windows # source .venv/bin/activate # macOS/Linux pip install -r requirements.txt
-
Set up Supabase
# If using local Supabase supabase start # Apply migrations supabase db push
Start the backend:
# Windows
.\start_backend.ps1
# macOS/Linux
./start_backend.shStart the frontend:
npm run devOpen http://localhost:3000 in your browser.
See .env.example for a complete list of required environment variables.
| Variable | Description | Get it from |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Supabase project URL | Supabase Dashboard |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Supabase anon key | Supabase Dashboard |
SUPABASE_SERVICE_ROLE_KEY |
Supabase service role key | Supabase Dashboard |
GEMINI_API_KEY or VERTEX_AI_* |
Google AI credentials | Google AI Studio |
OPENALEX_API_KEY |
OpenAlex API key | OpenAlex |
antigravity_research_match/
├── src/ # Next.js frontend source
│ ├── app/ # App router pages
│ ├── components/ # React components
│ └── lib/ # Utilities and API clients
├── backend/ # FastAPI backend
│ ├── api/ # API endpoints
│ ├── services/ # Business logic
│ └── tests/ # Backend tests
├── supabase/ # Supabase configuration
│ ├── functions/ # Edge functions
│ └── migrations/ # Database migrations
└── public/ # Static assets
See Dockerfile.backend for container configuration.
The frontend can be deployed directly to Vercel.
Database and edge functions are managed through Supabase Cloud.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Never commit
.env,.env.local, orcredentials.jsonfiles - All secrets should be managed via environment variables
- See
.gitignorefor excluded files
This project is private. All rights reserved.