— 18 pieces · sole marketing leader

Tools I built to do this work.

The automation layer behind one marketer shipping at the volume of a team. Roughly 5 foundational artifacts spanning translation, production, measurement, and reasoning, plus a longer tail of scripts, flows, and frameworks that returned hours per week to strategic work.

— code built

translation-automator

Per-batch localization tool. Ran in production on 2 locales across 46 English pages, totaling 92 pages. Replaced 3 CS-team part-timers running ~21 hrs/week × 6 weeks of manual translation work per batch. Saved 96 hours of labor.

Paperturn Translator Streamlit app — sidebar with Anthropic + SEMrush API key fields, main area with target-language selector (Spanish chip in brand teal), URL paste area showing Paperturn industry pages.
Streamlit app · sidebar API config + URL-batch input · brand-teal accent (#117681)
  • Python
  • GPT-4o
  • glossary-aware prompts
  • CMS export pipeline
~6 wks → 3 hrs per-batch time
— code built

agentic-blog-system

End-to-end blog production agent. LLM APIs + Semrush keyword research + auto image generation + alt text + slugs + page titles + meta descriptions, fed by the internal-link analyzer and audited by the schema auditor.

Paperturn Blog Generator Streamlit app — sidebar with API key configuration and a "322 pages indexed" stat from the actual Paperturn sitemap, main area showing the New Blog tab with content-strategy inputs (persona, industry, job-to-be-done), awareness-stage radio options, and blog-style/tone-of-voice/publication-type selectors.
Streamlit app · multi-agent pipeline · 322 Paperturn pages in the internal-link index
  • LLM APIs
  • Semrush
  • image-gen
  • n8n
  • CMS API
~5 min · ~$5-6 per article (vs $50-200 outside writers)
— artifact built

cac-payback.xlsx

CAC payback methodology authored from first principles. Three-flavor framework (naive / simple / empirical), piecewise empirical retention curves with front-cliff modeling, gross-margin haircut, segregated monthly-vs-annual cohort economics. Pairs with a closed-form formula relating ARR/CAC ratio, gross margin, payback target, and monthly churn rate.

  • Excel
  • derivation
  • piecewise survival modeling
CFO-grade closed-form derivation
— code built

hubspot-msads-sync

HubSpot → Microsoft Ads offline-conversion importer. SHA-256 email and E.164 phone hashing per Microsoft's API spec, automated weekly from the HubSpot contact-to-payment-data joins. Replaced manual exports and fed Microsoft's Smart Bidding equivalent the CRM signal it otherwise lacked.

  • Apps Script
  • HubSpot API
  • Microsoft Ads API
  • SHA-256 hashing
CRM-native closed-loop · weekly automated
— framework built

recursive-positioning

Industry-positioning automation derived from the Fletch framework. A prompt chain that ingests a real ICP brief, runs the positioning research workflow per industry, and outputs a populated positioning table per cell. Compressed multi-day workshops (4-8 hours) to ~30 minutes per industry; 85% first-output buy-in when fed a real ICP brief, degrades to generic on thin inputs.

  • LLM prompt chain
  • Fletch framework
  • ICP brief schema
4-8 hr → 30 min per industry · 85% first-output buy-in

— Production & content

  1. 01
    internal-link-analyzer

    Sitemap crawler that maps a page corpus and surfaces topically relevant internal-linking targets for any new draft. Fed the agentic-blog system the link graph each new article should join. The SEO move most teams skip because it's too tedious to do manually.

    • Python
    • sitemap parser
    capability-only
  2. 02
    schema-auditor

    Structured-data compliance auditor. Validates JSON-LD output against the schema.org spec relevant to each page type (Article, Product, Service) and flags missing or malformed fields before publish. Ran as a gate in the agentic-blog pipeline.

    • Python
    • JSON-LD
    capability-only
  3. 03
    cms-builder

    Headless-browser CMS builder. Playwright walks a page brief through the CMS editor UI (fields, slugs, meta, image uploads), replacing manual entry. Scoped to free ~12 hours per week of intern CMS time during the 235-page rollout.

    • Playwright
    • CMS API
    capability-only
  4. 04
    figma-ad-creative-script

    Figma plugin that fans out ad-creative variants from a single source frame. Locale, copy, and offer swap via JSON config; output is publish-ready PNGs and MP4s for Meta, Google, and Microsoft. Removed the per-locale design step from the production loop.

    • Figma plugin API
    • TypeScript
    built

— Measurement & attribution

  1. 01
    customer-match-sync

    Google Ads Customer Match list generator. Pulls customer segments from HubSpot (active subscribers, churned, free-trial-stalled), SHA-256-hashes per Google's spec, and pushes to Customer Match audiences on a weekly cadence. Powers audience-targeting layers on branded and competitor campaigns.

    • Apps Script
    • Google Ads API
    built
  2. 02
    hubspot-payment-data-joins

    Custom HubSpot reports joining contact-email to Braintree credit-card and bank-transfer payment data. Built Q4 2024 because HubSpot's lifecycle-stage automation was unreliable; measurement worked at the contact-email to payment-data layer instead, insulated from the 62.6% customer-stage undercount that surfaced in the April 2025 cleanup. Remained as redundant verification post-cleanup.

    • HubSpot custom reports
    • Braintree export
    built

— Frameworks & analytical artifacts

  1. 01
    country-tier-framework

    5-tier country-efficiency framework. Top-10 markets ranked on ARR/CAC ratio × empirical CAC payback × trial-to-paid conversion × annual subscriber mix. Each tier prescribes the action: A Compounder (scale), B Workhorse (maintain), C Bifurcated (annual-only), D Marginal (pull paid), E Broken. Drove a five-figure DKK monthly reallocation from underperforming geographies.

    • Excel
    • cohort SQL
    • piecewise survival
    built
  2. 02
    naming-convention-spine

    Campaign architecture spine. <MARKET>-<TYPE>-<SUBTYPE> taxonomy applied across Google, Microsoft, and Meta Ads; 36 of 89 tenure-wide campaign renames. The artifact that survived three paid-agency transitions: each new agency inherits names already conformant, so reporting filters and naming-driven attribution rules survive handover.

    • Google Ads
    • taxonomy doc
    scaled
  3. 03
    onboarding-framework

    PLG onboarding framework. Trigger logic, email tone, and activation-definition rules abstracted into a portable template that drops into any PLG SaaS. Authored from pattern-matching across prior tenures, Paperturn-validated. Not Paperturn-deployed (PLG onboarding wasn't the bottleneck the work prioritized); capability is the documentation and the workflow, not a shipped instance.

    • copy + activation rules
    capability-only

— Reporting & ops

  1. 01
    arr-report-generator

    Custom ARR report generator. Pulls Chargebee's recurring-revenue export, joins it against active-customer cohorts from HubSpot, and outputs a country × plan-type ARR breakdown matching the LTV formula's grain. Replaced ad-hoc SQL pulls that historically blocked the client-lifetime reporting module.

    • Python
    • Chargebee export
    • Excel
    built
  2. 02
    multi-csv-join-utility

    Pandas utility for cross-system CSV joins. Built during HubSpot Cleanup v2 to merge contact exports against Chargebee subscribers, Braintree payment data, and Google Ads click-ID tables on a per-contact basis. Reused on any reporting question that needed data from more than one system.

    • Python
    • pandas
    built
  3. 03
    zapier-n8n-flows

    Operational-glue automations across Zapier, n8n, and Make.com. ~25 flows across tenure: notification routing for paid-account churn, lead-form pass-throughs from the website to HubSpot, CRM enrichment from Chargebee, sync triggers for ARR dashboards. The boring infrastructure that kept the rest of the stack readable.

    • Zapier
    • n8n
    • Make.com
    built
  4. 04
    llm-prompt-chains

    Reusable LLM prompt chains, version-controlled. ~6 chains underpinning the agent tools above: positioning research, copy generation against a brief, translation-glossary lookup, page-template population, ad-creative ideation. Each chain hand-tuned against a worked example before going into production.

    • prompt-engineering
    built