Why I built a self-serving advertisement solution for myself

Orignally posted in PolisNetwork’s blog

Selling a product is never easy. As an experienced software engineer myself, building a software product is much easier than selling it. Actually, I can build and maintain multiple ones simultaneously, but it will only do good if I find customers interested in using them and paying for them. Therefore, marketing plays a key role here to success.

There are many ways to market. Buying ads sounds like an easy solution for early customer acquisition, but it has problems. Here are some of the issues:

  • It could be a substantial financial burden for early-stage products to keep burning cash before making any money.
  • You need to learn how to operate ads efficiently. That requires some trial and error, which can be stressful under financial burden.
  • Click fraud is hard to avoid. It would be hard to tell how much of your money is going to it.
  • Most ad networks out there raise serious privacy concerns, and more and more people are installing ad blockers to protect their privacy.

With these in mind, I’m not too fond of buying ads for customer acquisition for my products. Certainly, buying ads has some pros, but I like approaches that can grow organic traffic in the long run. Building useful free online tools can also bring organic traffic in the long run. Or content marketing is also one of them.

For example, I made the online Beancount formatter tool for selling BeanHub. Another example is that I built Avataaars Generator in 2017 as a hobby project, which became very popular. If you search “avatar generator,” it shows as the number one place in the search result in Google:

Search result of avatar generator from Google

It brings in some organic traffic every day without spending a single penny.

You have some traffic, then now what?

Say you worked hard and built up content for marketing, and you got a decent amount of organic traffic, but then the question would be, now what? You can put ads on your content website and earn some cash, then use the cash to buy ads. But it would be inefficient because now you need to pay the income tax and bring in the abovementioned problems for buying ads. The better answer is to put your own ads on your website and try to convert them into sales directly.

Putting ads on your website to sell your products sounds like an easy task, but trust me, it’s not. There are many problems that come with serving your own ads:

  • The more content you have, the harder it will be to manage all your ads and keep them up-to-date.
  • You need to find a way to measure the performance of your ads, and maybe you need to perform an A/B test to determine which one performs better.
  • If you have multiple ads sharing the same ad space, you need to write code to rotate them.

For traditional ad networks, there are two roles in the market. One is the advertiser who buys ads for selling their products or services, and another is the publisher who produces content, generates traffic, and trades them for cash. In the scenarios of producing content and selling the product or services simultaneously, you are essentially an advertiser and publisher. Unfortunately, most ad networks or solutions aren’t built to serve this need. I cannot find a solution out there to fit my needs, and that’s why I decided to build PolisNetwork.


PolisNetwork is a self-serving advertisement solution for converting your website traffic into sales. Polis means city in Ancient Greece. It originally referred self-governing city.

Acropolis of Athens, a noted polis of classical Greece.

Acropolis of Athens, a noted polis of classical Greece by A.Savin, WikiCommons CC BY-SA 3.0

Like the city is governing itself, the polis network is the ad system and potentially a network that runs by people with their own rules. For now, it has many features to make serving your own ads for your content easier than ever.

Overview of PolisNetwork solution

Space Opportunity

We call it an opportunity for a chance to display ad content. There are two types of opportunities for now.

The space opportunity works like traditional ad space. The ad will be shown in a fixed-size space in an iframe like this:

Space ad example

You can see it yourself here on my Avataaars Generator page.

Native Opportunity

People nowadays have been trained to ignore most ads when it looks like one to their eyes. We think it’s better to make the ad native to increase the engagement rate of the ad. By native, we mean the ad looks like and feels like a part of the content.

For example, at the bottom of my personal blog post, a native ad has been used there. It’s inserting the ad content HTML code into the web page to look just like the rest of the blog content. Here’s what it looks like:

Native ad example

Please note that this feature is only available for the Pro plan or above.

Random campaign based on weight

It’s very useful to display different content randomly based on weight, such as performing an A/B test. For example, I configured my native ad at the bottom of my personal blog page to display two campaigns with 50-50 weight. In this way, I can better understand which ad works better with the content I provided there. You can see them side by side here:

Random campaigns

You can also refresh the page to see them show up with a 50% chance.

Performance Insight

We record each impression of the ad display and the click of the links in your ad content. With the data, provide easy-to-understand charts to show you the performance of your ads:

Performance insight screenshot

For now, only impression and click counts are provided, and more metrics will be added in the future.

It’s still early beta, and feedbacks are welcome

As you can see from the primitive UI, PolisNetwork is still in its early beta 😅 We are working hard to improve it over time. Please feel free to let us know by reaching out to us at [email protected] if you have any feedback 🙌

Recent articles:

How I discovered a 9.8 critical security vulnerability in ZeroMQ with mostly pure luck and my two cents about xz backdoor
High-speed 10Gbps full-mesh network based on USB4 for just $47.98
Why and how I build and maintain multiple products simultaneously