All case studies

Case study

From audit data to a client-ready proposal, with an AI editor per section

An internal platform for an Amazon advertising agency that turned audit results into proposals through structured AI extraction, section builders, and a chat editor for each section.

Client
Adverio (former client)
Period
December 2023 – June 2026
Role
Senior Software Engineer on a team of four
  • Django REST Framework
  • Celery
  • BigQuery
  • Claude API
  • OpenRouter
  • CLIP
  • Prophet
  • MCP
  • Angular

Adverio's team audited Amazon sellers' listings and advertising, then wrote proposals by hand from the results. Adverio Tools, the agency's internal platform, automated the path from raw audit data to a proposal the team could send, and let the team edit any part of it by chatting with an AI. I led three developers on the platform and wrote most of its code.

The pipeline

Pipeline: audit data goes through AI extraction with tool schemas, a section registry builds a self-contained HTML proposal, and a chat editor edits one section at a time; an LLM layer routes to Anthropic or OpenRouter and records token cost

Decisions and why

  • One LLM interface, two providers. A client factory put Anthropic and OpenRouter behind one interface, with the preferred provider in settings. Every call was logged, and a daily job rolled up input, output, and cache tokens and cost by provider and model into an admin dashboard.
  • Structured extraction through tool schemas. The model filled a declared schema (summary, top insights, recommendations, opportunities, metrics) instead of returning JSON text to parse. Malformed output became a schema error, not a broken proposal.
  • Sections as data. A registry mapped section IDs to about 26 builder classes, so adding or reordering proposal sections was configuration, not new branching code.
  • Edit one section at a time. The chat editor worked on the HTML of a single section, showed a preview before accepting, and kept the original, the history, and a revert. A full-page mode handled larger changes.
  • Uploaded HTML locks the AI. When the team uploaded a hand-finished proposal, section-level AI editing was disabled for it, so regeneration could not overwrite manual work.

The rest of the platform

  • Amazon Rufus and COSMO analyzers that generated the questions Amazon's shopping assistant would ask about a listing and scored how well the listing answered them, plus a compliance analyzer.
  • Image analysis with CLIP embeddings to find the most similar benchmark images, plus LLM quality checks.
  • Prophet sales forecasting with tuning, per-product forecasts, monitoring, and alerts.
  • An MCP server that let LLM clients query advertising metrics and forecasts in natural language.
  • Before Adverio Tools, I worked on the agency's reporting platform (2019–2025), which loaded Amazon, Walmart, Google Ads, Criteo, and Shopify data into BigQuery.

What I would change

The CLIP service fell back to random benchmark images when its machine learning libraries were missing, and logged that at info level. A degraded mode like that should be visible in the interface and the logs, or fail outright.