Engineering Blog

Technical challenges behind Hunter's products, crawling millions of websites everyday to connect businesses.

What's new at Hunter — March/April 2022

The last two months have been pretty busy on Hunter’s end, and we’re glad to share with you our main achievements on the Engineering side. We released a mix of frontend, backend, and infrastructure changes that should have an immediate impact on how people use Hunter.

Updating our color palette

Working with colors is complex. They are a crucial element of any brand and can impact user experience, both positively and negatively. During our last Cycle, we managed to update our color palette. Here is the story behind this revamp.

Creating a table of contents for Ghost

The Hunter's blog provides many high-quality posts about cold email outreach, sales, marketing, and growth. Those in-depth articles usually contain multiple sections. To ease the navigation, we love to include a table of contents. Until now, those tables of contents were manually created by the authors. Here's how we automated their generation.

What's new at Hunter — Jan/Feb 2022

We know we've been pretty quiet in the last months — and even years 😇 — on the Engineering blog. But it's a thing from the past as we've decided to come up with a bi-monthly post. Our goal is to provide a short diving into our latest technical changes and improvements every two months. Enough talk: here's for the January and February 2022 roundup!

Keeping an enjoyable Rails application, years after years

Hunter.io and its API are served by a single, monolithic application built in Ruby on Rails. The first commit was performed by Antoine on March, 16th 2015, on the 4.2.0 version of Rails. Today, more than 5 years later, we’re still working on the same repository. Fortunately, we’re on a more recent Rails version. More importantly, we’re still having fun and enjoyment working on this application on a daily basis. Here are a few conventions, best practices and tools we’ve put in place to ensure our application remains up-to-date, clean and of course, enjoyable.

Fraud Prevention: Being Strict While Being Fair

At Hunter, one of our daily tasks is to fight against fraud. Preventing the creation of duplicate or bot accounts, as well as blocking payments from stolen credit cards, for example, are missions we undertake at any moment. Using both automated and manual means, we want to make sure every Hunter user is a legit, well-intentioned human.

Lessons From Migrating to GCP

A few weeks ago, we migrated most of our service to GCP. We learned a lot during this change to the infrastructure. Overall we’re very happy with the change but there’s, of course, some nuance. Here are some of our main findings.

New in Hunter: Improved Infrastructure Redundancy

Over the last ten days, Hunter experienced two separate downtimes of around one hour each and multiple smaller downtimes of 10 minutes. The availability of our service is essential as, at any moment, hundreds of users are working and counting on us to be online. Over the last few days, we weren’t up to your expectations; we know how frustrating this must have been. Here is what we improved in our infrastructure to prevent the problem from happening again.

Deploying 20 Times a Day Without Thinking About it

At Hunter, we love simplicity. As we’re a small team of 5 handling the traffic of 1 million monthly sessions, it’s necessary to have simple tools and processes we can rely on. When dealing with continuous deployment (aka “how to automatically deploy code to production, dozen times per day”), we obviously applied the same principles. This is how we did it!