Skip to content
Back to Portfolio

Fast SEO Platform

Custom SystemUI/UX Design

Intelligent SEO content automation: from strategy to publishing, with AI and human oversight

800+
Tests
Complete unit, integration, and E2E suite, zero TypeScript errors
18
Findings Remediated
Security audit: 3 critical, 6 high, 7 medium, 2 low, all resolved
310ms
Cached Build
Second Turborepo build: 30s down to 310ms via content-hash invalidation
Problem

The aerial surveying business leans heavily on local SEO to attract clients.

Every completed project is a potential case study. But the technical team has no time to write, design images, optimize SEO, and publish each article manually. The problem had multiple layers: generating content that sounds natural, automated illustration without generic stock, on-page optimization, AI hallucination detection, publication queue management, and human oversight without reviewing every line.

Process
  1. 01

    Architecture

    Monorepo with pnpm workspaces: content pipeline (bot), operations interface (dashboard), conversational assistant (planner), and MCP server. Each module independent with shared types.

  2. 02

    Content Pipeline

    5 chained stages: writer (generates the post), illustrator (generates images with Imagen 3), linker (adds internal links), QA (validates quality), and publisher (uploads to Payload CMS). Each stage atomic and transactional.

  3. 03

    Operations Dashboard

    Next.js interface with a publication queue, real-time monitoring, AI provider settings with encrypted credentials (AES-256-GCM), and a prompt editor.

  4. 04

    Conversational Planner

    AI assistant with function calling (12 tools) to manage content via chat. We evolved from MCP to function calling after evaluating with 7 experts.

  5. 05

    Hardening

    Security audit with 18 findings remediated (3 critical, 6 high), full TypeScript migration, 800+ tests, and Turborepo build optimization (30s down to 310ms).

Automate the entire pipeline while keeping editorial quality and brand consistency.
Build

Monorepo with 4 apps and 2 shared packages.

5-stage atomic pipeline: writer, imager (Imagen 3), linker, QA, publisher (Payload CMS).

Next.js dashboard with publication queue, real-time monitoring, encrypted credentials (AES-256-GCM).

Conversational planner with 12 function-calling tools.

800+ tests, security audit with 18 findings remediated, builds optimized from 30s to 310ms with Turborepo.

Outcome

Complete SEO content automation platform with a 5-stage pipeline, real-time operations dashboard, conversational planner with 12 tools, 800+ tests, 18 security findings remediated, and builds optimized from 30s to 310ms.

System Artifacts

Monorepo Architecture

Structure of 4 apps + 2 shared packages with centralized types and validation.

pnpm-workspace.yamlyaml
packages:
  - apps/dashboard    # Next.js 16, 7 rutas
  - packages/bot      # Pipeline de contenido
  - packages/shared   # Tipos, validación Zod
  - packages/mcp      # Herramientas externas

Content Pipeline

5-stage flow: writer → imager → linker → QA → publisher. Each stage atomic and transactional.

orchestrator.tstypescript
type PipelineStage = "writing" | "illustrating" | "linking" | "qa" | "publishing";

async function runPipeline(post: QueueItem) {
  for (const stage of stages) {
    const result = await executeStage(stage, post);
    if (!result.ok) {
      await rollbackPartial(post, stage);
      return { ok: false, error: result.error };
    }
  }
  return { ok: true, value: post };
}

Planner Function Calling

12 Zod-validated tools for managing content via chat with the operator.

planner-tools.tstypescript
const tools = [
  {
    name: "schedule_post",
    description: "Programa un post para publicación",
    parameters: z.object({
      title: z.string().min(1).max(200),
      surface: z.enum(["blog", "case-study"]),
      scheduled_date: z.string().datetime(),
    }),
  },
];
Tech Stack
Next.js 16 + React 19Node.js ESMTypeScriptTailwind CSS v4OpenRouter (GPT-4o-mini)Google Imagen 3Payload CMSSQLite (better-sqlite3)TurborepoVitestZodAES-256-GCMpnpm workspaces

Interested in building something like this?

[Start a Project]