Work

Built, documented, and open to inspection.

One AI system built and tested end to end, and three security labs. Each entry sets out the problem, the approach taken, and what the evidence supports.

Project 01 · Built and tested

AI product pipeline

A multi-agent commerce pipeline. CrewAI agents running on Claude research and assemble a brand guide, generate product ideas and listing copy, create design mockups through Canva's remote MCP server, publish products over the Shopify Admin API, audit SEO quality, and email a daily operational health report.

It is built to run unattended on a VPS under systemd, cycling through BUILD, DESIGN and MAINTAIN modes depending on publish limits and configured cooldowns. Each phase has been built and tested; live publishing is the final stage still being brought online. The interesting engineering is not the AI. It is everything around it that stops the AI doing something expensive.

How it runs

Seven phases, four stages.

Brand

CrewAI agents research positioning, visual identity and SEO direction, then assemble a reusable brand guide.

Generate

Product ideas, titles, tags and descriptions generated from the current brand guide.

Design

Claude calls Canva's remote MCP server to generate mockups and template designs, with the Canva Connect API handling reliable exports.

Publish

Assets processed, listings validated, published through the Shopify Admin API, SEO reviewed and status reported.

Guardrails

Controls, not good intentions.

Credentials

API keys and OAuth tokens stay in .env; .env.example documents the required variables without exposing real values.

Scanning

gitleaks runs as a pre-commit hook and again in GitHub Actions on every pull request, alongside a pip-audit dependency check.

OAuth

Canva tokens are acquired through an OAuth PKCE setup script and Shopify credentials through a verified setup script; both are checked at preflight rather than hardcoded.

Validation

The upload flow checks title length, tag count, price range and asset readiness before any live publish.

Resilience

Calls retry with exponential backoff on rate limits and server errors; publish limits and cooldowns prevent burst automation.

Operations

SQLite tables track queue state, published listings, run logs, SEO reviews and sales, so failures are diagnosable.

Stack

The stack in full.

Languages

  • Python 3.12+
  • Bash shell scripting
  • SQL via SQLite
  • JSON payload design

AI and data

  • Anthropic API (Claude)
  • CrewAI
  • Canva MCP server
  • Serper API
  • SQLite database

Platform APIs

  • Shopify Admin API
  • Canva Connect REST API
  • OAuth2 PKCE
  • Gmail SMTP digest

Deployment

  • Ubuntu VPS
  • systemd service
  • Runtime logs
  • Daily health dashboard