---
title: "AI Machine Learning SaaS Platform for Ad Optimization - 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.info/en/achievements/plateforme-publicitaire-machine-learning"
source: "https://portfolio.josedacosta.info/en/achievements/plateforme-publicitaire-machine-learning.md"
html_source: "https://portfolio.josedacosta.info/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-04-24T08:28:38.963Z"
---

# AI Machine Learning SaaS Platform for Ad Optimization - 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.

## ML Approach & Technical Pipeline

### 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)
- Drafted the **60-page specification document** and produced **40+ mockup pages** for Dashboard, Campaign Manager, Keywords, Opportunities, Quality Score, Reports, and AI Insights
- Motivated technical choices: **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**: ML talent scarcity in Bordeaux - solved through geo-filtered GitHub search on `machine-learning` tags

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

- Sprint 0: setup **Vagrant + Ubuntu 16.10**, self-hosted GitLab, CI/CD, and first Symfony bundles
- Built the **Data Collection Service** (Google AdWords + Bing Ads connectors)
- Built the **SERP Scraper** (Goutte + CasperJS) covering 6 engines (Google, Bing, Yahoo, Yandex, Baidu, DuckDuckGo)
- NLP pipeline (NLTK + TF-IDF) as a **Python Flask** sidecar + first **Azure ML Studio** models (Bid Prediction + k-means)
- **v1 delivered in November 2016** with the first 3 beta testers
- **Overcame difficulty**: 10M+ SERP requests/month - solved with **Memcached** cache and **Redis** queue

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

- Beta-tester feedback → UX redesign across **several screens**
- Added **Facebook Ads SDK** coverage
- **Electron desktop** build (Mac / Windows / Linux) and **Cordova mobile** build (iOS / Android)
- **Google Prediction API** integration for audience segmentation
- **Overcame difficulty**: Google announced the AdWords API → **Google Ads API** migration in early 2018 - full connector refactor planned ahead

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

- **Angular 4 → 6 → 8 → 10** migration across 3 major iterations
- Stabilization and accuracy improvements on Azure ML models
- Paying customer acquisition: **4 contracts signed** over 18 months (vs initial target of 20)
- Long B2B sales cycle (**6 months** on average), insufficient runway to wait for funnel maturation
- **December 2018**: project shut 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.

## Team & Organization

### 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

### Organizational difficulties overcome

### Scrum rituals and CI/CD chain

- **3-4 beta testers** (French SEA agencies): weekly feedback for 18 months, workflow co-design
- **4 paying customers** signed over 18 months of commercial activity
- **1 Business Angel** met in due-diligence (offer ultimately declined on our side)
- **Microsoft Azure ML team partner**: preview access to platform updates
- **6 VC meetings in Paris** and 2 pre-seed investment committees

- **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

Scrum team of 5: 1 CEO/founder, 1 CTO/technical co-founder (my role: technical project manager and co-founder), 2 freelance backend/frontend developers, 1 UX designer. Organization: 2-week sprints with Sprint Planning (Trello), development, code review (GitLab MR), automatic staging deploy (GitLab CI), Sprint Review (product demo), Retrospective. 18+ code repositories across 3 major versions. 40+ mockup pages. Daily coordination and external freelancer management. Commercial interactions with early beta testers, weekly product feedback.

### 5

People

### 18+

Code repos

### 3

Major versions

### 40+

Mockup pages

## Results & Achievements

### For the company: deliverables and milestones

### For me: learnings and growth

- **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** as **Technical Project Manager & Cofounder (CTO)**, with end-to-end leadership (design, team, delivery, investors)
- **Operational mastery of the Technical Project Manager hat in early-stage**: sprint breakdown, estimation, freelancer coordination, product roadmap negotiated with the CEO
- **Applied Machine Learning expertise** acquired in real-world conditions: Azure ML Studio, NLTK, gradient boosting, k-means in production
- **Multi-year R&D track leadership**: budget, hiring, product prioritization, investor stakeholder management
- **Remote freelancer management** and turnover handling over 3 years
- **Concrete product-market fit lesson**: technical excellence alone is not enough, commercial validation must precede construction
- **Long B2B cycle understanding** (6-month average sales cycle) and the importance of the commercial funnel vs pure R&D
- **Permanent adoption of the lean startup approach** in all my subsequent CTO / Technical Project Manager missions

Functional SaaS platform in production with automatically managed campaigns. Validated proofs of concept for search intent classification and negative keyword detection. Multi-platform applications: Angular web SPA, Electron desktop (Mac/Windows/Linux), Cordova mobile (iOS/Android). Operational ML pipeline with Azure ML Studio. Integration with Google AdWords, Bing Ads, Facebook Ads APIs. Personally: first experience co-founding a tech startup, managing a technical team, and R&D in machine learning applied to digital marketing. 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**.

## Critical Reflection

### Strengths

### Areas for improvement

### What I would do differently

### Lasting lessons I kept

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

- **Too-late commercial validation**: built the full v1 before confronting 3 paying prospects
- **Azure ML Studio dependency**: vendor lock-in factored in too late
- **Team too tech-heavy**: no 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.** A good product without paying customers remains an R&D project.
- **Timing matters as much as execution.** 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.** Too much time invested 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 became a permanent reflex in all my subsequent projects.

Strengths: modern technical architecture for the time, motivated team, ML-first approach differentiated from purely heuristic competitors. Weaknesses: technical over-investment before product-market fit validation, excessive dependency on third-party APIs (changing Google quotas), and lack of commercial power to face Optmyzr and Dolead. Lessons: validate the market before over-building. A tech startup does not survive without commercial traction, even with excellent ML models. Favor quick POCs over complete platforms before having 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
- ML Approach & Technical Pipeline
- Team & Organization
- Results & Achievements
- Project Outcome
- 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** - Co-founded startup as CTO, managed a team of 4 freelancers for ML platform development
- **Adaptability & Learning Agility** - Self-taught NLP, ML classification, and Azure ML Studio to build advertising intelligence platform
- **Project Management** - Led 3 major product iterations in under a year as Technical Project Manager
- **Full-Stack Development** - Built full-stack platform with Symfony 3.2 backend, Angular 4/10 frontend, and ML pipelines
- **Problem Solving & Critical Thinking** - Designed search intent classification and bid optimization algorithms using TF-IDF and k-means clustering
- **REST API Design** - Integrated Google AdWords, Bing Ads, and Facebook Ads APIs for multi-platform campaign management

## 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**
