Custom Solution for Ad Campaign and Strategy Scheduling

Explore our user-friendly Scheduler system for ad campaigns and strategy scheduling integrated into the client’s DSP.

GET FREE CONSULTATION

About the client

MediaMath is an AdTech company providing digital marketing solutions for over 3,500 advertisers and brands. Its extensive portfolio includes platforms and tools for programmatic media buying, data management, audience segmentation, targeting, and more.

Technologies Used

Goal

MediaMath planned to introduce a custom solution to strengthen its omnichannel DSP offering to clients. They needed tailor-made functionality to support ad campaigns, strategy scheduling, and processing within the Demand-Side Platform. The goal was to provide a seamless and user-friendly experience for Mediamath’s clients to create, manage, and optimize their advertising schedules of different complexity and scale.

Work Description

Requirements Gathering (Duration: 1 month):

Our team cooperated with the client’s Business Analyst, who developed the initial tech task for the project. It included a set of business requirements for the envisioned system. There was a clear understanding of the project’s milestones, and the Geomotiv’s team stepped in to figure out how to design and implement the solution using technology.

MediaMath wanted to leverage a custom-built Scheduler solution that would provide a more convenient way of processing ad campaigns and strategies within the Demand-Side Platform (DSP). The high-level requirements required the technical team to develop non-standard logic to schedule the concurrent creation and delivery of many advertising campaigns and strategies in the DSP.

The system-to-be would act as a closed CRM with an authentication form. After entering credentials, the user navigated to the dashboard to create, edit, clone, delete, and perform other actions with their advertising schedule.

Our team conducted an in-depth analysis of the requirements to identify the most optimal path towards implementation. Geomotiv’s developers were responsible for designing the system, planning the interactions of its modules, and consecutive execution. Upon thorough examination, our tech lead evaluated the planned system’s capabilities and initiated the architecture design development.

Development (Duration: 7 months)

Team involved: 3 full-stack developers, 2 QA, 1 Tech lead.

Our team adopted an Agile development approach, conducting 2-week sprints to concurrently address front-end and back-end development. This strategy allowed for rapidly delivering prioritized features, testing, and deployment.

The team ensured a seamless entry point for clients into the system by developing a user-friendly and secure authentication interface. Our developers integrated the authentication form into the overall system through collaborative efforts, creating a reliable and efficient means for clients to access the platform.

The dashboard enabled clients to access, set up, and configure ad campaign schedules. It comprised three key modules: campaigns, strategies, and management of creatives.

Key entities within the system:

Ad campaigns:

  • Our developers introduced a comprehensive module for creating and configuring campaigns for different managers within the client’s company.

Ad strategies:

  • The team designed and implemented the user interface where clients could determine ad strategy behavior in the DSP.
  • The clients could set up the budget, max/min bid, CPM/CPA parameters, specify target regions and audiences, etc.

System for creatives management:

  • Our developers established a dedicated module for efficiently managing creatives – banners, videos, display ads, etc.

Technological foundation:

Developers wrote the front-end part with React.js and the back-end part in Python. They worked with the AMQP messaging protocol and Celery library to orchestrate a sophisticated message queuing system. Recognizing the Scheduler’s capacity to handle up to 20,000 entities simultaneously, the team executed background processes without client-side delays.

For instance, employing a step-by-step processing approach would have imposed delays on the client side when dealing with a substantial volume of ad strategies. Instead, the developers implemented a queuing mechanism using Celery, allowing them to process many strategies efficiently in the background. This approach informed users through an “in progress” indication in the UI, providing real-time visibility into ongoing processes.

Upon completing the campaign creation, the user interface dynamically reflected the status change to “done” or “error.”

Logging

The project team recorded all the information associated with each client’s activity in the Postgres database. It contained operational logs, which enabled developers to diagnose and troubleshoot issues before they flowed to the production server. We utilized Kibana for system monitoring, as it helped visualize logs and identify peak loads, errors, and the number of created schedules.

Integration via APIs

The system communicated with the DSP and determined the launch time of the advertising campaign based on the configured advertising strategies. The data was stored in the database, and then, through the TerminalOne API, it was connected to the DSP and published there.

Other functionalities

User notification system

Our developers successfully implemented a three-tiered user notification system catering to clients, admins, and developers. This comprehensive system ensured that notifications addressed the specific needs and roles of each user group:

Notifications for clients:

  • Information about newly created advertising strategies, their due date, launch time, etc.

Notifications for admins:

  • Errors occurring within the system.

Notifications for developers:

  • Internal service errors triggered notifications in designated Slack channels.
  • Developers then initiated a task to fix the bug based on these notifications.

Permission management system

The Scheduler incorporated a user access control system that reacted to changes on the go and in real-time. Our developers used the LaunchDarkly service and Websockets to assign and manage specific user access flags without delays.

For example, Mediamath’s admins could block access to ad strategies or campaigns for all users except a specific manager. Upon these changes, the system connects to the permissions system and checks whether this user has access. If they have, Scheduler displays the UI with access buttons. The system shows the UI with “Access denied” notification if they don’t.

Testing

Testing was an integral part of the entire development process, ensuring the reliability and functionality of the system at every stage. This methodology prevented the introduction of new bugs or unintended consequences with each system modification. 

Our developers applied unit testing to analyze components and verify that each functioned as intended in isolation. When the system architecture took shape, integration, regression, and functional testing seamlessly followed, examining the seamless interaction between these components. 

As the development progressed, we conducted performance testing to assess the system’s scalability and responsiveness under varying loads. This approach helped identify potential bottlenecks and optimize the system for efficiency.

Release to Production

Our developers set up CI/CD pipelines that automatically delivered the code to a new Docker container and deployed the latest version to the end user. This process involved deploying application code, database updates, and any necessary configurations across the AWS infrastructure. Rigorous automated testing, including unit, integration, and end-to-end tests, was conducted to validate the functionality and integrity of the deployed systems.

Improvement (Duration: 2 months)

Our developers focused on calibrating and optimizing the system to align it closely with the desired specifications and user expectations. They fine-tuned underlying code, resolved bugs, optimized features, and tested the performance and scalability.

Release

A one-year development journey culminated in the successful release of the finalized version of Scheduler, which has become a valuable asset within Mediamath’s operations. The company’s clients embraced the system for its robust functionality, user-friendly interface, and efficient ad campaign management.

Work Stages

  1. Requirements gathering: 1 month
  2. Development: 7 months
  3. Improvement: 2 months
  4. Release

Results

Scheduler is a tailored, innovative, and meticulously developed solution that meets and surpasses the client’s needs. The positive reception results from quality design, development, and testing processes established and managed by Geomotiv’s specialists.

Key achievements:

  • Fully custom solution: The Scheduler’s success resides in its non-standard logic and custom-built components tailored to Mediamath’s requirements.
  • Well-thought architecture: The expertise of our development team contributed to creating scalable and high-performing architecture.
  • Comprehensive functionalities: The solution equips clients with versatile tools for efficient advertising schedule creation and management.
  • Performance under heavy load: The Scheduler performs well under peak processing loads of up to 20,000 entities at a time.

RECOMMENDED CASES

Case Studies

custom-development-of-an-ad-management-system

White-Label Ad Management Solution

A flexible ad management system for large advertisers that brought industry recognition for MediaMath.

View
custom-solutions-for-adtech-company

Custom Solutions for AdTech Company

Discover our support solutions built for efficient software development and enhancement of AdTech products.

View
next-generation-mail-marketing-platform

Automated Mail Marketing Platform

The Mail Marketing Platform was an automatic system created for niche digital-to-direct sphere operations.

View
01
/
05

CONTACT

Let Us Contact You

Group 6 Created with Sketch.

Fill out the form below and we’ll get in touch within 24 hours

    Tell us about your project in your own words *

    I agree to  the  Privacy policy