October 2021 Retro

Exploring what to build next & prototyping a "solution".

In last month's retro I analysed the results of my ecomm ad campaigns and decided to put my ecomm dreams on pause. Following on from this, I explored an idea for a SaaS product and got pretty excited about it (more about that below).

Last month's goals

  1. Figure out what to build next.

    Final grade: 🤠

  2. Continue learning Go for an upcoming freelance project.

    Final grade: 🤥

Main events

Exploring what to build next

After publishing last month's retro, I received a suggestion for what my next project could be:

"a SaaS product to do the ad analysis you did in excel"

It's easy to come up with plausible-sounding product ideas, especially when you're not the one who has to implement them. But this idea was different. This idea really resonated with me. The more I thought about it, the more it made sense (for me).

If you know of Cory, you know that he knows his way around running profitable software products . So I wouldn't take his suggestion lightly.

This idea appeals to me because:

  1. I'm solving my own problem. I've analysed my own ad campaigns and it wasn't straightforward. The problem is real.
  2. I have strong ties with the marketing community. And by "ties with the marketing community" I mean my relationship with my girlfriend, Sheena. She's a digital marketer and her livelihood depends on optimizing ad campaigns. In the same way that I immerse myself in tech with articles, podcasts, & videos; Sheena does the same with marketing. It's hard not to pick up a few things.
  3. I have the technical ability to put together at least a partial solution.

Let's define the problem:

It's overwhelming to make sense of my Facebook ad results and to pinpoint which areas of a campaign needs attention.

So how are people currently monitoring Facebook ads?

Shockingly, the answer seems to be purely through tabular data. Facebook provides a powerful pivot table that allows you to breakdown your results in practically any way you wish. On the other hand, their graphing tool only allows you to make basic graphs limited to 3 metrics.

Based on Sheena's experience working at an ad agency (and now running her own), graphs aren't normally used to make ad optimization decisions. The reasons seem to be:

  1. The graphing tools provided by Facebook are shit.
  2. If you manually export the data and graph it in a third-party tool (i.e. Google Sheets, Google Data Studio), it's difficult to refresh the data and keep it up-to-date.
  3. If you automatically export the data and keep it up-to-date using a tool like Supermetrics , it's still difficult to build graphs that tell what's wrong with your ads.

So it's simply easier to avoid these issues and just use the pivot table in Facebook Ads Manager.

I've been reading "The Mom Test" by Rob Fitzpatrick . On page 54, he mentions "Product risk" versus "Market risk":

  • Product risk: Can I build it? Can I grow it?
  • Market risk: Do people want it? Will they pay me? Are there lots of them?

I believe that this idea has low market risk and high product risk.

Consider the following questions:

  • Do you want to know why your Facebook ads are struggling?

    I think the answer is certainly "Yes!".

  • Can I tell you why your Facebooks ads are struggling?

    The answer is much less obvious: "Maybe?".

One way to reduce the product risk and turn that "maybe" into a "yes", is to reduce the scope of the solution. I'm not here to "solve marketing", I'm just here to visualise some Facebook ad results so that you can do your job better.

This product is for you if:

  1. You run Facebook ad campaigns for clients — I want this product to help you make money.
  2. Your clients are ecommerce businesses — I want to only focus on events related to the customer's buying journey (i.e. add-to-cart, checkout-initiated, purchase, etc.).
  3. You need a quick way to monitor the health of your ads — I want this tool to be the first thing that you reach for.

Conversely, this product is not for you if:

  1. You're new to running Facebook ads — I don't want to teach you how to run ads.
  2. You're looking for a tool to create client-facing reports — This product is an internal monitoring tool, not a custom graphing tool.

So why doesn't a product like this exist yet? 🤔

Prototyping a solution

I still have no idea if a solution is even possible.

I started out by talking to Sheena about how she currently does things and finding out which metrics are important to her. Running Facebook ads seems to be very nuanced. Everyone has their own way of doing it.

Seeing as Sheena is my ideal customer, I wanted to see if I could help her make optimization decisions based on the graphs I can build on top of her client's ad data.

I used her feedback to expand on the graphs I made last month in Google Sheets.

Two things became annoying:

  1. The data was never up-to-date. Whatever we saw on the graph was a lie. We would look at the graph and come to some conclusion, but then when it comes to taking action in Facebook Ads Manager the situation has changed.
  2. Filtering down to each level (i.e. campaign, adset, ad) and then zooming in on a single item was confusing. It required jumping through multiple sheets and filtering pivot tables to finally see what you wanted.

With a basic idea of what kind of graph I wanted, I attempted to remove the above annoyances using code.

The first version:

  1. A python script that exports the Facebook ad data, groups results using a pivot table, and dumps it to a JSON file.
  2. A static html file with some JavaScript that reads the JSON file and displays a graph.

This allowed me to keep the data fresh and helped me learn how to draw graphs in JavaScript. However, if I wanted the graphs to be more interactive by filtering down to each level, I needed a backend to do some of the heavy lifting.

The second version:

  1. A Django backend with a REST API. This is the framework I feel most comfortable using.
  2. A React frontend. I want this project to have a Single Page App user experience. Plus, I despise using Django's templating language.

Now, the data is up-to-date and you can zoom in on an individual campaign, adset, or ad.

![Visual fb analytics v2 demo](Visual_fb_analytics_v2_demo.gif (Click to zoom)

Up to this point, I haven't actually solved the problem yet. The graphs look fancy, but it's not immediately obvious what is going on. That's where the value lies. That's what I'll focus on doing next.

Not learning Go

I didn't continue building my "for-fun" project in Go. Mostly because the freelance project that I was preparing for got deprioritized and I got too excited about my next (shiny, new) project.

I still think Go is a pretty cool language and I'll most likely need it in the near future. However, I'll keep this as a sidequest.


My total time allocation is slowly creeping up as I get stuck into things. It feels strange not hitting that socially-acceptable 160 hours per month.

On the one hand, I feel lucky for not being forced to work that much. On the other hand, I feel that I can push myself harder to achieve my goals.

Time allocation (2021-10)

Next month's goals

  1. Deploy a Sheena-only version of my Facebook analytics tool.

    I want to give her something that she can use on her own time. We'll quickly find out if the tool is useful or not depending on how often she reaches for it. Actions speak louder than words.

Thanks for making it this far. If you're interested in what happens next, I'll email it to you next month 👇