Get rid of all applications that don't have a cover letter

I remember it like it was yesterday. As I was leaving one of the first companies I've ever worked for, my manager asked me to hire my replacement. Drowning in hundreds of applications for the position, I still recall his exact words.

I don't want to start a debate on if you should include a cover letter in your job application or not. I've heard good arguments on both sides. There's one thing I'd like to point out though: in the days of ChatGPT, it's hard to get a good excuse not to write one.


Why I built it

The short answer: Why not?

The long answer, for a couple of reasons.

I like mentoring/helping people that are just entering the industry (or just getting out of University) regarding their careers. Most people, when applying for positions, don't really pay close attention to the cover letter. I believe it can be a really big differentiator. Even though I hope they are aware of just how much ChatGPT can help them, I integrated in this version a little bit of secret juice. I think that secret juice will make those cover letters even better. And that's the first reason, to help people.

The second one is a bit more selfish. I've built a handful of LLM powered applications, but never anything completely end-to-end. They say the best way to learn about something is to build it yourself right? I certainly think so. So I wanted to build something where I made all the choices. Or something where I felt all the pain.

The stack

I'm not the biggest fan of falling in-love with a stack. "What stack would you use?" Well, tell me about the problem first.

For this app, I went with Django and htmx (again). Django is probably overkill for most simple web applications, but when users, databases, and settings start becoming a thing, it includes almost all the batteries I need. As for htmx, it's not that I don't like React, it's that I love keeping things simple. That does not mean it's always a great fit. But for this small project, it sure was.

One of the biggest hurdles when building this, was the implementation of streaming from OpenAI's API. There's nothing I hate more than clicking a button and having to wait 10 seconds for something to appear on screen. Turns out, integrating server-sent events with Django is not so straightforward. And even though Django supports streaming responses. At the end of the day, you can't really escape some good old Javascript. And I'm ok with that.

Still sticking to my premise of keeping things as simple as possible. Every component I add to an app during development is a component I'll have to maintain during its lifetime. And I'm not the biggest fan of maintenance work. Because of this, is both simple to use and to operate. It's a simple Django app with no queues and no self hosted PostgreSQL containers. It's a Dockerfile that connects to a PlanetScale database. That's it, every git commit automatically updates the app.

Nothing like keeping things simple.

July 19, 2023

Get new posts in your inbox