---
title: "AI Machine Learning SaaS Platform for Ad Optimization (alias AdsPower)"
description: "SaaS platform for AI and Machine Learning-driven ad optimization: search intent classification via NLP, automated bidding and negative keyword detection across Google AdWords, Bing Ads and Facebook Ads"
locale: "en"
canonical: "https://portfolio.josedacosta.net/en/achievements/plateforme-publicitaire-machine-learning"
source: "https://portfolio.josedacosta.net/en/achievements/plateforme-publicitaire-machine-learning.md"
html_source: "https://portfolio.josedacosta.net/en/achievements/plateforme-publicitaire-machine-learning"
author: "José DA COSTA"
date: "2016"
type: "achievement"
slug: "plateforme-publicitaire-machine-learning"
tags: ["Symfony 3.2", "Angular 4/10", "TypeScript", "Azure ML Studio", "NLTK", "Google AdWords API", "Bing Ads API", "Facebook Ads SDK", "MySQL", "GitLab CI", "Vagrant", "Electron"]
generated_at: "2026-06-02T15:37:38.248Z"
---

# AI Machine Learning SaaS Platform for Ad Optimization (alias AdsPower)

SaaS platform for AI and Machine Learning-driven ad optimization: search intent classification via NLP, automated bidding and negative keyword detection across Google AdWords, Bing Ads and Facebook Ads

**Date:** January 2016 - December 2018  
**Duration:** 3 years  
**Role:** Technical Project Manager & Co-Founder  
**Technologies:** Symfony 3.2, Angular 4/10, TypeScript, Azure ML Studio, NLTK, Google AdWords API, Bing Ads API, Facebook Ads SDK, MySQL, GitLab CI, Vagrant, Electron

## Project Overview

### The project in brief

AdsPower was an **early-stage startup** building a SaaS platform for AI-driven ad campaign optimization. The core concept: ingest thousands of campaign data points - keywords, bids, quality scores, click-through rates, conversion data - and feed them into **supervised classification models** trained on **Azure Machine Learning Studio** to output **actionable optimization recommendations**.

Concretely, the models learned to classify user behaviors, analyze search intent via Google SERPs, predict optimal bid prices, identify high-performing keyword clusters, detect negative keywords that drained budgets, and recommend ad improvements based on historical performance patterns - the whole pipeline resulting in **automatic bid optimization** based on conversion rates.

The project was directly inspired by **Optmyzr** and **Dolead** (French performance marketing platform), both analyzed in depth during our competitive research.

## Objectives, Context & Risks

### The 4 product pillars

### AI-Driven Optimization

Classify search intent and predict conversion probability per keyword via supervised classification models

### Automated Bidding

Automatically optimize bids (1st page, top, 1st position) based on actual conversion rates

### Negative Keyword Detection

Automatically identify and exclude keywords draining budget without conversion through semantic clustering

### Quality Score

Predict and improve Quality Score via expected CTR analysis, ad relevance, and landing page experience

### Market and technical context

### Business and technical stakes

### Identified risks

### **Google AdWords API quotas**: rate-limiting or ban if excessive volume

### Risk2

**API breaking changes**: Google regularly updates TOS and schemas (confirmed by the AdWords -> Google Ads migration in early 2018)

### **Imprecise models**: accuracy < 80% = loss of client trust

### **Azure ML Studio vendor lock-in**: Microsoft platform still young at the time

### **Scarcity of ML skills** in the Bordeaux region in 2017

### **Limited runway**: bootstrapped startup with no external investor

- **Technical**: industrialize Azure ML in production with < 500 ms latency on bid recommendations
- **Regulatory**: comply with Google AdWords API quotas and TOS - risk of ban if exceeded
- **Differentiation**: **ML-first** approach (vs heuristic of established platforms on the market)
- **Survival**: validate PMF (Product-Market Fit) before runway depletion (cash left before funding runs out - 18-24 months max without fundraise)

Business objective: enable Google AdWords advertisers to automate their campaigns with AI, detecting non-performing keywords and adjusting bids in real-time. Context: the market was dominated by Optmyzr (US) and Dolead (FR). We aimed at a more ML-first approach with SERP scraping and intent classification. Stakes: compete with established platforms, build a product/R&D team, manage dependency on Google/Bing/Facebook APIs. Risks: API quotas, breaking changes, competition, imprecise classification models.

In 2016, the SEA AdTech space was dominated by **Optmyzr** (US) and **Dolead** (France), both built on essentially heuristic recommendation engines. **Azure Machine Learning Studio** had just exited public preview in 2015, opening a managed path to industrialize supervised models without infrastructure. The team relied on **2 cofounders**: 1 CEO/business founder and myself as **Technical Project Manager & Cofounder (CTO)**, driving product design, application architecture, ML R&D, and investor relations.

## The Steps - What I Did

### Chronological journey in 4 phases

### Research and design (January-March 2016, 3 months)

- As **Technical Project Manager & Cofounder**, I led the deep competitive analysis of **Optmyzr** and **Dolead** (features, pricing, positioning)
- I drafted the **60-page specification document** and produced **40+ mockup pages** for Dashboard, Campaign Manager, Keywords, Opportunities, Quality Score, Reports and AI Insights
- On the technical choices, I committed to: **Angular** over React (TypeScript maturity in 2016), **Symfony 3.2** for Doctrine ORM and bundles, **Azure ML Studio** for time-to-market, **NLTK** over spaCy for multi-language support
- **Overcame difficulty**: facing ML talent scarcity in Bordeaux, I sourced candidates through geo-filtered GitHub search on `machine-learning` tags

### Prototype and v1 (April-October 2016, 7 months)

- On sprint 0, I set up **Vagrant + Ubuntu 16.10**, a self-hosted GitLab, the CI/CD pipeline and the first Symfony bundles
- I built the **Data Collection Service** (Google AdWords + Bing Ads connectors)
- On the competitive intelligence side, I built the **SERP Scraper** (Goutte + CasperJS) covering 6 engines (Google, Bing, Yahoo, Yandex, Baidu, DuckDuckGo)
- For the NLP pipeline, I set up a **Python Flask** sidecar (NLTK + TF-IDF) and the first **Azure ML Studio** models (Bid Prediction + k-means)
- In **November 2016**, I delivered **v1** with the first 3 beta testers
- **Overcame difficulty**: to absorb 10M+ SERP requests/month, I put in place a **Memcached** cache and a **Redis** queue

### v2 and multi-platform (November 2016 - June 2017, 8 months)

- Following the beta testers feedback, I redesigned the UX across **several screens**
- I added the **Facebook Ads SDK** coverage
- On the distribution side, I produced the **Electron desktop** build (Mac / Windows / Linux) and the **Cordova mobile** build (iOS / Android)
- For audience segmentation, I integrated the **Google Prediction API**
- **Overcame difficulty**: facing Google's announcement of the AdWords API → **Google Ads API** migration in early 2018, I anticipated the full connector refactor

### v3 Angular 10 and shutdown (July 2017 - December 2018)

- I migrated **Angular 4 → 6 → 8 → 10** across 3 major iterations
- On the model side, I stabilized and improved the accuracy of the Azure ML models
- On the commercial front, I signed **4 paying contracts** over 18 months (vs initial target of 20)
- I experienced a long B2B sales cycle (**6 months** on average), with insufficient runway to wait for funnel maturation
- In **December 2018**, we had to shut the project down, budget depleted

### Technical choices and ML methods

### Classification Flow

### End-to-end Machine Learning Pipeline

### Application architecture and services

- **Supervised learning** (gradient boosting, logistic regression, decision trees) trained on Azure ML Studio to predict Quality Score components
- **NLP pipeline** with NLTK: tokenization, stemming, stop word removal and TF-IDF vectorization of keywords and search queries
- **k-means clustering** applied to TF-IDF vectors to group keywords by search intent and detect negative keywords
- **Audience segmentation** via supervised classification on demographic data (age, gender) using Google Prediction API
- **Multi-engine scraping** (Google, Bing, Yahoo, Yandex, Baidu, DuckDuckGo) to collect competitive intelligence data

Three-step ML pipeline: (1) Data Collection via Google AdWords, Bing Ads APIs, and an in-house SERP Scraper built with Goutte and CasperJS to fetch structured search results. (2) NLP Processing with NLTK for tokenization, stemming, stop words removal, and TF-IDF vectorization. (3) ML Models on Azure ML Studio: supervised Gradient Boosting classification for relevance prediction, unsupervised k-means clustering for keyword segmentation, and Google Prediction API for audience segmentation. Architecture: Symfony 3.2 backend with 4 bundles (Core, Api, Admin, QueryBuilder), Angular 4 then Angular 10 frontend with Highcharts and Syncfusion. Infrastructure: Vagrant Ubuntu 16.10, MySQL utf8mb4, Memcached, GitLab CI/CD, Electron desktop + Cordova mobile.

## Who I interacted with - Team & Ecosystem

### The team in numbers

### My role and the recruitment

As **Technical Project Manager & Cofounder (CTO)**, I led the entire project from conception to delivery: **application architecture**, **Machine Learning R&D**, **sprint management**, **vendor management**, and **investor relations**. Coordinated **4 external contractors** (2 full-stack Angular/Symfony developers, 1 ML/data Python freelancer, 1 UX designer) sourced through GitHub search in the Bordeaux area.

### External stakeholders I interacted with

### Organizational difficulties overcome

### Scrum rituals and CI/CD chain

- **3-4 beta testers** (French SEA agencies): I organized weekly feedback for 18 months and co-designed workflows with them
- **4 paying customers** I signed over 18 months of commercial activity
- **1 Business Angel** met in due-diligence - after analysis, we declined the offer
- **Microsoft Azure ML team**: I maintained a partnership that gave me preview access to platform updates
- **6 VC meetings in Paris** and 2 pre-seed investment committees I led

- **Remote coordination** (freelancers in Bordeaux, Paris, Toulouse) via Trello + Slack + weekly video calls
- **CEO vs Technical Project Manager roadmap divergence**: the CEO pushed sales + new features, I pushed stability + model accuracy - resolved with weekly 1-1s and a jointly-prioritized backlog

I led a Scrum team of 5: 1 CEO/founder next to me, myself as **CTO/technical co-founder** (technical project manager and co-founder), 2 freelance backend/frontend developers and 1 UX designer. I structured the organization in 2-week sprints with Sprint Planning (Trello), development, code review (GitLab MR), automatic staging deploy (GitLab CI), Sprint Review (product demo) and Retrospective. I managed 18+ code repositories across 3 major versions and coordinated 40+ mockup pages. Day-to-day, I orchestrated the external freelancers and handled the commercial interactions with the first beta testers, with weekly product feedback.

### 5

People

### 18+

Code repos

### 3

Major versions

### 40+

Mockup pages

## Results & Achievements

### For the company: deliverables and milestones

### For Me - Skills Acquired & Reinforced Through This Project

- **First French SaaS platform** to industrialize **Azure ML Studio** in production for AdTech, as early as 2016 - well before predictive models became mainstream in digital advertising
- **3 years of continuous delivery** with a stable team of 4 contractors, a controlled budget until runway depletion, and a functional product in production from sprint 1 until shutdown
- **Built a multi-platform application**: web (Firebase), desktop (Electron for Mac/Win/Linux) and mobile (Cordova for iOS/Android)
- **Designed and documented a complete data model** covering Google AdWords, Bing Ads and Facebook Ads ecosystems
- **3 major backend versions in under a year**, with a migration from **Angular 4** to **Angular 10**
- **Complete project documentation**: requirements doc, 4 functional specs, technical specs, data model, market study

- **First tech startup cofounding**: I took on the role of **Technical Project Manager & Cofounder (CTO)** and led end-to-end (design, team, delivery, investors)
- **Technical Project Manager hat in early-stage**: I mastered sprint breakdown, estimation, freelancer coordination and the product roadmap negotiated with the CEO
- **Applied Machine Learning**: I acquired Azure ML Studio, NLTK, gradient boosting and k-means expertise in real-world production conditions
- **Multi-year R&D track**: I led budget, hiring, product prioritization and investor stakeholder management
- On the remote team side, I managed remote freelancers and turnover over 3 years
- **Product-market fit**: I concretely learned that technical excellence alone is not enough - commercial validation must precede construction
- **Long B2B cycles**: I lived a 6-month average sales cycle and measured the importance of the commercial funnel vs pure R&D
- This project changed the way I work: I permanently adopted the **lean startup** approach in all my subsequent CTO / Technical Project Manager missions

I delivered a functional SaaS platform in production with automatically managed campaigns. On the R&D side, I validated the proofs of concept for search intent classification and negative keyword detection. On distribution, I produced multi-platform applications: Angular web SPA, Electron desktop (Mac/Windows/Linux) and Cordova mobile (iOS/Android). I put an operational ML pipeline with Azure ML Studio into production and integrated the Google AdWords, Bing Ads and Facebook Ads APIs. On a personal level, I gained my first experience of co-founding a tech startup, managing a technical team and doing R&D in machine learning applied to digital marketing - and I validated my Technical Project Manager skills.

## Project Outcome

### End of the adventure and project status

### Immediate aftermath (2018-2019, post-shutdown)

### Further out (2019-2022)

### Today (2026)

- Development halted in **December 2018** and production environments frozen
- Returned to beta testers with a **transition path to Optmyzr** (assisted migration)
- **4 active customers** manually supported for 3 months after shutdown
- **Complete documentation archived** (spec, functional specs, data model, market study) for a potential future pivot
- **Freed the 4 contractors**: all found new engagements within the following month

- **Postmortem talks** at a Bordeaux coding school (sharing on product-market fit and Azure ML industrialization)
- AdTech market shift: **OpenAI GPT (2020-2022)** reshuffles the deck, classical ML models are largely surpassed by LLMs

### **Project closed**, no restart or pivot planned

- **Project closed**, no restart or pivot planned
- **Screenshots and mockups** now serve as portfolio material (see gallery below)

The project ended in late 2018 after 3 years. The startup did not find product-market fit at the level required to raise significant funds. Lessons learned: strict regulatory constraints of Google/Facebook APIs, fierce competition in the US market, and the difficulty of differentiating a technical product against established players. These lessons fed my subsequent projects (Groupe Pichet, then ACCENSEO).

The project was ultimately **abandoned due to lack of funding**. The R&D cost was too high for a bootstrapped startup with no external financing. The product worked, the models produced real optimization recommendations, but **without commercial traction the budget ran out**.

## My Critical Reflection

### Strengths

### Areas for improvement

### What I would do differently

### The lasting lessons this project brought me

- **Technical rigor**: I held a clean DDD architecture, modular Symfony bundles, tests and CI/CD from day 0 - it has remained my personal standard since
- **Strategic ML choice**: I remain convinced that industrializing Azure ML Studio was the right bet in 2016 (time-to-market + managed scalability)
- **Pioneering multi-platform**: I delivered desktop + mobile + web with a unified Angular codebase in 2016
- **Exhaustive documentation**: I produced the requirements document, specs, data model and market study

- **Too-late commercial validation**: I built the full v1 before confronting it with 3 paying prospects
- **Azure ML Studio dependency**: I factored in the vendor lock-in too late
- **Team too tech-heavy**: I stayed without a dedicated growth / marketing profile - everything rested on the CEO

- **Sell first, then build**: 3 MOUs signed before any development sprint
- **Tiny MVP**: 1 ML feature only (negative keyword detection), tested for 6 months before broadening scope
- **Open-source ML**: scikit-learn + FastAPI rather than Azure ML Studio, to avoid vendor lock-in
- **Recruit a 3rd growth / marketing cofounder** to balance the tech/business/acquisition trio
- **Formalize the Technical Project Manager role earlier** with a shared pilot board with the CEO, to avoid silent priority drift

- **Technical excellence alone doesn't make a viable business**: I saw that a good product without paying customers remains an R&D project.
- **Timing matters as much as execution**: I experienced that the AI angle applied to advertising was **ahead of its time in 2016** - making the project visionary but also harder to sell.
- **Validate the market before building the product**: I measured that I had invested too much time in technical R&D and not enough in commercial validation with real paying customers.
- **The ability to iterate fast is a lasting asset**: this regular delivery discipline has remained a permanent reflex in all my subsequent projects.

With hindsight, here is how I judge this project. On the strengths side, I built a modern technical architecture for the time, led a motivated team and pushed an ML-first approach differentiated from purely heuristic competitors. On the weaknesses side, I over-invested on the technical side before validating product-market fit, I let an excessive dependency on third-party APIs settle in (changing Google quotas), and I lacked commercial power to face Optmyzr and Dolead. The lasting lessons this project brought me: I now know that you must validate the market before over-building, that a tech startup does not survive without commercial traction even with excellent ML models, and that it's better to favor quick POCs over complete platforms before the first paying customers. This project was a school of entrepreneurial lucidity that served me at ACCENSEO later.

### Additional context

- Back to achievements
- January 2016 - December 2018
- Project Overview
- AdsPower was an **early-stage startup** building a SaaS platform for AI-driven ad campaign optimization. The core concept: ingest thousands of campaign data points - keywords, bids, quality scores, click-through rates, conversion data - and feed them into **supervised classification models** trained on **Azure Machine Learning Studio** to output **actionable optimization recommendations**.

Concretely, the models learned to classify user behaviors, analyze search intent via Google SERPs, predict optimal bid prices, identify high-performing keyword clusters, detect negative keywords that drained budgets, and recommend ad improvements based on historical performance patterns - the whole pipeline resulting in **automatic bid optimization** based on conversion rates.

The project was directly inspired by **Optmyzr** and **Dolead** (French performance marketing platform), both analyzed in depth during our competitive research.
- Objectives, Context & Risks
- The Steps - What I Did
- Who I interacted with - Team & Ecosystem
- Results & Achievements
- Project Outcome
- My Critical Reflection
- Concrete example: search intent classification
- **The problem**: in Google AdWords, advertisers buy keywords in broad match. Google then triggers ads on search queries it considers similar, but which often have **nothing to do with the campaign's commercial intent**. An advertiser selling "professional IT supplies" could see their budget consumed by visitors searching for "free computer courses" - paid clicks that will never convert.

**The ML solution**: the system scraped Google search results (SERP) for each purchased keyword, analyzed the **type of displayed results** and extracted the **thematic classification and search intent** (transactional, informational, navigational). These signals were vectorized via **TF-IDF** and fed into a **supervised classification model** (gradient boosting on Azure ML).

**The result**: the model classified each query as **relevant or irrelevant**. Keywords identified as false positives were automatically suggested as **negative keywords** to be excluded.

This is just one example among the many optimization algorithms built into the platform.

## Skills applied

_Technical and soft skills applied_

- **[Leadership & Team Management](https://portfolio.josedacosta.net/en/skills/leadership-team-management.md)** - Co-founded startup as CTO, managed a team of 4 freelancers for ML platform development
- **[Project Piloting & Agile Methodologies](https://portfolio.josedacosta.net/en/skills/project-piloting-agile.md)** - Led 3 major product iterations in under a year as Technical Project Manager
- **[Problem Solving & Adaptability](https://portfolio.josedacosta.net/en/skills/problem-solving-adaptability.md)** - Self-taught NLP, ML classification, and Azure ML Studio to build advertising intelligence platform - Designed search intent classification and bid optimization algorithms using TF-IDF and k-means clustering
- **[Software & System Architecture](https://portfolio.josedacosta.net/en/skills/system-architecture-design.md)** - Integrated Google AdWords, Bing Ads, and Facebook Ads APIs for multi-platform campaign management
- **[Fullstack Development](https://portfolio.josedacosta.net/en/skills/fullstack-development.md)** - Built full-stack platform with Symfony 3.2 backend, Angular 4/10 frontend, and ML pipelines

## Related journey

_Professional experience linked to this achievement_

- **AdsPower - Co-Founder & Technical Project Manager** - Early-stage startup building a SaaS platform for AI-driven ad campaign optimization. The product used machine learning to classify user behaviors, predict conversion probability, and automatically optimize bids based on conversion success rates.
As Technical Project Manager, led the project end-to-end: functional and technical scoping, planning, coordinating a team of 4 freelancers, and tracking MVP delivery.

## Image gallery

_Project screenshots and visuals_

## Have a SaaS project powered by AI, LLMs or Machine Learning?

Today I work on SaaS projects powered by **AI** and **LLMs**: **RAG**, **fine-tuning**, **autonomous agents**, multi-model orchestration, where the goal is to turn raw data into actionable recommendations. This expertise builds on an older foundation of **classical Machine Learning** - industrialized on AdsPower with **NLP** (NLTK + TF-IDF), **supervised classification** (gradient boosting) and **k-means clustering**, integrated with several external APIs (Google AdWords, Bing Ads, Facebook Ads) into a multi-platform SaaS. If you are exploring a SaaS project around **AI**, **LLMs** or **Machine Learning**, let's talk about your context.

**Contact me**
