Skip to main content
2026-W17

W17: Sales AI v1, VT-CMO Agent, and Paid Control

One of the most active weeks of the year — 150+ commits across 9 projects. Sales AI evolved into a full conversation handler, we built a marketing orchestrator agent from scratch, and AI-driven campaign management replaced the ad agency.

LV EN
Highlights
  • Sales AI Smart-Response Framework v1.0 — full conversation with the client, not a single reply
  • VT-CMO agent — marketing orchestrator with KPI plans, action queue and daily briefings
  • Paid Control — AI campaign management replacing the ad agency
  • SEO Worker v5 — 141 redirects live, URL Watch monitoring daily automatically
  • DATA-SOURCES-OF-TRUTH — data governance enforced at infrastructure level
  • LV content benchmarking — finding a cheaper alternative to Claude Opus
Insights
  • Sales AI is a conversation handler, not a one-shot emailer — a conceptual shift
  • Data governance at infrastructure level (injected contexts) is more reliable than written rules
  • Automated monitoring (URL Watch, integrity checks) catches problems before users do
Mistakes
  • EMERGENCY: Edge Function was noindex-ing the main domain vanillatravel.lv — quickly reverted
  • newsletter_ctr metric was CTR, but strategy meant CTOR — semantic mismatch
  • Facebook Ads Live mode blocked — Data Access Renewal had been pending since the previous week

Ecosystem overview

One of the most active weeks this year — 150+ commits across 9 projects. Three major themes: Sales AI transformed from a single-email tool into a full conversation handler; we built the VT-CMO marketing orchestrator from scratch; and AI campaign management replaced the ad agency’s role.


Vanilla Travel ecosystem

Sales AI Smart-Response Framework v1.0 (vt-internal-services)

The biggest conceptual shift of the week. Originally, Sales AI was designed as a “single-email sender” — client writes, AI replies, done. This week we established decision D11: Sales AI manages the full conversation with the client until a manager is needed.

Concretely: if the client says “too expensive” — AI searches for alternatives and offers them. If the client asks about other dates — AI runs a charter search and responds. The manager steps in only when the client is ready to book or there’s a special situation.

Additional changes this week:

  • UC email logic refined — proposal only when offering an alternative (not when the requested hotel is available)
  • Email sending migrated from MailerLite to Gmail SMTP (celojumi@vanillatravel.com)
  • Automated daily sales report — HTML email with deal analysis sent to CEO
  • W16 audit analyzed 43 deals — communication improvement patterns identified

VT-CMO agent (vanilla-travel)

Built from scratch: a marketing orchestrator agent. This is not just a script — it’s a strategic coordinator that:

  • Aggregates KPIs from multiple sources (GA4, Supabase, sales data)
  • Maintains KPI plans as the single source of truth (cmo_kpi_plans table)
  • Generates a daily briefing with Claude API analysis (not just data aggregation)
  • Maintains an action queue — recommendations → tracked actions → feedback loop
  • Receives CEO comments and feeds them into the next LLM briefing

Alongside this: vt-analytics gained 4 new Supabase tables (CMO pulse, action queue, CEO notes, URL health).

Built a full AI campaign management panel in the dashboard, replacing the ad agency’s work:

  • 123 RSA ads audited (100% identical template — problem identified)
  • 3 ad angle frameworks developed with psychological backing
  • 5 Google RSA v2 ads pushed live
  • Facebook creative materials prepared (API token scope blocked automated upload — see mistakes)

The panel includes a login gate, tab-based page routing, and full Agent Tool integration for write operations.

SEO infrastructure (vanilla-travel + vt-blog)

Worker v5 is live with 141 combined redirects (119 WordPress + 22 destination pages) plus a 404 fallback for paid campaigns. The URL Watch launchd task now automatically monitors critical URLs daily — the first production run revealed 7 broken links (95.9% integrity).

Additionally in vt-blog: IndexNow key file, GSC verification for the /blog/ URL prefix property, CODEOWNERS workflow.

SEO Emergency (vt-blog)

EMERGENCY REVERT: An Edge Function intended to improve SEO was actually adding noindex to the main domain vanillatravel.lv. The problem was caught and reverted quickly, but it’s a reminder — any change touching HTTP headers in production requires testing before deploy.

Data source governance (vt-shared + vt-analytics)

Created DATA-SOURCES-OF-TRUTH.md — a canonical document specifying exactly which data source to use for each business question. This document was injected into all board member sessions via CLAUDE.md. Simultaneously, vt-analytics gained a daily MySQL ↔ Supabase integrity check script.


biznesam.ai

AI news briefing (egonslapins-site)

Published an AI news briefing for 2026-04-15: Claude Sonnet 4 deprecation announcement, Routines functionality, and Project Glasswing. Simple “news” format — quick publish, minimal resources.


Infrastructure and tooling

LV content model benchmarking (vt-shared)

Ran the first formal benchmark for Latvian content generation. Six model combinations tested: Claude Opus 4.6 (baseline), Sonnet 4.6, Gemini 2.5 Pro, Gemini 2.5 Flash, Qwen 72B, DeepSeek. Gemini Flash — 0.33% of Opus cost, Sonnet — 19%. Qualitative assessment (LV grammar + brand voice) still awaiting manual rating.

Model migration (3 projects)

claude-sonnet-4claude-sonnet-4-6 updated in vt-blog, vt-internal-services, and hotel-reviewer-agent ahead of the 2026-06-15 deprecation date.

hotel-reviewer-agent

Refined the LLM prompt — added concrete BAD/GOOD examples for all weak sections, banned negative comparisons in the hero section.


Insights

Sales AI is a conversation handler, not a one-shot reply. This conceptual shift matters: the “single email” approach creates a dead end the moment the client replies and the AI doesn’t know what to do. Managing the full conversation until the client is ready to book is real value — and real time savings for managers.

Data governance is an infrastructure problem, not a rules problem. You can write DATA-SOURCES-OF-TRUTH.md as many times as you want — but the moment you inject it into every session’s context via CLAUDE.md, it actually gets followed. Rules without an enforcement mechanism are just hopes.

Automated monitoring catches problems before users do. URL Watch found 4 broken links on day one. MySQL ↔ Supabase integrity checks surface sync issues before they contaminate reports. This is an investment that pays back every day.


Mistakes and lessons

Edge Function and noindex. Carefully examine the HTTP header impact on SEO before deploying to production. It’s not about missing tests — it’s that Edge Functions can affect things indirectly (in this case, the main domain rather than just the blog).

Metric semantics ≠ metric name. newsletter_ctr meant Click-Through Rate — but in email strategy, “CTR” often means CTOR (Click-to-Open Rate). Before introducing a metric, validate its name against how it will drive strategic decisions.

Facebook Ads Data Access Renewal. Live mode blocked campaign uploads via API — but the renewal request had been submitted the previous week. External service blockers need to be tracked as active tasks, not just notes.