How atul-k-m/opgrab_bot works
OpportunityIQ collects student and developer opportunities, stores them in Supabase, ranks them against user profiles, and presents them in a web dashboard or Telegram alerts. The main automated path is scheduled scraping followed by persistence and personalized delivery; users can also request an on-demand digest. The README additionally describes Telegram onboarding and profile setup. The bot entry point is absent from the supplied tree, so its wiring is not inferred; dashboard and backend links reflect the sampled source, while AI ranking is an optional integration.
Main entry points: delivery.js Digest delivery · scraper.js Source scrapers · supabase.js Supabase client · automation.js Scheduled automation
Components 12
Opportunity ingestion
- Source scrapers
src/scraper.js - Scheduled automation
src/automation.js
Matching and delivery
- Relevance ranking
src/matcher.js - Digest delivery
src/delivery.js
Web dashboard
- Dashboard and auth
web/src/main.js
Persistence
- Supabase client
src/supabase.js - Supabase service
- Opportunity and user data
schema.sql
Other components
- Student or developer
- Opportunity sources
- Telegram Bot API
- Groq ranking API
Connections 13
- Student or developer → Dashboard and auth: uses dashboard
- Student or developer → Telegram Bot API: uses bot
- Scheduled automation → Source scrapers: runs scrape
- Scheduled automation → Digest delivery: triggers alerts
- Source scrapers → Opportunity sources: fetches listings
- Source scrapers → Supabase client: upserts opportunities
- Relevance ranking → Groq ranking API: requests AI scores
- Digest delivery → Relevance ranking: ranks matches
- Digest delivery → Supabase client: reads and records
- Digest delivery → Telegram Bot API: sends digests
- Dashboard and auth → Supabase service: auth and data queries
- Supabase client → Supabase service: connects
- Supabase service → Opportunity and user data: reads and writes