iBoost/Portfolio/AdPilot

Growth·2026 — now

AdPilot

Autonomous Google Ads management: the system builds campaigns, computes conversions corrected for attribution lag and moves budgets — but no bid ever changes without a deterministic rule.

Our role

Architecture, engineering, operations

Status

Active development

Period

2026 — now

Platform

Web dashboard · background workers

GROWTH AdPilot 01Ingest GoogleAdsstatistics02Computeconversionsand budget03Deterministicrules andgates04Executechanges05Reconcile andreport PYTHON 3.12 · FASTAPI · POSTGRESQL · TIMESCALEDB · CELERY · REDIS · GOOGLE ADS API IBOOST.UA · 2026 — now

System map · internal perimeter, access under NDA

01

What it is

Most “AI ad platforms” make the same mistake: they ask a model to decide what to bid. AdPilot is built on the opposite principle. We never write our own auction bidder — we build a thin deterministic control and protection layer on top of Google’s own Smart Bidding. All money maths and guardrails are ordinary code you can test and explain to an auditor.

There is an LLM in the system, but its role is narrow: write ad copy and human-readable rationales for decisions.

It never calls a mutate operation. That is not ideology — it is what lets you sleep while live budget sits on the account.

02

capabilities

What it does

01

Campaign construction

Automatic assembly of campaigns, ad groups and ads with keyword research — from structure to final creative.

02

Two-tempo ingestion

A slow loop for complete data and a fast loop for critical spend metrics. Overspend is caught in minutes, not the next day.

03

Lag-corrected conversions

Attribution arrives late, and naive counting always undervalues recent days. The lag model is built into the maths.

04

Guardrails and budget

Deterministic spend limits plus an independent watchdog process acting as a kill switch — it still fires when the main worker hangs.

05

Reconciliation

Every day we reconcile what the system believes about spend against what Google reports. A mismatch is an incident, not a log line.

06

Dashboard and roles

A React console with role separation and a decision log: every change carries a cause, an author and a human explanation.

03

architecture

How it works

01

Ingest Google Ads statistics

02

Compute conversions and budget

03

Deterministic rules and gates

04

Execute changes

05

Reconcile and report

Under the hood

  • Python 3.12 + FastAPI on SQLAlchemy 2.0; PostgreSQL 16 with TimescaleDB for metric time series.
  • A Celery worker, a separate beat scheduler running two tempos, and an independent watchdog as a kill switch.
  • Domains split by purpose: guardrails, budget, decision_engine, fsm, rbac, ingestion, reconciliation, policy, executor.
  • Deterministic tests over the money maths form their own mandatory suite.
  • Token lifecycle and secrets live outside the code; four systemd units in production.
  • Principle #1 is written down: the LLM never calls mutate. Ever.
Python 3.12FastAPIPostgreSQL · TimescaleDBCeleryRedisGoogle Ads APIReact

04

scale

Numbers

0

bids set by an LLM

2

ingestion tempos

4

production processes

100%

decisions with a logged cause