Case study · AI

AdShort AIAI-driven short-form ad platform — automated video generation, scheduling, and publishing.

DevandLogics · France-based client · 2025

AdShort AI preview

Role

Lead backend & AI engineer

Duration

~12 weeks

Team

Solo on backend / AI · co-built with client product team

60%

Faster delivery

75%

Less manual work

Multi-lang

Auto publishing

The challenge

A France-based AdTech client needed to scale short-form video advertising across markets and languages, but their existing pipeline depended on humans for every prompt, render, and publish step. Output was inconsistent and campaign throughput was capped by team size.

What I built

I designed and built the end-to-end backend in NestJS + TypeScript, orchestrating Gemini and Vertex AI for prompt generation, media synthesis, and translation. The system handles scheduling, retries, and publishing across multiple ad networks with idempotent workflows so a failure mid-pipeline never corrupts a campaign.

  • Modular NestJS backend with isolated prompt, media, and publish services
  • Gemini + Vertex AI integration with structured outputs and retries
  • Job scheduler with idempotent workflows and per-tenant rate limits
  • Multilingual content automation across creation and posting

Key technical decisions

The choices behind the choices — and what tradeoff each one made.

  • Vertex AI over raw OpenAI for video synthesis

    Vertex's region controls and predictable enterprise quotas mattered more than marginal quality differences. The client needed EU-region inference and reproducible billing — not the bleeding edge.

  • NestJS modules per pipeline stage

    Prompt, media, translation, and publish each live as isolated modules with their own DTOs and queue. A bad render can't poison the publish step, and we can scale the slow stage independently.

  • Idempotent jobs over retries-with-state

    Every job carries enough context to be safely re-run. We chose this over distributed locks because the operational model is simpler — a crashed worker is a non-event, not an incident.

Outcome

Delivery speed improved by 60% and manual effort dropped 75%. Multilingual automation now runs unattended across creation and posting pipelines, and the marketing team ships more campaigns per week with more consistent output.

Lessons & what I’d do differently

  • Structured outputs from the LLM saved us weeks of downstream parsing — define the schema before you write the prompt, not after.
  • Per-tenant rate limits should be in place from day one; retrofitting them under load is painful.
  • Translation quality varies sharply by language pair — surface a manual-review queue for the long tail rather than chasing 100% automation.

A look inside

Screens from the shipped product.

Pick a visual style and ad type — the platform generates short-form video ads tailored to the product.
Pick a visual style and ad type — the platform generates short-form video ads tailored to the product.
Compose AI music and configure a video agent — product, avatar, and voice inputs per campaign.
Compose AI music and configure a video agent — product, avatar, and voice inputs per campaign.
Connect TikTok, Instagram, YouTube, LinkedIn and more for automated multi-platform publishing from a single agent.
Connect TikTok, Instagram, YouTube, LinkedIn and more for automated multi-platform publishing from a single agent.

Working on something similar? I’d love to hear about it.

Get in touch