May 26, 2025

·

Raúl López

How we saved dozens of hours per month by creating a quote AI assistant

In this series, we are going to dive deep into how we're automating our agency. Today, we are automating the creation of quotes for new clients, multiplying by 4 the number of offers we can make.

This year, we started with a challenge: we want to scale x5 while keeping the same small, lean team we have right now. This means that we need to automate a lot of the work we're doing, so we can use that time for something more productive.

One of the things that was being too time-consuming these past weeks was making offers for potential clients. We spend a lot of time building the offer, preparing a nice PowerPoint presentation, and iterating it with the team. On average, we spend around 3 hours to make an offer (after all the meetings with the potential clients).

This had to change, and it had to change fast because we are receiving quite a lot of potential projects, and there is no physical time to take care of all the offers on time. As a good developer, I spent those 3 hours building a small tool that allows us to iterate through offers with the whole team:


How does it work?

It's pretty simple. I'll divide it into 3 different parts:

User interface

For the user interface, we are using Laravel and Filament (which uses Livewire behind the scenes). This allowed us to quickly make a prototype and validate it with a real quote. Also, we integrated it inside Borah Studio, our internal software for the employees.

On the left side, there's a small chat interface. We can attach files (for example, project requirement documents sent by the client) and wait for the AI response. On the right side, there's a preview of the proposal that gets updated when AI makes changes to it.

The proposal

The proposal itself it's just HTML nicely styled using TailwindCSS. For this first version, we just created two different kind of slides: a text slide and a cover slide.

The quote is publicly accessible through a signed URL so that the quote can only be accessed by those with the link.

How do we generate a presentation using an LLM

For this prototype, we're using ChatGPT's API. We've designed a big system prompt with all the relevant information about our company, our values, and the services we offer, and it gets fed by our employee list and rates. The LLM has access to a series of tools:

  • Create a slide

  • Edit a slide

  • Delete a slide

  • Move a slide

With these 4 tools, the LLM can decide what to do based on the chat history, the attached documents, and the information provided by the user. After making the API call to the LLM, we transform the quotation and refresh it on the right side.

Now, this is what I love about automation: it makes you free to do more things. We are now able to make x4 more offers in the same amount of time, and we've increased the independence of our team to create and iterate over new offers.