// project ยท automation

findr

A bot that hunts internships so I don't have to scroll. Every four hours it reads hundreds of new listings, asks an AI which ones fit me, and sends the best to my WhatsApp.

// the 10-second version

Like a friend who reads every job board for you, all day, and only texts you when they find something you'd love.

// why it's cool

Job boards are noisy

Most listings are the wrong field, city or level, and checking several sites daily wastes hours. findr does the boring part in the cloud, for free, and stays silent when there's nothing worth sending.

6,000+
listings processed
every 4 h
fully automatic
₹0
to run, all on free tiers

// how it works

Every four hours

  1. FetchAbout 500 new listings from Jobicy, SimplifyJobs and Internshala.
  2. Skip repeatsAnything already seen is dropped.
  3. Quick filterCheap keyword checks remove obvious misses.
  4. AI scoringAn LLM rates each remaining listing 0–10 against my preferences.
  5. SendTop 5 in India and top 5 abroad, by my favourite cities, straight to WhatsApp.

// under the hood

Small pieces, one job each

  • Scraping: Python with requests and BeautifulSoup, reshaping three sources into one format.
  • Memory: a SQLite database stores a short fingerprint (MD5 hash) of every listing, so nothing is sent twice.
  • Judging: an open-weight LLM via Groq, fast and free at this scale.
  • Delivery and timing: Twilio sends the WhatsApp messages; GitHub Actions runs everything on schedule, so no computer has to stay on.

// the tricky part

Using AI sparingly, keeping secrets secret

Sending 500 listings to an AI every few hours would be slow and hit rate limits. The keyword filter does most of the rejecting for free, so the AI only sees real contenders. API keys and my phone number live in encrypted repository secrets, never in the code, which keeps the project safe to share publicly.

  • python
  • sqlite
  • beautifulsoup
  • groq
  • twilio
  • github actions