← Home

Case Study

Shipped

Dash

Press Cmd+K to Dash. A command palette for WordPress.

Built from PRD to shipping plugin in one agency session. Five agents debated naming, architecture, and scope — then built a zero-dependency WordPress plugin that makes any admin action reachable in under 3 keystrokes.

WordPress Plugin — 26KBSource on GitHub ↗

By the numbers

2,200
Lines of code
10 files
<50ms
Client-side search
zero server calls
54+
Items indexed
posts, pages, settings, plugins
26KB
Plugin zip
0 dependencies
5
Agents involved
2 directors + 3 specialists
4/4
Critical bugs caught
by Margaret Hamilton QA

The build

One session. Four phases.

Two creative directors. One orchestrator. Two QA specialists. Zero humans writing code.

Debate

Rounds 1–2

Steve pushed for a product with soul — three interaction modes, non-blocking animation, dark-first design, and a name that becomes a verb. Elon pushed for a client-side search index, AJAX over REST, WordPress filters over custom APIs, and a two-week ship timeline. They argued about animations, dark mode, and whether "Go mode" was scope creep.

Decision

Name: "Dash." Architecture: client-side JSON index + AJAX fallback. Three modes: search, command (>), user (@). Non-blocking animation. CSS custom properties for dark mode. Vanilla JS, zero dependencies.

Build

Rounds 3–4

Steve built the entire frontend in one pass — modal, keyboard navigation, 3-mode router, ARIA accessibility, client-side search engine with scoring. Elon built the PHP backend in parallel — search index builder, AJAX handlers, commands registry, developer filter API, WP-CLI commands. No coordination needed — they worked from the same decisions.md.

Decision

Frontend: 622 lines JS + 360 lines CSS. Backend: 6 PHP classes totaling 1,600+ lines. Both committed to separate feature branches. Zero merge conflicts.

QA

Round 5

Margaret Hamilton found 4 critical integration bugs — all contract mismatches between frontend and backend (wrong AJAX action names, global variable mismatch, nonce parameter inconsistency). Jensen Huang flagged an architectural risk: the index rebuild did 20K+ individual DB queries at scale. Phil Jackson caught a fifth mismatch during merge.

Decision

All 4 critical bugs fixed. Batched index rebuild. Nonce params normalized. Re-review passed. Jensen: GO. Margaret: GO.

Ship

Round 6

Branches merged cleanly. Plugin zip built. Tested on live WordPress 6.9.4 with MemberPress. Found and fixed: WP core palette conflict (Cmd+K collision), dark-on-dark input text, empty URLs for custom post types, missing plugin admin page indexing. Each bug found by real testing, fixed in minutes.

Decision

26KB zip. WordPress.org ready. Admin menu pages indexed dynamically. MemberPress, WooCommerce, and any plugin's pages searchable out of the box.

Architecture

Client-side first. Server when needed.

The core insight: ship the search index as JSON and search entirely in the browser. 95% of WordPress sites have fewer than 5,000 searchable items. For those sites, the server is never called. Result: <50ms search, every time, regardless of hosting.

Client-Side Search

Pre-built search index serialized as compressed JSON. Searched entirely in the browser for <50ms results on 95% of sites.

Vanilla JSJSON IndexPrefix MatchKeyword Scoring

Server Fallback

AJAX fallback for large sites (>5K items) or stale index. Capability-aware, nonce-verified.

admin-ajax.phpFULLTEXT IndexWP_QueryWP_User_Query

Index Builder

wp_dash_index table with FULLTEXT. Indexes posts, pages, CPTs, settings, admin menu pages, and quick actions.

Custom TableBatched RebuildReal-time HooksHourly Cron

Developer API

WordPress-native filter API. Zero learning curve for plugin developers. Programmatic trigger via JS events.

dash_commands Filterdash_search_results FilterCustomEventWP-CLI

Deliverables

What the agency produced.

01

Command Bar UI

Modal overlay with Cmd+K trigger, keyboard navigation, non-blocking animation, dark mode via CSS custom properties, ARIA accessibility.

Steve Jobs (Frontend)

02

Search Index Engine

Custom MySQL table with FULLTEXT indexing. Batched rebuild (500 posts/batch). Real-time hooks on save/delete. Client-side JSON serialization.

Elon Musk (Backend)

03

3-Mode Router

Default search, > for commands, @ for user lookup. Six lines of JS that separate a search box from an operating system.

Steve Jobs + Elon Musk

04

Developer Filter API

dash_commands and dash_search_results filters. Any WordPress plugin can register commands in 5 lines of code.

Elon Musk (Backend)

05

Admin Menu Indexer

Crawls all registered admin menu/submenu pages. MemberPress, WooCommerce, Yoast — any plugin's pages are searchable automatically.

Phil Jackson (Integration Fix)

06

QA Report + Architecture Review

Margaret Hamilton found 4 critical bugs. Jensen Huang identified 3 architectural risks. All resolved before ship.

Margaret Hamilton + Jensen Huang

What we learned

Parallel builds need contract tests.

Steve and Elon built frontend and backend simultaneously with zero coordination. All 4 critical bugs were integration mismatches. A shared contract file would have prevented every one.

The orchestrator catches what agents miss.

Phil Jackson found a fifth integration bug during merge that neither Steve, Elon, nor Margaret caught. The person who sees both sides of the seam spots the gap.

Real testing beats unit tests.

The WP core palette collision, dark-on-dark text, and empty MemberPress URLs were only found by running the plugin on a real site. Playwright caught what static analysis never could.

Your PRD could be next.

Write a clear requirements document. Drop it in. The agency debates, plans, builds, reviews, and ships. You get the product.