Digital consulting · SEO, web, data & systems

The team that gets your site, your data, and your workflow talking to each other.

We handle technical SEO and AI-search visibility, build and rebuild websites, wire up dashboards out of messy data, and ship the project tools that keep it all moving. One partner instead of four vendors who don't compare notes.

Where we help

SEO & AEO Web Development Data & Dashboards PM & Transformation

Recent results

What the work has done for clients this year.

+50% Monthly Google clicks for a beach resort, April vs September 2026
16x Monthly Google clicks for an event venue over the same six months
22 to 38 Page-one keywords for a heritage cosmetics company in one quarter
132 / 143 AI-optimized blog posts approved by a language-learning app's editors

What we do

Four disciplines, one team.

Search visibility, the site itself, the data behind it, and the tools your team runs on, handled by people who talk to each other because they're the same people.

AI citation check · unbranded prompts
"Best [category] for beginners" Top pick
"[Category] alternatives" Mentioned
"What is [category]?" Not mentioned
"[Category] vs [competitor]" Mentioned
Performance audit · this rebuild
Performance 98
Accessibility 100
Best practices 100
SEO 100
Dashboard · weekly rollup
2,418 Installs ↑ 12%
861 Activations ↑ 6%
$18.4k Revenue ↑ 9%
Workspace · Internal Ops
Backlog4
Audit content tags
Refactor onboarding flow
Plan team offsite
In progress2
Update brand guidelines
Rewrite job descriptions
Review1
Q3 retrospective notes

Go deeper: SEO & AEO  ·  Web development

From the field

Five engagements, five different problems.

Client names are left out on purpose. The work is real, and the numbers come straight from each client's own search and analytics data.

More search traffic for three hospitality venues.

A hospitality group with a South Pacific beach resort and two Bay Area venues had pages that weren't ranking for the searches guests actually make: weddings, spas, family holidays, event space. We rebuilt those pages, added structured data, and tracked rankings week by week in each target market.

  • Resort clicks up 37% year over year for July to September
  • Top-10 keywords in the resort's main overseas market: 44 to 121
  • Spa search from #30 to #4, wedding search from #34 to #9
  • Rooftop venue search from #4 to #1
Monthly Google clicks, April vs September 3 venues
+50%clicks
Beach resort 5,864 to 8,806
Up
+36%clicks
Rooftop bar 5,084 to 6,928
Up
16xclicks
Restaurant & event venue 251 to 3,987
Up
Before 6 to 8 hours To optimize one blog post by hand
After About 1 hour Same checklist, with a 2 to 3 minute editor review

An AI content editor the team actually trusts.

A language-learning app had hundreds of blog posts that needed updating and not enough hours to do it. We built two AI agents: one picks the posts with the most to gain and rewrites them against 41+ house rules, the other drafts new posts from content gaps. Nothing goes live until an editor approves it in a review queue we built into WordPress.

  • 132 of 143 AI-prepared posts approved and published by editors
  • 155 posts optimized in the first seven weeks
  • Every piece of editor feedback becomes a new automatic check

From buried in search to actually cited by AI.

For the same app, much of the blog rendered client-side with no HTML fallback, so search crawlers and AI answer engines were missing most of it. We fixed the rendering, cleaned up thin and duplicate pages, and reworked key content into the direct-answer format AI tools quote.

  • 5,700+ crawl errors traced back to one rendering bug
  • Mobile LCP from 5.7s to 3.8s, thin pages from 50 to 6
  • AI visibility tracked every two weeks across five AI tools
June 23 / 100 Estimated AI visibility: early traction
October 44 / 100 Regularly cited across multiple AI tools
One quarter, July to September 8 brands
38kw
Page-one keywords Up from 22 at the start of the quarter
+73%
6.3avg
Average tracked rank Improved from 8.9
Up
426sites
Referring domains Up from 375
+51

A heritage brand, cleaned up and climbing.

A cosmetics company with eight house brands had spam pages in its sitemap, brand schema that AI crawlers couldn't read, and hundreds of images with no alt text. We fixed the foundation first, then worked on content, community seeding, and the brand's presence in AI answers.

  • 49 spam sitemap entries removed and a security hole closed
  • Alt text on all 241 site images
  • Community posts reaching 50,000+ views in six weeks

From scattered reports to one source of truth.

A subscription app team was reading traffic, installs, ad spend, and revenue out of separate Looker reports that anyone with the link could open. We replaced them with a login-protected dashboard site that pulls straight from the source data, and connected it to Claude so the team can ask questions in plain English.

  • 17 dashboards live, from search to paid ads to revenue forecasts
  • New paid ads view matched the old reports to the install
  • Daily syncs with checks that flag stale or broken data
Before → after Live data
29pages
Link-shared Looker reports Open to anyone with the URL
Exposed
17dash
One gated dashboard site Per-person logins and access rules
Live
8jobs
Cloud automations Data syncs, audits and monitors, off anyone's laptop
Automated

Recent builds

Tools we've built this year.

Some run our client work, some run inside client teams, and a couple are products of their own.

Social listening

Earshot

Watches Reddit, Hacker News, Bluesky, GitHub and six other sources for brand and category mentions. Claude sorts each match and drafts replies, then sends them to Slack, email or a feed.

NodeSQLiteClaude
AI search tracking

AI Visibility Tracker

Twice a month, asks five AI tools the questions a client's buyers ask and scores whether the brand gets recommended. Results go straight into dashboards and monthly reports.

PythonChatGPTGeminiPerplexity
Reporting

Client Reporting Engine

Pulls search, analytics, Business Profile, ranking and AI data every month, writes up the work done, and runs a QA check. A person approves every report before a client sees it.

PythonPHPMCP
SEO audits

SEO & AI Audit System

Full site audits scored for both AI readiness and AI visibility, published to private client portals. Used for audits across 25+ client brands so far.

Claude CodeChrome DevToolsPHP
Content agents

Blog Optimizer & Writer

Two scheduled agents: one updates existing posts using search and install data, the other researches and drafts new ones. Both feed a WordPress review queue so editors stay in control.

ClaudeWordPressSearch Console
Dashboards

Growth Analytics Suite

A login-protected dashboard site covering traffic, search, installs, paid ads, revenue and content ROI, plus a Claude connector so anyone on the team can query it in plain English.

PHPGoogle APIsMCP
Desktop app

Selah Screens

A Mac app for running church worship slides, built to be simple enough for volunteers. Four outputs (main, stage, livestream, control), offline Bibles, and Stream Deck control.

ElectronJavaScript
WordPress

WordPress Toolkit

Nine in-house plugins, including a login shield that replaced paid security features, an approve-before-publish workflow, staging sync, and a site activity log.

PHPWordPress
Project management

Multi-team Task Platform

A task manager for agencies and their clients, with roles, invites, subtasks, comments and file uploads. Backend rebuilt from scratch on one Node server, covered by 91 automated API checks.

ReactNodeSQLite

How it fits together

Digital transformation, not just a deliverable.

Systems audit

We map how your site, your data, and your team's tools actually work today, and find where things break, duplicate effort, or quietly cost you rankings.

Integration & automation

Analytics feeding dashboards, forms feeding boards, exports replaced by live syncs. Less copy-paste, fewer spreadsheets nobody trusts.

Ongoing optimization

SEO, performance, and workflows aren't a one-time handoff. We keep tuning after launch, not just at kickoff.

Let's talk

Ready to fix what's slowing you down?

Book a 20-minute call. Tell us what's broken, slow, invisible in search, or scattered across spreadsheets, and we'll tell you honestly whether we can help.