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