Synter — AI ad operations across 16 ad platforms

Building Synter

The Full Story — 103 Days, 5 Pivots, 1 Vision

September 11, 2025 → December 23, 2025

8,437

Commits

876K

Lines Added

5

Major Pivots

146

AI Commits

Pivot #1

September 11, 2025 — Day 1

From ai-advertising to Synter

The first commit tells the story: "Rebrand from ai-advertising to Synter - AI Advertising Agency." A FastAPI backend, Railway deployment configs, and a vision document that would guide everything that followed.

Architecture v1: Python Monolith

┌─────────────────────────────────────────────────────────────┐
│  Day 1 Commits                                              │
│  ─────────────────────────────────────────────────────────  │
│  d31b2ff  Rebrand from ai-advertising to Synter             │
│  ef6e0df  Add Railway deployment configuration              │
│  e499e68  Fix nixpacks.toml: remove duplicate section       │
│  97061ff  Fix nixpacks.toml: properly configure Python      │
│  c027f8f  Fix nixpacks.toml: correct providers syntax       │
│  6d3f2b7  Fix nixpacks.toml: use ensurepip                  │
│  fcead60  Simplify nixpacks.toml                            │
│  f947cbb  Simplify deployment                               │
│  ─────────────────────────────────────────────────────────  │
│  13 commits in one day — the deployment dance               │
└─────────────────────────────────────────────────────────────┘

138

Commits

13,113

Lines Added

Pivot #2

September 12-13, 2025 — Days 2-3

Python → Next.js

In 48 hours, the entire frontend shifted from Python templates to Next.js 15. D3.js charts, a settings panel, auth sessions, RBAC — 22,000+ lines in a single day.

PPC Dashboard with D3.js Charts - September 13, 2025

Dashboard Overview - October 17, 2025

Architecture v2: Next.js + Python Backend

October 2, 2025 — Day 22

Multi-Platform Ad Vault

The first major feature: OAuth connections to Google Ads, LinkedIn, Microsoft, Reddit. A credential vault with auto token refresh. The foundation for cross-platform campaign management.

Platform Integrations - October 17, 2025

Onboarding Flow - October 17, 2025

OAuth Token Management

PostgreSQL Ad Platform Synter User

Auto-refresh before expiry Connect Platform OAuth Redirect Auth Code Exchange for Token Access + Refresh Token Store Encrypted

Pivot #3

November 11, 2025 — Day 62

The AI Enters

Amp makes its first commits. The codebase gains a collaborator. 439 commits in one day — 16 files touched by AI. The vision of human-machine collaboration becomes real.

Joel

"Apparently these are moats for YC startups — please review and let me know how this compares to Synter."

Amp

"Your strongest near-term play is Counter-Positioning + Speed. The 'Cursor for ad campaigns' vision directly challenges legacy dashboard tools that can't cannibalize their own seat-based revenue."

Nov 11 First AI commits appear

16 files touched by Amp

Nov 16 625 commits in one day

Massive feature push

Nov 22 Campaign IDE redesign

"Chat-first interface (Cursor-style)"

Nov 24 Claude joins

Second AI collaborator

Pivot #4

November 22, 2025 — Day 73

Dashboard → Chat-First IDE

The biggest pivot: "Redesign Campaign IDE landing as chat-first interface (Cursor-style)." No more dashboards with forms. Just describe what you want, and the AI builds it.

Before: Dashboard-First - November 2025

After: Chat-First IDE - December 2025

Campaign IDE Architecture

Joel

"I started building campaign memory with a RAG model. Accept/Reject is good — we have it in the agent, yet I don't know if it's really being incorporated."

Amp

"Found the gap. The feedback is being collected but never retrieved to influence future responses. It's write-only. Let me implement the feedback loop to close it."

November 25, 2025 — Day 76

The Nango Migration

Four major refactors in one day: "Switch all ad platforms to use Nango authentication." Migrate to NextAuth.js v5. Move all OAuth flows to frontend. Remove Railway backend dependency for auth.

Before: Custom OAuth per Platform

After: Unified Nango Flow

December 4-6, 2025 — Days 85-87

Teaching the Agent to Think

The Oracle enters: GPT-5 reasoning for complex analysis. Business profile inference. Funnel blueprints per company type. The agent learns to think differently about enterprise vs. SaaS customers.

Joel

"Investigate why the agent continues to focus solely on PostHog tracking. For enterprise customers, PostHog tracking is not always the right fit — they use offline conversion APIs."

Oracle

"Synter is PostHog-biased because PostHog is treated as the 'analytics truth' in tool definitions. The simplest fix is to infer a business profile for each workspace, define a funnel blueprint per business type, and wire that into system prompts."

Business Profile → Funnel Intelligence

Funnel Blueprint Profile Inference
Enterprise Ads → Web → CRM → Revenue
SaaS Ads → Product → Conversion
E-commerce Ads → Cart → Purchase

Pivot #5

December 22-23, 2025 — Days 103-104

Agent Autonomy

The final frontier: teaching the agent to execute code. E2B sandboxed execution. Approval workflows. Script catalogs. The agent becomes truly autonomous.

Sandboxed Execution Architecture

Amp

"Done! The sandbox executor is deployed to Railway. E2B stdout capture is working. Phase 3b complete."

103 Days Later

Final Architecture

8,437

Total Commits

876,298

Lines Added

254,819

Lines Removed

6

Ad Platforms

146

AI Commits

From a Python monolith to a chat-first IDE with sandboxed AI execution — built by humans and machines working together.