Advertising agencyHanded over to the client's team

From competitor ad monitoring idea to paying customers

A department head at an advertising agency wanted to test demand for a competitor ad monitoring product. I built web ad scrapers, social ad collection through APIs and page scraping, a backend to receive and process mobile device data, and a web service with pricing plans, trial access, and several payment methods. Agency staff used it first, followed by external paying customers. After evaluating the economics of scaling, the company chose to keep the service for internal use.

Client
A department head at an advertising agency
My role
Identifying data sources and specialist needs; building web collection, the backend, and the customer-facing service
Team
Mobile developers built the device collectors. I built web collection, data ingestion and processing, and the web service.
Status
I handed the system over to the company's team for ongoing maintenance and internal use.
The challenge

The market already had many ad monitoring tools. The agency's department head wanted to find out which data the company could collect itself and whether customers would pay for its own product.

My work on the project

I identified available data sources and helped define the team needed. I built web scrapers, social ad collection through APIs and page scraping, the data ingestion and processing backend, and a web service with pricing plans, trial access, and several payment methods.

Outcome

The product was tested inside the agency and attracted external paying customers. After evaluating scaling costs, the company chose internal use. I handed the system over to its staff for ongoing maintenance.

Testing demand for an ad monitoring product

A department head at an advertising agency I worked with proposed an ad intelligence service: a tool for browsing competitors' ads and analyzing them. He wanted to find out whether the agency could sell access to its own product.

There were already many similar tools on the market. We needed to establish which data we could collect ourselves and whether customers would want the service. The department head handled sales through his professional network. I was responsible for building a product he could take to customers.

Data sources and development responsibilities

I started by mapping the available data sources. Together, we decided which ads to track and which specialists we would need to collect them.

Mobile developers built software that collected ads on devices and sent them to my backend. I wrote web ad scrapers and platform API integrations, collecting social ads both through APIs and by scraping actual pages. I also built the backend that received data from the mobile device farm.

All sources fed into a shared processing pipeline. The backend removed duplicates, classified ads, and compressed the data. Users received processed material organized by category.

Physical devices and the initial budget

The first constraint was coverage. Collecting ads at scale required mobile device farms and substantial operating costs. The client was not prepared to make that investment just to test the idea.

We experimented with emulators, but major platforms' SDKs recognized them. Ads either did not appear or differed from those shown on real devices. Physical devices were therefore necessary, and the budget allowed us to start with a small farm of just a few devices.

I designed collection around those limits. Rather than trying to cover every available ad, we focused on a few niches and sources. That was the scope of the data available when the product reached its first buyers.

The web service and paid access

I built the web service with an admin panel, several pricing plans, and multiple payment methods. Users could register, try the service for free, or pay for a plan immediately. They could browse ads and analytics for the sources, categories, and market segments covered by our collection.

Agency staff used the service first. The department head then began selling access to external customers. This answered the question of willingness to pay: the product had real paying users. It did not yet establish whether further scaling would make economic sense.

Adapting the architecture as data grew

The next challenge emerged as ads accumulated. Data volume grew nonlinearly, and every few months the system reached a new level of load. Architecture designed for the previous scale began producing excessive delays.

These were not simple list-filtering queries. Users applied custom selection criteria, grouped results across multiple levels, and requested daily impression statistics for selected groups. The system had to combine these operations over a continually growing dataset.

I substantially reworked storage and result retrieval several times. I used several database engines for different tasks and implemented automatically prewarmed caching for core and frequently used queries.

Each revision significantly increased the system's capacity. Further architectural changes became necessary at the next level of data volume, rather than because the same problem remained unresolved. The goal was to maintain acceptable response times as queries became more complex and the database grew.

The decision to keep the service internal

After evaluating the economics of scaling, the company decided to keep the service for internal work. I handed the system over to the employees who would maintain it.

By then, agency staff were using the product and external customers had paid for access. The company could base its decision on a working service and actual sales experience, having started with a small device farm rather than a major investment in collection infrastructure.

I worked with the same department head on another product validation project: a news app with its own advertising platform. For other areas of my work, see development for advertising and performance marketing.

How this experience applies to other projects
  • You need to test demand for a data-driven product with a customer-facing version, pricing plans, trial access, and payments.
  • Data arrives through scrapers, platform APIs, and mobile collectors. It needs to be combined, deduplicated, and classified.
  • Growing data volumes, custom filters, multilevel grouping, and group-specific statistics require changes to storage and query processing.
  • Initial source coverage needs to match the budget, with a realistic scope for data collection.

Facing a similar challenge?

Send a description, requirements and any supporting materials you have. If you have none yet, a few sentences are enough. I will review them myself, suggest an approach and explain where to start.

Let's discuss your project

What would you like to solve?

Share a detailed brief, requirements or any materials you already have. If you have none yet, a few sentences about the current situation and your goal are enough. I review every message myself and respond within one business day.

  • You will work directly with me, not a sales representative.
  • A free initial written discussion will help establish whether I can help and where to start.
  • If the project is outside my expertise, I will tell you directly.
Alexander Chadaev

Alexander Chadaev

Additional details

Attach requirements, sample documents, screenshots or other supporting materials. Maximum 10 files, up to 20 MB in total.

Let's discuss your project Telegram