What is our design process

Reading time4min


Zeh Fernandes
Resend Design Process

One of Resend's goals is to ship high-quality software quickly. This is crucial for the current stage of the company, so our design process is built based on these constraints.

We believe design is a discipline that can be exercised by anyone in the company. It is a way of translating user needs and business requirements into real solutions. This process can start with customer support, operations, or engineering.

Sharing taste and the meaning of quality is crucial for cultivating an open culture about design, and the key to achieving that is collaboration. It is very common for us to design solutions together, booking an hour to go through a problem and generate high-fidelity mockups in Figma together.

Here are the three phases the team can follow to design high-quality solutions:


The first phase is focused on navigating the complexity of the problem. The goal is to frame the problem, how we can solve it, what resources we need, and how we want the user to feel. It's a combination of research and play with the problem and the tools you have available: writing, coding, sketching, Figma, Retool, etc.

While we play with possible solutions, we increase our understanding of the problem, realize what we don't know, and search for answers.

The progress is shared publicly with the entire team. This transparency ensures that everyone, from developers to customer support, can provide feedback or follow the progress. It encourages a collaborative environment where diverse perspectives are integrated into the final solution.

The output is not the final solution but an overall idea of how to solve the core problem.

Key points to keep in mind:

  • Learn and discover the problem by doing
  • Collaborate to get multiple perspectives
  • Prototypes standout
Exploring the design problem
Exploring the design problem

Overall idea to go through implementation
Overall idea to go through implementation


The software industry has the privilege of rebuilding things, which not all industries have the luxury of doing. So, we will start implementing it as soon as possible to learn fast.

Many details and edge cases are addressed during implementation. We revisit the design as needed without stopping the main implementation, allowing us to iterate with real data and real scenarios instead of imaginable ones that sometimes people get attached to in discussions.

The software industry lacks good integrated tooling where the entire team can work in the same environment and see exactly what the user will see. Quickly moving to implementation helps design leave the dreaming Figma world. We prefer taking screenshots of the product and iterating on them rather than having the perfect design library.

Key points to keep in mind:

  • Code can be discarded and rewritten as needed
  • Address edge cases as they arise


This is where the magic of Resend happens. Once the solution is implemented, the team and some beta users can start using and experiencing it. What were previously separate pieces or hypotheses can now be felt as a whole solution, helping us identify gaps and test the entire user journey. Here, we are very committed to ensuring the solution truly solves the problem in the simplest way possible and how the user feels during the entire journey.

Based on feedback, we begin refining the details. After the engineering team finishes the foundation, the design team goes directly to the code to improve animation curves, fix misalignments, and add quality-of-life improvements to the experience. The operations team can tweak parameters exposed by the developers for fine-tuning and fast iteration, and customer support can help improve labels and documentation. The code is the source of the truth and where the entire team can work together.

Key points to keep in mind:

  • Trust in your taste
  • Make sure to solve the problem
  • Test the experience as a whole
The Resend design process in action.

This is the Resend design process. It's as lean and collaborative as possible, eliminating handoffs and fragmentation in software development.