Sending job outreach from your own Gmail, one email at a time

Nevil Krishna K, full stack developer in Thrissur, KeralaNevil Krishna K5 min read

Looking for work means sending the same email to two hundred people with three lines changed each time. The tools built for that are marketing tools: you sign up, you hand over your contact list, you send from their domain, and the recruiter gets something that looks like a newsletter.

EmailxSender does the same job from your own Gmail account, with nothing in the middle. The source is on GitHub under MIT.

One email per person, never BCC

Every recipient gets their own message, addressed to them. This is not a nicety: a recruiter who can see forty other names in the header knows exactly how much thought went into the message, and a mail provider that sees one message to forty external addresses has an opinion about that too.

Individual sends are slower and that is fine. Nobody is sending two hundred of these per minute.

The EmailxSender compose screen: the Gmail address it sends from, a recipient list, subject, body and the stored resume PDF
The compose screen. The address at the top is your own, the recipient list is one field that becomes one message per address, and the resume at the bottom stays attached from one send to the next.

The credential question

Sending as you means authenticating as you. The app asks for your Gmail address and a Gmail App Password, the sixteen character one you generate in your Google account with two factor turned on.

That password is kept in localStorage in your browser and used to talk to Gmail's SMTP. There is no backend holding it, because there is no backend. An app password is also revokable on its own, so if you stop using the tool you remove that one credential without touching your account.

I would rather this were OAuth. OAuth for sending mail means a verified app, a consent screen and a review process, which is the right answer for a product and the wrong answer for a tool one person uses for six weeks while job hunting.

The parts that actually matter when you are sending two hundred of these

The sending is a library call. Everything useful is around it:

What I would tell somebody building the same thing

Personalisation is not a merge field. Swapping a name into a template produces the exact thing everybody ignores. What worked was a short body with one sentence I actually wrote per company, and the tool being fast enough that writing that one sentence is the slowest part.

Which means the honest version of this tool is not an automation. It is a way to remove the twenty seconds of copying, pasting and re-attaching between the messages you are still writing yourself.

Building something like this?

Tell me what you are building. You get a fixed scope and a fixed figure back, from the person who writes the code.

WhatsApp