dewsletter · projects

projects · live

dewsletter

looks for a job and mails you

built by · nosey-dewdrop.github.io/dewsletter

what it is

A listing reaches you with the reason it concerns you, or it does not reach you.

Every morning dewsletter reads the day's AI/ML internship board, scores each listing against your profile, and mails you only the ones that are new to you. Every match arrives with the reason it was sent, in words. Nothing new, no mail.

There is no language model anywhere in it. A point is never awarded without a reason string attached, so any number on the site can be reproduced by running the same code over the same file.

why it exists

The person who gets the internship is usually not the best candidate. It is the one who saw the posting first. Measured on its own history of the board, a listing lives a median of 9.77 days and roughly a fifth of them are gone within three.

the flow

  1. You write down what you are looking for, or you hand it a CV and it fills that in for you. The CV is read in your own browser tab and is never uploaded.
  2. As you type, the page tells you how many of today's listings would match. If the answer is zero it says so, plainly.
  3. One mail arrives to confirm the address is yours. Nothing else is sent until you click it.
  4. From then on you get a bulletin when, and only when, something new matches. One a day at most.
  5. Every mail carries a link that ends it.

how the scoring works

Only interest, skill and role fit earn points. Geography, freshness and salary earn nothing at all. They stayed filters: they can still remove a listing you could never take, but they can no longer put one in front of you.

deliberately not here

  • No language model. Not in the matcher, not in the CV report, not in the mail.
  • No tracking. The dataset is public, your profile is not.
  • No CV upload. The CV report runs entirely in your browser.
  • No guessing. When the source ships a listing with no location, the engine declines to guess and says so.

known limits

  • The daily rebuild is asked for at 09:00 UTC+3, but the scheduler running it is best effort. Measured over 37 scheduled runs the median build landed 78 minutes late and the latest landed 12 hours late.
  • The confirmation mail rides a job that runs every fifteen minutes, so it arrives in minutes rather than instantly.

stack

Python · GitHub Actions · SMTP · HTML. 454 tests, no network, no keys.

links