A comprehensive platform for discovering and managing academic opportunities including internships, scholarships, competitions, and grants. Built with modern web technologies and intelligent matching algorithms.
- Smart Matching System: Personalized opportunity recommendations based on your academic profile, major, and interests
- Comprehensive Database: 8,000+ curated opportunities from trusted sources including government databases, universities, and verified organizations
- Essay Analysis: Advanced feedback system that analyzes your essays against successful college application examples
- Smart Search & Filtersters: Fast, relevancy-scored search with filtering by type, location, and deadline
- Application Tracking: Track your applications, deadlines, and progress all in one place
- Real-Time Data: Automated data collection pulls the latest opportunities from multiple sources
- React with TypeScript for type-safe UI development
- Vite for fast development and optimized production builds
- TailwindCSS with shadcn/ui components for modern, accessible UI
- TanStack Query for efficient server state management
- Wouter for lightweight client-side routing
- Express.js REST API with TypeScript
- PostgreSQL with Drizzle ORM for type-safe database operations
- Natural Language Processing for intelligent matching and essay analysis
- Axios & Cheerioerio for web scraping and data collection
- U.S. Department of Education College Scorecard API
- Urban Institute Education Data API
- Grants.gov
- Curated academic program databases
- Real-time job board scraping (Y Combinator, GitHub, Stack Overflow)
- Clone the repository
git clone repository-url>gt;
cd opportunity-finder - Install dependencies
npm install- Set up environment variables
cp .env.example .envRequired environment variables:
DATABASE_URL- PostgreSQL database connection string
Optional API keys (for enhanced features):
GEMINI_API_KEY- Google Gemini API key for intelligent matching and analysisGEMINI_API_KEY_2,GEMINI_API_KEY_3, etc. - Additional keys for API rotationOPENAI_API_KEY- OpenAI API key as fallbackOPENROUTER_API_KEY- OpenRouter API key as additional fallback
Note: The application will start without API keys configured but advanced matching and essay analysis features will use fallback algorithms. For full functionality, configure at least GEMINI_API_KEY.
- Push database schema
npm run db:push- Start development server
npm run devThe application will be available at http://localhost:5000
├── client/ # Frontend React application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ └── lib/ # Utility functions
├── server/ # Backend Express API
│ ├── routes.ts # API endpoints
│ ├── storage.ts # Database operations
│ └── scrapers/ # Data collection services
├── shared/ # Shared types and schemas
└── attached_assets/ # Static assets and data files
ata files
The platform analyzes opportunities against your profile using advanced algorithms:
- Major/minor fields weighted at 50% for academic focus
- Career interests weighted at 10%
- Relevancy scoring with detailed match explanations
Compare your essays against a database of successful college applications:
- Detailed feedback on tone, themes, and writing style
- Specific recommendations with exact quote references
- Competitiveness scoring
- Duplicate detection prevents redundant entries
- URL validation ensures all links are functional
- Regular data updates from trusted sources
npm run dev- Start development servernpm run build- Build for productionnpm run start- Run production buildnpm run check- Type check with TypeScriptnpm run db:push- Push database schema changes
The application uses Drizzle ORM with PostgreSQL. Schema defined in shared/schema.ts:
- Users and profiles
- Opportunities with tags and requirements
- Applications and tracking
- Essays and analysis
Contributions are welcome! Please ensure all new opportunities have valid URLs and follow existing code patterns.
MIT License - See LICENSE file for details