Skip to main content

Skills

No percentages. Each skill says where I used it, what I actually did with it, and whether that was client work or my own. Open one to read the detail.

Showing 28 of 28 skills

Positioning & Pricing

Deciding who a thing is for and what it costs — subscription tiers, commerce pricing, and the offer itself.

StripeSquareShopifyWooCommerce
How I use it

Content Marketing & SEO

Technical SEO, topic architecture, and programmatic templates built to earn the index rather than pad it.

Google Search ConsoleAhrefsGA4Screaming Frog
How I use it

Analytics & Measurement

GA4, Tag Manager and Search Console wired so the numbers can be acted on — and so paid has something to optimise against.

GA4Google Tag ManagerGoogle Search ConsoleLooker Studio
How I use it

Conversion Optimization

Funnel analysis, intent-matched CTAs and checkout paths — measured on the mix, not one vanity number.

GA4Google Tag ManagerStripeWooCommerce
How I use it

Email Marketing & Deliverability

Lifecycle, triggers and transactional email — plus the authentication layer that decides whether any of it arrives.

KlaviyoMailchimpShopifyResend
How I use it

Paid Acquisition

Paid search and paid social across client and own-brand accounts, run against analytics configured to make the spend legible.

Google AdsMeta Ads ManagerLinkedIn AdsTikTok Ads
How I use it

Organic Audience Growth

Building an audience from zero on short-form video, with no paid distribution underneath it.

TikTokYouTubeInstagram
How I use it

Product Strategy

Deciding what to build, what to leave out, and what the thing has to be worth to someone.

How I use it

Subscription & Billing Lifecycle

Stripe, plan enforcement and the state machine that decides who has access to what, and when they lose it.

StripeSquarePostgreSQLDrizzle ORM
How I use it

E-commerce Management

Running storefronts and marketplace channels day to day — Shopify, Amazon, catalogue, listings and the operations behind them.

ShopifyAmazon Seller CentralWooCommerceSquare
How I use it

Platform Migration

Moving a live business between platforms without losing catalogue, URLs or search equity.

WooCommerceWordPressSquare Catalog APIAstro
How I use it

Marketplace Architecture

Two-sided models — the ontology, the listing schema and the matching logic underneath them.

PostgreSQLTanStack StartDrizzle ORM
How I use it

AI-Assisted Development

Shipping production software by directing coding agents — specification, decomposition, review and verification.

Claude CodeTypeScriptNext.jsExpo
How I use it

Multi-Agent Systems

Orchestrating several agents against one problem — decomposition, parallel execution, and review by something that did not write the work.

Claude CodeClaude APIModel Context Protocol
How I use it

MCP Servers

Model Context Protocol servers, built and running — giving a model typed access to systems it otherwise cannot reach.

Model Context ProtocolTypeScriptClaude API
How I use it

AI Integration

Wiring model capability into products — APIs, chat interfaces, and features that still behave when the model does not.

Claude APITypeScriptNext.jsModel Context Protocol
How I use it

Vector Search & Retrieval

Embeddings, chunking and hybrid retrieval — getting a system to return the right thing rather than something adjacent to it.

pgvectorPostgreSQLClaude APIDrizzle ORM
How I use it

AI Harnesses & Evaluation

Scaffolding that measures AI output instead of trusting it — held-out inputs, scored comparison, and gates that stop bad output shipping.

Claude APITypeScriptGitHub Actions
How I use it

AI Logo Design

Generating brand marks that survive real use — at favicon size, in one colour, and next to type that has to be set properly.

How I use it

TypeScript, React & Next.js

The stack most of my production work runs on — App Router, server components, typed end to end.

TypeScriptNext.jsReactAstro
How I use it

API Design

REST, tRPC, webhooks and MCP tool surfaces — designed around the caller rather than the schema.

tRPCHonoZodREST
How I use it

PostgreSQL & Data Modelling

Relational schema design with Drizzle — migrations, types and query boundaries derived from one definition.

PostgreSQLDrizzle ORMSQLitepgvector
How I use it

Infrastructure & DevOps

Containerised deploys, automatic TLS and CI pipelines — so shipping is a commit, not an evening.

DockerCaddyGitHub ActionsLet's Encrypt
How I use it

Core Web Vitals

LCP, INP and CLS treated as a build constraint rather than a report you read afterwards.

PageSpeed InsightsCrUXLighthouseChrome DevTools
How I use it

Application Security

Auth, sessions, CSP and input validation — the OWASP list treated as a build checklist, not an audit finding.

ZodCSPscryptOWASP Top 10
How I use it

Infrastructure Security

Server hardening, secrets discipline and guardrails that hold when someone is moving fast.

CaddyDockerfail2banDMARC
How I use it

Design Systems & Tokens

OKLCH token pipelines, fluid type scales and component libraries where contrast is a build output.

OKLCHCSS custom propertiesTailwind CSSFigma
How I use it

Accessibility

WCAG contrast, semantic markup and keyboard paths — handled in the system rather than in a remediation pass.

WCAG 2.2axeVoiceOverLighthouse
How I use it