WordPress and web engineering
Web engineering inside the tools a business already uses: AI analytics explanations with capped spend, reversible bulk price edits, never-miss scheduled greetings, and a static site rebuild designed to break no ranked URL.
Problem
A set of recurring problems on content-managed and e-commerce sites:
Site owners kept traffic numbers and behaviour signals in separate tools, rarely interpreted them and noticed drops only by chance.
Store managers with many variable products changed prices one product at a time, with no preview and no undo.
A membership site wanted birthday greetings sent without anyone tracking dates.
A services company's marketing site ran on an ageing dynamic CMS that was slow and costly to run, while years of ranked content could not be lost in a move.
Goal
Solve each one inside the tools the owners already use: AI explanations and anomaly alerts in the site admin with AI spend capped; safe, reversible bulk price edits; hands-off greetings that never miss and never double-send; and a static rebuild of the marketing site that breaks no ranked URL and is verified by a script.
My role
Sole developer of the analytics plugin (architecture, integrations, AI layer, anomaly detection, admin UI and security hardening), the bulk variation editor (including fixes from an independent multi-model review) and the birthday plugin. Migration engineer for the static site: content model, layouts, redirect tooling, programmatic landing pages, validation script and deployment configuration.
Solution
An AI web-analytics insights plugin: analytics and behaviour-data services, an AI service with switchable providers, locked scheduled jobs for data pulls, anomaly detection and a weekly digest, and several admin surfaces on a permission-checked REST API.
A bulk variation price editor: a three-step admin editor backed by validated AJAX endpoints, batched database access and a change log that powers one-click undo.
A membership birthday greetings plugin: two daily jobs, email from templates, send logs, an admin digest and a dashboard widget.
A CMS-to-static migration with programmatic local SEO: typed Markdown collections validated by schemas, generated location-by-service pages with structured data, a generated redirect map and a one-command validation script.
How it works
Analytics plugin. Settings live in the CMS options store, with API secrets encrypted at rest, and the site connects to a web-analytics API through OAuth. Daily jobs, each behind an execution lock, pull cached traffic reports and behaviour signals (rage clicks, dead clicks, error clicks and scroll depth) within a daily request budget into custom tables. An anomaly detector compares each metric with a rolling baseline using z-scores, assigns a severity and emails an alert. A prompt builder turns metric tables into structured context for a chosen analysis type with a matching analyst persona, and the AI service sends it to one of two language model providers, or both side by side, with stored follow-up chat. Every AI call is costed and logged, and a monthly cap blocks further calls once it is reached. Results appear in admin pages, dashboard and admin-bar widgets and an editor block, all behind capability and nonce checks, with an audit log and retention clean-up.
Bulk editor.
Choose a category and products, then load their variations with server-side pagination and filters, using batched prepared queries rather than loading each product object.
Pick a mode (set, adjust by an amount, adjust by a percentage) for regular prices, sale prices or both. The browser shows a before-and-after preview and warns when a sale price would exceed the regular price.
Apply. The server checks the nonce and capability, validates ranges, confirms every variation belongs to a selected product, writes with cache invalidation suspended and re-syncs each parent product once.
Each batch is logged under a unique id, any recent batch can be undone in one click, and old batches are pruned.
Birthday plugin. Two daily jobs run at a fixed local time. The greeting job matches birthday fields in two date formats against today plus a configurable number of past days for missed runs, optionally only for active memberships, skips anyone already greeted this year, fills a per-membership or default template, sends HTML mail and logs the result. The second job emails a daily admin digest. Settings offer a template editor, preview, test send, manual run and logs, and uninstalling removes everything.
Static migration.
Content (posts, services, customer stories, locations and resources) moves into Markdown whose frontmatter a schema validates, so a missing field fails the build.
A catch-all route combines location and service entries into city-by-service landing pages carrying service and FAQ structured data.
A script reads a spreadsheet of old-to-new URLs and generates the edge host's redirect file with permanent redirects, plus rules that close off the legacy CMS admin and login paths.
A validation script checks frontmatter, local image references and the redirect map, then runs a full build; the site deploys as static assets to an edge host.
Technical challenges
Reliable scheduled work on managed hosting with limited cron and short execution limits.
Tight third-party request quotas.
Predictable language model cost in a plugin that runs unattended.
Keeping the AI analysis consistent through structured prompts and personas.
Secrets at rest and route security inside a CMS.
Performance at catalogue scale (batched SQL, suspended cache invalidation), integrity against tampered requests, percentage rounding and a reversible change log.
Catching up after missed runs without double-sending.
Preserving search equity across every changed URL, detecting migrated "images" that were really saved HTML pages, generating local pages instead of hand-building them, and making a content migration testable.
Capabilities
- Traffic and behaviour analytics in one dashboard
- AI insights with follow-up chat and a two-provider comparison
- Anomaly detection with severity levels and alerts
- A weekly AI digest
- AI budget cap with cost tracking
- Widgets, editor block, REST API, audit log and retention
- Bulk exact, amount and percentage price edits with preview
- Batch history and one-click undo
- Automatic birthday emails with catch-up, once-per-year protection, templates, preview and digest
- Typed content collections
- Programmatic local landing pages with structured data
- Generated permanent redirects and legacy admin blocking
- One-command migration validation
Technology
Impact
Raw analytics became plain-language explanations and proactive alerts inside the admin, with AI cost capped. Catalogue-wide price changes became a single previewed, reversible operation. Greetings ran themselves. The marketing site gained the foundation for a static replacement with no dynamic attack surface and its rankings protected by a complete redirect map. No launch or performance figures are claimed.
Skills demonstrated
- Plugin architecture
- Third-party API integration
- Language model integration, prompt design and cost governance
- Statistical anomaly detection
- E-commerce data modelling and SQL performance
- Safe bulk-write design with audit and undo
- Scheduled job design with idempotency
- Content modelling, SEO engineering and build-time validation
- Secure development on a CMS
- AI-assisted code review
Demo
PlannedA demo site with synthetic data only. First, generated traffic and behaviour data for a fictional blog: a planted drop is flagged by the detector, an AI insight card explains it, two providers are compared, a follow-up question is asked and the budget meter moves. Second, a demo store with invented products in several sizes and colours: select, filter, preview a price rise that triggers the sale-price warning, apply it, then undo the batch. No demo for the birthday plugin or the static site.
Not built yet. A demo here uses only invented names and data.