Automated system that tracks upcoming investor concalls from Screener.in, extracts dial-in numbers from PDFs, and syncs everything to Google Sheets + Calendar.
Zero manual work. Runs daily at 7 AM IST.
- 🔍 Scrapes 100 upcoming concalls from Screener.in
- 📄 Extracts phone numbers from PDF announcements (92% success rate)
- 📊 Auto-updates Google Sheet with all concall details
- 📅 Creates Google Calendar events with reminders
- 🎨 Color codes calls by watchlist (My Stonks → Tomato, Core Watchlist → Flamingo/Tangerine/Banana)
- 🔔 My Stonks events auto-sync to main calendar
- 📧 Email notifications on success/failure
- ☁️ Runs automatically via GitHub Actions (even if your laptop is off)
- Google Sheet: View Concalls
Every day at 7 AM IST:
┌─────────────────┐
│ Screener.in │
└────────┬────────┘
▼
┌─────────────────┐
│ Scrape 100 │
│ Concalls │
└────────┬────────┘
▼
┌─────────────────┐
│ Download PDFs │
│ Extract Phones │
└────────┬────────┘
▼
┌────┴────┐
▼ ▼
┌───────┐ ┌──────────┐
│ Sheet │ │ Calendar │
└───────┘ └──────────┘
▼
┌─────────────────┐
│ Email Summary │
└─────────────────┘
- Python + Selenium (web scraping)
- pdfplumber (PDF extraction)
- Google Sheets API
- Google Calendar API
- GitHub Actions (automation)
You must provide your own credentials. This repo contains no stored credentials.
- Screener.in Account - Create your own account at screener.in
- Google Service Account - Create via Google Cloud Console with Sheets, Drive, and Calendar APIs enabled
- GitHub Secrets - Add these to your forked repo:
SCREENER_USERNAME- Your Screener.in emailSCREENER_PASSWORD- Your Screener.in passwordGOOGLE_CREDENTIALS_BASE64- Base64-encoded service account JSONEMAIL_USERNAME/EMAIL_PASSWORD- Gmail app password for notifications
This entire project was built in 3 hours using Claude Code with zero prior coding experience.
MIT
Built by @AnishA_Moonka