SEO / Portfolio / Public Site
BarkBowl Redesign Research Report
Report summary
BarkBowl already has a strong premise, but the live public implementation currently undermines it. The homepage says BarkBowl is “premium dogfood for teams that eat their own roadmap,” prices work in engineering time, and invites users to browse Products, Time Cart, How It Works, Dogfooding Program,
Key topics
- SEO / Portfolio / Public Site
- SEO
- Portfolio
- Public Site
- WordPress
- TypeScript
- Runtime
- Privacy
- Physics
Research provenance
For citation, use the report title and canonical URL. Archival presence does not establish authorship or promote report statements into portfolio evidence.
Source availability: 30 citation markers in the source export have no recoverable source links. Those markers are omitted from this reader; any supplied bibliography and ordinary links remain. Check the original sources before relying on the cited claims.
This page renders the archived Markdown as safe, formatted HTML. It is background research and does not become a portfolio claim without evidence review.
Full report
On this page
Executive summary
BarkBowl already has a strong premise, but the live public implementation currently undermines it. The homepage says BarkBowl is “premium dogfood for teams that eat their own roadmap,” prices work in engineering time, and invites users to browse Products, Time Cart, How It Works, Dogfooding Program, Field Reports, and About. In practice, the critical navigation paths for Time Cart, How It Works, Dogfooding Program, Field Reports, About, and Privacy return 404s, the products archive is empty, and the homepage exposes a raw [barkbowl_time_budget_calculator] shortcode instead of a functioning interactive tool. That combination makes the site feel unfinished, reduces trust, and prevents the joke from turning into an educational experience.
The right redesign direction is not “make it more like a normal ecommerce site.” The strongest BarkBowl source material defines it as a time-commerce dogfooding product whose central mechanic is that software teams “pay” with time rather than money, and whose honest architecture is a custom WordPress plugin with a branded theme rather than WooCommerce painted over. That premise is reinforced by WordPress guidance that site-critical functionality should live in plugins, not themes, and that custom post types should be registered in plugins so content remains portable if the theme changes.
The redesign should therefore do three things at once. First, restore credibility by fixing route integrity, page titles, seeded content, and core interactions. Second, make the site much funnier by leaning into “deadpan premium pet-retail seriousness applied to software waste.” Third, make it much more educational by pairing every joke with a plain-English translation, a visible time formula, a lesson link, and a practical async or process substitute. That “learn while you laugh” pattern is consistent with strong edutainment examples: Kahoot markets “interactive learning,” “real-time engagement,” and instant feedback, while Brilliant emphasizes visual, interactive, step-by-step learning and explicit progression through challenge, streaks, levels, and daily goals.
Technically, the most robust implementation is a strict WordPress split: a BarkBowl Theme for presentation and a BarkBowl Core plugin for custom content models, cart/session logic, REST controllers, telemetry, seeders, quiz scoring, simulator formulas, admin tools, and rollout controls. WordPress REST guidance supports versioned namespaces, route registration on rest_api_init, explicit permission_callback usage, controller classes, and JSON Schema-backed validation. For accessibility, target WCAG 2.2 AA for titles, labels, focus, keyboard access, and predictable navigation, then also support reduced motion as an additional design guardrail. For performance, build toward 75th percentile Core Web Vitals targets of LCP ≤ 2.5s, INP ≤ 200ms, and CLS ≤ 0.1, and capture your own real-user monitoring rather than relying only on aggregate public data.
One limitation remains: this audit is based on the crawl-visible public site and the provided project documents. That is enough for a high-confidence redesign brief, but it is not the same thing as a full instrumented accessibility, JavaScript-behavior, or admin workflow audit. In particular, exact contrast values, full focus order, and current plugin/theme internals still require hands-on QA in the implementation environment.
Prioritized implementation checklist
The current highest-confidence priorities are below. The ordering reflects the live site’s broken trust path first, then core BarkBowl mechanics, then educational expansion, then optimization and launch governance. The rationale for that order comes directly from the present site failures, the WordPress architecture guidance, and the uploaded BarkBowl architecture documents.
| Priority | Task | What changes | Effort |
|---|---|---|---|
| Now | Repair route integrity | Create real pages for Time Cart, How It Works, Dogfooding Program, Field Reports, About, Privacy, Accessibility; remove all 404 nav paths | S |
| Now | Replace placeholder browser titles | Give every page a descriptive <title> and aligned visible <h1> | S |
| Now | Create BarkBowl Core plugin and BarkBowl Theme | Enforce plugin/theme separation before feature work continues | M |
| Now | Register content model | CPTs for Products, Lessons, Field Reports, Quizzes, Glossary Terms; taxonomies for category, work stage, risk, appetite, topic | M |
| Now | Seed launch content | Import 24 products, 8 lessons, 6 field reports, quiz content, glossary content | M |
| Now | Build working product archive and PDPs | Filters, sort, product cards, product detail, formula explainers, lesson links, async substitutes | M |
| Now | Implement server-backed Time Cart | Session cookie, cart rows, TTL, subtotal math, sprint-share math, receipt generation | L |
| Next | Replace shortcode with real Time Burn Simulator | Live calculator with scenario inputs and educational output | M |
| Next | Build Quiz Lab | “What Is Your Team Overfeeding?” quiz, result archetypes, recommended lesson path | M |
| Next | Build Lesson hub and cross-linking | Joke + translation + formula + checklist + related products + related field reports | M |
| Next | Add telemetry and rollout flags | Product analytics, event taxonomy, experiment support, ring rollout toggles, receipt completion metrics | L |
| Next | Accessibility hardening | Keyboard support, focus, labels, ARIA wiring, reduced motion, screen-reader QA | M |
| Next | SEO and schema | Descriptive titles/meta, JSON-LD for visible content only, sitemap, robots, canonicals, internal linking | S |
| Next | Performance optimization | Bundle budgets, image pipeline, lazy-loading, Web Vitals instrumentation, cache strategy | M |
| Later | Dogfooding admin dashboard | Gross time sold, top products, top async substitutes, TTL expiry rate, quiz completion, route error health | M |
| Later | Social and share surfaces | Printable receipt, “share your burn” image card, field report cards, open graph pack | M |
| Later | Content iteration loop | Monthly product refresh, new field reports, new quiz variants, archive hygiene | S |
Experience strategy and site architecture
BarkBowl should be positioned as a premium grocery parody for software teams, where the shelf joke is immediate but the lesson is equally immediate. The current site already signals the right conceptual raw material: products are categories like Feature Kibble, Bug Biscuits, Sprint Chow, Refactor Jerky, Incident Snacks, and Roadmap Rations; time, not money, is the currency; and “Build a Bowl” is the core action. The failure is not premise but follow-through. The redesign should preserve those aisles and the dogfooding/time-commerce fiction, then add a second layer that explicitly teaches how time burn accumulates in software delivery.
The top-line goals should be:
| Goal | Meaning in practice |
|---|---|
| Make it funnier | Stronger naming, packaging-grade microcopy, better visual satire, more confident retail deadpan |
| Make it more educational | Every product gets plain-English translation, time formula, lesson link, “what it teaches,” and async substitute |
| Make it more trustworthy | No broken routes, no placeholder titles, no exposed scaffolding, seeded content everywhere |
| Make it more product-like | Working cart, working receipt, working quiz, working simulator, telemetry-backed dogfooding |
| Make it more reusable | Keep critical behavior in the plugin; keep presentation and tokens in the theme |
The required pages and routes should be these:
| Route | Page | Purpose |
|---|---|---|
/ | Home | Premise, featured aisles, featured products, lesson highlights, quiz CTA |
/build-a-bowl/ | Build a Bowl | Primary discovery landing page |
/products/ | Product archive | Filterable catalog of all BarkBowl products |
/product-category/{term}/ | Aisle archive | Category landing pages for each aisle |
/snack/{slug}/ | Product detail | Formula, translation, ingredients, warning, async substitute, related lesson |
/time-cart/ | Time Cart | Cart, subtotal math, sprint-share, receipt preview, TTL |
/how-it-works/ | How It Works | Explain time-commerce, formulas, joke-to-lesson system |
/learn/ | Learn hub | Lesson archive |
/lesson/{slug}/ | Lesson detail | Short educational module |
/quiz-lab/ | Quiz Lab | Quiz archive and explainer |
/quiz-lab/team-overfeeding-checkup/ | Flagship quiz | Main launch quiz |
/field-reports/ | Field Reports archive | Story-led case studies |
/field-report/{slug}/ | Field report detail | Specific report page |
/dogfooding-program/ | Dogfooding Program | Rings, rollout process, telemetry, exit criteria |
/glossary/ | Glossary | Core definitions |
/about/ | About | Brand explanation and project framing |
/privacy/ | Privacy | Privacy notice and telemetry disclosure |
/accessibility/ | Accessibility | Accessibility statement |
/search/ | Search | Search results |
/404/ | 404 | Helpful recovery page with clear next steps |
flowchart TD
A[Home] --> B[Build a Bowl]
A --> C[Learn]
A --> D[Quiz Lab]
A --> E[Field Reports]
A --> F[Dogfooding Program]
B --> G[Products]
G --> H[Category Archive]
H --> I[Product Detail]
I --> J[Time Cart]
I --> K[Related Lesson]
K --> D
D --> L[Quiz Result]
L --> K
E --> M[Field Report Detail]
J --> N[Checkout Receipt]
A --> O[Glossary]
A --> P[About]
The architecture split should be strict because WordPress explicitly advises keeping design in themes and reusable, site-critical behavior in plugins; it also recommends putting custom post types in plugins so content remains portable if the theme changes.
| Layer | Owns | Must not own |
|---|---|---|
| BarkBowl Theme | theme.json, design tokens, templates, template parts, patterns, navigation, layout, CSS, non-critical presentational JS, editorial styling, search/404 templates, print styling for receipt pages | Cart state, session logic, checkout records, telemetry storage, seeders, scoring logic, CPT registration |
| BarkBowl Core Plugin | CPTs, taxonomies, custom fields, seeders, REST controllers, cart and receipt logic, session cookie, telemetry API, quiz engine, simulator math, admin settings, dogfooding dashboard, feature flags, permissions | Brand-only template decisions, nav styling, theme-specific layouts |
| Custom tables | Sessions, cart items, receipts, telemetry events, quiz attempts, feature flag assignments | Long-form editorial content |
| WordPress editor | Lessons, field reports, glossary terms, product descriptive content, approved assets | Runtime operational state |
flowchart LR
A[BarkBowl Theme] --> B[Templates and Tokens]
C[BarkBowl Core Plugin] --> D[CPTs and Taxonomies]
C --> E[REST Controllers]
C --> F[Cart and Receipt Engine]
C --> G[Quiz and Simulator Engine]
C --> H[Telemetry and Flags]
E --> I[Browser TypeScript Modules]
F --> J[Session Cookie]
H --> K[Admin Dashboard]
D --> L[WordPress Content Database]
F --> M[Custom Runtime Tables]
H --> M
G --> M
The content model should be the following:
| Type | Slug | Key fields |
|---|---|---|
| CPT | bb_product | title, slug, SKU, tagline, plain-English translation, formula display, typical time price minutes, typical time price label, ingredients, warning, async substitute text, related lesson, related glossary terms, hero image, aisle badge, display order |
| CPT | bb_lesson | title, slug, teaser, plain summary, learning objective, read time, lesson sections, formula callout, checklist, related products, related reports, next lesson |
| CPT | bb_field_report | title, slug, summary, report date, situation, what happened, what it taught, metrics, related lesson, related products, pull-quote |
| CPT | bb_quiz | title, slug, intro, questions JSON, answer weights JSON, result archetypes JSON, completion CTA |
| CPT | bb_glossary_term | term, slug, short definition, longer definition, plain-English note, related terms, related lessons |
| Taxonomy | bb_product_category | Feature Kibble, Bug Biscuits, Sprint Chow, Refactor Jerky, Incident Snacks, Roadmap Rations |
| Taxonomy | bb_work_stage | Intake, Discovery, Planning, Build, Review, Release, Operations |
| Taxonomy | bb_risk_level | Mild, Medium, High, Combustible |
| Taxonomy | bb_team_appetite | Solo Snack, Squad Bowl, Cross-Functional Crate, Org-Sized Sack |
| Taxonomy | bb_teach_topic | Dogfooding, Scope Creep, Meetings, Bugs, Refactoring, Incidents, Planning, Roadmaps, Async Work |
The visual system should reinforce “luxury dogfood packaging meets delivery telemetry dashboard” without becoming visually noisy. WCAG 2.2 AA requires descriptive titles and labels, visible focus, keyboard-operable interactions, and predictable information architecture, so the design system must privilege clarity first and humor second on critical paths.
| Token group | Token | Value | Use |
|---|---|---|---|
| Color | --bb-bg | #FFF9EF | Warm cream background |
| Color | --bb-surface | #FFFFFF | Cards and panels |
| Color | --bb-ink | #1F2328 | Primary text |
| Color | --bb-bark | #5A432B | Brand accent |
| Color | --bb-kibble | #D89D2E | Feature Kibble accent |
| Color | --bb-biscuit | #C75B39 | Bug/alert accent |
| Color | --bb-jerky | #4F7A62 | Refactor accent |
| Color | --bb-incident | #E29A1F | Incident highlight |
| Color | --bb-focus | #1D4ED8 | Focus ring |
| Color | --bb-border | #DCD4C8 | Borders and dividers |
| Type | --bb-font-display | Fraunces, Georgia, serif | Headlines |
| Type | --bb-font-body | Inter, system-ui, sans-serif | Body copy |
| Type | --bb-font-mono | IBM Plex Mono, ui-monospace, monospace | Formulas, receipts |
| Radius | --bb-radius-sm | 8px | Inputs, pills |
| Radius | --bb-radius-md | 14px | Cards |
| Radius | --bb-radius-lg | 22px | Hero containers |
| Shadow | --bb-shadow-card | 0 10px 30px rgba(31,35,40,.08) | Cards |
| Space | --bb-space-1..8 | 4, 8, 12, 16, 24, 32, 48, 64px | Consistent layout |
| Breakpoint | Range | Primary layout behavior |
|---|---|---|
xs | 0–599px | Single-column, sticky bottom cart CTA |
sm | 600–899px | Single-column with denser cards, 2-up product chips |
md | 900–1199px | Two-column product detail, persistent filters |
lg | 1200–1439px | Three-column archive, rail glossary/tooltips |
xl | 1440px+ | Wider editorial rhythm, bigger dashboard and receipt views |
| Asset | Count | Format | Notes |
|---|---|---|---|
| Wordmark logo | 2 | SVG | full and compact |
| Aisle icons | 6 | SVG | one per category |
| Product illustrations | 24 | SVG | one per seeded product |
| Lesson icons | 8 | SVG | one per lesson |
| Field report thumbnails | 6 | SVG/WebP | social and archive use |
| Quiz result badges | 6 | SVG | one per result archetype |
| Receipt stamps | 4 | SVG | “No money accepted,” “Time burned,” etc. |
| Open graph images | 10 | PNG/WebP | home, quiz, lesson, field reports |
| Simulator UI diagram | 1 | SVG | explanatory asset |
| Accessibility icon set | 1 | SVG | keyboard, focus, motion, labels |
Content system and seeded data
The seeded content should treat the catalog as the narrative shell and the educational layer as the real value. Current BarkBowl language already establishes the aisles; the new system should make each product card teach one operational lesson and guide users toward a short learning object. That is how the site becomes both much funnier and much more educational.
Seeded product catalog
| Category | Product | SKU | Tagline | Plain-English translation | Time formula | Typical time price | What it teaches | Ingredients | Warning | Async substitute |
|---|---|---|---|---|---|---|---|---|---|---|
| Feature Kibble | Tiny Ticket Tender Bits | BB-FTR-TTB-009 | “Just one button” in bite-sized denial. | Small requests expand once acceptance criteria appear. | 1h discovery + 5h build + 2h QA + 1h review | 9 p-h | Tiny features are rarely tiny | single-sentence request, hidden acceptance criteria, one reviewer | Expands on contact with stakeholders | Clarifying Note Cup |
| Feature Kibble | OAuth Kibble Pro | BB-FTR-OAU-025 | Single sign-on, multiple sign-offs. | Enterprise auth has hidden integration and rollout cost. | 2h discovery + 16h build + 4h QA + 2h review + 1h rollout | 25 p-h | Integration work hides in “platform” asks | enterprise ask, security crumbs, integration hair | May require new env variables | Decision memo + integration spike |
| Feature Kibble | Dashboard Variety Box | BB-FTR-DAS-044 | Packed with metrics nobody wanted until the exec invite landed. | Dashboards cost scoping, data, QA, and polish. | 3h scoping + 24h build + 8h data wrangling + 6h QA + 3h polish | 44 p-h | Metrics should justify their maintenance cost | exec curiosity, orphan metrics, CSV dust | Frequently mistaken for strategy | Weekly KPI digest |
| Feature Kibble | Edge-Case Feast | BB-FTR-ECF-021 | Happy path sold separately. | Exceptions multiply implementation effort. | 2h scoping + 8h build + 6h exceptions + 3h QA + 2h review | 21 p-h | Edge cases are where estimates go to molt | optional cases, legal sprinkles, boolean crumbs | Case count triples after demo | Rule table first |
| Bug Biscuits | Flake Nibbles | BB-BUG-FLK-003 | Now with intermittent crunch. | Flaky bugs consume time even before a fix exists. | 30m triage + 1h repro + 1h fix + 30m verify | 3 p-h | Reproduction quality matters | race-condition flakes, stale mocks, timing dust | Usually disappears during screen share | Repro template |
| Bug Biscuits | Regression Rounds | BB-BUG-REG-006 | Baked from yesterday’s confidence. | Regressions cost more than the original defect. | 1h triage + 2h fix + 2h QA + 1h release watch | 6 p-h | Every fix needs guardrails | previous fix residue, test gap crumbs, release steam | Returns after cheerful deploy notes | Guardrail test first |
| Bug Biscuits | Cannot-Repro Chews | BB-BUG-CNR-003 | Mystery flavor, browser-dependent. | Weak bug reports turn diagnosis into archaeology. | 45m intake + 1h logs + 1h retry + 30m follow-up | 3.25 p-h | Better intake reduces wasted cycles | vague screenshots, browser variance, mystery gravy | Diagnosis may exceed symptom size | Structured bug intake |
| Bug Biscuits | Hotfix Sprinkles | BB-BUG-HFX-005 | Add directly to Friday. | Hotfixes compress decision-making and raise risk. | 30m triage + 2h fix + 1h review + 1.5h deploy/check | 5 p-h | Urgency taxes code quality | alert pings, narrowed scope, Friday fumes | Consume before weekend | Feature flag rollback |
| Sprint Chow | Commitment Chow Family Pack | BB-SPR-CMT-006 | Over-portioned promises for growing roadmaps. | Sprint plans fail when commitments outrun capacity. | 2h scope pack + 1h dependency check + 2h tradeoff debate + 1h plan rewrite | 6 p-h | Commitments need capacity math | promises, dependency glitter, slide garnish | Best before priorities change | Single-page sprint brief |
| Sprint Chow | Estimation Nuggets | BB-SPR-EST-010 | Now with objective-looking numbers. | Estimation creates confidence, not certainty. | 90m refinement × 6 + 30m re-baseline | 9.5 p-h | Precision is not predictability | cards, poker faces, optimism powder | Creates false certainty when overfed | Written sizing notes |
| Sprint Chow | Ceremony Sampler Sack | BB-SPR-CER-049 | A balanced blend of planning, updates, reviewing, and regretting. | Scrum ceremonies can multiply cost when they stop serving delivery. | 2h planning × 7 + 15m daily × 7 × 10 + 1.5h review × 7 + 1h retro × 7 | 49 p-h | Meetings are parallel burn | planning oats, daily crumbs, review glaze, retro salt | Not a substitute for delivery | Async status board |
| Sprint Chow | Hardening Week Kibble | BB-SPR-HAR-138 | Crunchy release prep for teams that treat QA like weather. | Late quality work becomes a sprint-consuming event. | (5 days × 3 engineers × 8h) + (2 days × 1 QA × 8h) + 2h freeze huddle | 138 p-h | Quality must move left | late defects, release anxiety, freeze crystals | Usually means quality arrived late | Definition-of-Done tune-up |
| Refactor Jerky | Naming Cleanup Strips | BB-REF-NAM-004 | Lean, chewy, and invisible to stakeholders. | Small clarity refactors reduce future friction. | 1h scan + 2h rename + 1h tests | 4 p-h | Shared language speeds teams up | vague classes, inconsistent nouns, grep smoke | May trigger unrelated opinions | Naming glossary |
| Refactor Jerky | Dependency Detox Twists | BB-REF-DDT-014 | Removes stale packages and reveals hidden trauma. | Dependency maintenance is real product work. | 2h audit + 6h upgrade + 4h fallout + 2h QA | 14 p-h | Forgotten dependencies compound risk | stale packages, CVE dust, API drift | Can summon a changelog storm | Dependency audit cadence |
| Refactor Jerky | Test Harness Jerky | BB-REF-THJ-010 | Dense with future relief. | Building better tests buys down future bug cost. | 2h harness + 6h tests + 2h stabilize | 10 p-h | Automation is an anti-regression asset | manual steps, copy-paste residue, assertion crumbs | Feels slow until next outage | Golden-path smoke tests |
| Refactor Jerky | Architectural Reseal Pack | BB-REF-ARP-028 | No visible features. Strong future chew. | Deep refactors are option purchases for future speed. | 4h design + 16h refactor + 8h regression | 28 p-h | Hidden architecture still shapes throughput | coupling, duplicate logic, hidden seams | Stakeholders may see no visible change | Architectural decision record |
| Incident Snacks | Pager Crunchies | BB-INC-PGR-003 | Best served loud. | Even small incidents destroy planned focus. | (15m ack × 3) + (45m diagnose × 2) + (30m comms × 2) | 3.25 p-h | Interruptions have real operating cost | alerts, adrenaline, half context | Pairs poorly with sleep | Runbook refresh |
| Incident Snacks | Severity-One Stew | BB-INC-SEV-015 | A whole-meal derailment. | Major incidents consume multiple people and displace roadmap work. | (2h incident cell × 4) + (2h recovery × 3) + 1h stakeholder brief | 15 p-h | Incidents tax planned delivery | incident channel foam, rollback stock, customer comms | Consumes the whole sprint | Tabletop drill |
| Incident Snacks | Rollback Bisque | BB-INC-RBK-004 | Rich, reversible, occasionally lumpy. | Rollbacks are cheaper when designed early. | 30m decision + 1h rollback + 2h verify | 3.5 p-h | Safe release design reduces blast radius | release notes, restore scripts, humility | Not all rollbacks are clean | Canary release |
| Incident Snacks | Postmortem Pumpkin Bites | BB-INC-PMB-004 | Gentle on blame, firm on learning. | Retrospective rigor matters after incidents. | 1h timeline + 1h write-up + 1h review + 1h action follow-up | 4 p-h | Learnings need owners and follow-through | timeline puree, action-item seeds, memory fog | Spoils if blame is added | Blameless write-up template |
| Roadmap Rations | Stakeholder Alignment Feast | BB-RDM-ALN-015 | Slow-cooked consensus in a premium tray. | Broad approval chains inflate time cost. | 60m × 12 attendees × 1.25 repetition factor | 15 p-h | Approval sprawl is measurable | opinions, calendars, alignment broth | Frequently repeats itself | Recorded walkthrough + comment window |
| Roadmap Rations | Reprioritization Pellets | BB-RDM-RPR-008 | Same backlog, different weather. | Constant priority changes destroy flow efficiency. | 45m prep + 1h realignment × 6 + 1h board rewrite | 7.75 p-h | Churn has carrying cost | new-ask glaze, stale commitments, roadmap binder | Destroys momentum in large doses | Weekly intake cutoff |
| Roadmap Rations | Committee Product Ownership Platter | BB-RDM-CPO-006 | Five approvers, one backlog, zero final answer. | Product ownership by committee slows decisions. | (30m × 5 approvers) + 2h reconciliation + 1h roadmap polish | 5.5 p-h | Single-threaded ownership matters | five approvers, one backlog, garnish of hesitancy | Never fully sold out | Single-threaded owner |
| Roadmap Rations | Q4 Promise Loaf | BB-RDM-Q4P-007 | Sliced thin for maximum confidence. | Roadmaps are inventory, not output. | 2h planning + 2h roadmap art + 2h dependency guesswork + 1h exec polish | 7 p-h | Announced work is not delivered work | quarterly confidence, dependency glaze, optimism crust | Shelf life ends at implementation | Capacity-first planning |
Launch lessons
| Lesson slug | Title | What it teaches | Format | Read time | Related products |
|---|---|---|---|---|---|
time-is-the-price | Time Is the Price | Why BarkBowl prices in person-hours instead of dollars | micro-lesson + formula cards | 4 min | Tiny Ticket Tender Bits, Ceremony Sampler Sack |
tiny-features-grow-teeth | Tiny Features Grow Teeth | Why “small” requests expand through clarifications, exceptions, and QA | explainer + worked example | 5 min | Tiny Ticket Tender Bits, Edge-Case Feast |
meetings-are-parallel-burn | Meetings Are Parallel Burn | Why attendee count multiplies cost faster than teams notice | explainer + calculator | 5 min | Stakeholder Alignment Feast, Ceremony Sampler Sack |
bugs-charge-interest | Bugs Charge Interest | Why regressions, weak bug reports, and hotfixes cost more than they look | checklist + example | 5 min | Regression Rounds, Cannot-Repro Chews |
refactors-buy-future-speed | Refactors Buy Future Speed | When invisible work pays back and how to explain it | decision guide | 6 min | Dependency Detox Twists, Architectural Reseal Pack |
incidents-steal-planned-work | Incidents Steal Planned Work | How operational interruptions displace roadmap work | explainer + scenario grid | 5 min | Severity-One Stew, Pager Crunchies |
roadmaps-are-inventory-not-output | Roadmaps Are Inventory, Not Output | Why planned work and delivered work are not the same thing | article + checklist | 5 min | Q4 Promise Loaf, Reprioritization Pellets |
dogfooding-rings-and-release-safety | Dogfooding Rings and Release Safety | Why BarkBowl itself should be rolled out in rings with metrics and kill switches | process guide | 6 min | Rollback Bisque, Postmortem Pumpkin Bites |
Field reports
| Slug | Title | Summary | Main lesson |
|---|---|---|---|
we-added-one-tiny-feature-and-lost-a-tuesday | We Added One Tiny Feature and Lost a Tuesday | A seemingly tiny request accreted edge cases, review loops, and polish work until the team lost a full day. | Tiny features are multiplication, not addition |
the-cart-expired-during-refinement-as-designed | The Cart Expired During Refinement, as Designed | A BarkBowl cart timed out before the team could agree, making indecision visible as product behavior. | Time limits can teach priority discipline |
why-story-points-taste-like-chicken | Why Story Points Taste Like Chicken | A playful analysis of why estimation folklore often becomes certainty theater. | Estimates are communication tools, not laws |
we-bought-an-incident-and-shipped-a-postmortem | We Bought an Incident and Shipped a Postmortem | A launch saved by rollback, documentation, and a cleaner incident review than the original release plan. | Recovery quality matters as much as prevention |
the-roadmap-was-full-and-the-sprint-was-hungry | The Roadmap Was Full and the Sprint Was Hungry | A team promised more items than capacity allowed, then compensated with meetings instead of tradeoffs. | Capacity must constrain commitments |
how-a-refactor-paid-back-in-three-releases | How a Refactor Paid Back in Three Releases | A small but disciplined refactor removed dependency and testing drag across several subsequent releases. | Invisible work can have visible payback |
Quiz Lab questions and results
| Question | Diagnostic focus |
|---|---|
| When someone says “tiny change,” what usually happens next? | Scope creep |
| How many people must agree before a simple release moves? | Approval sprawl |
| What is your team’s default response to uncertainty? | Meeting/ceremony bias |
| Which hurts more: the original bug or the bug after the bug? | Regression cost awareness |
| When engineers request refactor time, how is it handled? | Refactor maturity |
| How often does planned work get interrupted by incidents? | Operational volatility |
| What happens after reprioritization? | Roadmap churn |
| If one meeting could be swapped for async, would it? | Async readiness |
| Result archetype | Diagnosis | Suggested lesson path | Suggested products |
|---|---|---|---|
| Feature Kibble Pack | Your team overfeeds “small” requests until they become medium projects. | Time Is the Price → Tiny Features Grow Teeth | Tiny Ticket Tender Bits, Edge-Case Feast |
| Bug Biscuit Kennel | Your team spends more time identifying and re-fixing than preventing. | Bugs Charge Interest | Regression Rounds, Cannot-Repro Chews |
| Sprint Chow Club | Your team is buying process comfort faster than delivery confidence. | Meetings Are Parallel Burn → Roadmaps Are Inventory, Not Output | Ceremony Sampler Sack, Estimation Nuggets |
| Refactor Jerky Syndicate | Your team understands the problem but underfunds preventive engineering. | Refactors Buy Future Speed | Dependency Detox Twists, Architectural Reseal Pack |
| Incident Snack Response Unit | Planned work is being eaten by interrupts and recovery loops. | Incidents Steal Planned Work | Pager Crunchies, Severity-One Stew |
| Roadmap Rations Cooperative | The organization’s planning and approval loop is the biggest time sink. | Roadmaps Are Inventory, Not Output → Dogfooding Rings and Release Safety | Stakeholder Alignment Feast, Q4 Promise Loaf |
Glossary
| Term | Plain-English definition |
|---|---|
| Dogfooding | Using your own product internally so real behavior reveals flaws early |
| Time commerce | A BarkBowl framing where work is priced in time instead of money |
| Person-hour | One hour of one person’s time |
| Person-day | Eight person-hours |
| Sprint share | The percentage of a sprint’s capacity consumed by a set of work |
| TTL | Time to live; how long a cart or record remains valid before expiring |
| Async substitute | A lower-burn alternative that replaces synchronous coordination |
| Scope creep | A request growing after agreement without a matching time adjustment |
| Context-switch tax | Time lost whenever people stop one task to handle another |
| Review drag | Delay and effort added by review hops, comments, and rework |
| Definition of Done | The explicit quality bar for calling work complete |
| Ring rollout | A staged release pattern from small internal cohorts to broader audiences |
| Blameless postmortem | Reviewing an incident to learn, not to punish |
| WIP | Work in progress; active work currently consuming attention |
| Lead time | The time from request to delivered outcome |
Time Cart, formulas, and simulator
Time currency should remain simple and legible. The prescription below follows the present site’s premise and the BarkBowl source material: keep the shelf label easy, expand the formula on detail pages, and make the receipt feel uncomfortably concrete.
| Unit or formula | Definition |
|---|---|
min | One minute of one person’s time |
hr | Sixty minutes |
p-h | Person-hours = minutes ÷ 60 |
p-day | Person-days = person-hours ÷ 8 |
sprint-share % | (person-hours ÷ (team_size × sprint_days × work_hours_per_day)) × 100 |
| Cart subtotal minutes | Σ(product_minutes × quantity) |
| Async savings | sync_total_person_hours - async_total_person_hours |
| Burn band | <5% sprint = snack, 5–15% = meal, 15–30% = crate, >30% = kennel fire |
| Cart TTL | Default 72 hours after first add; visible countdown on cart |
| Receipt record | Frozen snapshot of item formula, quantity, subtotal, timestamp, and lesson links |
The Time Burn Simulator should be a real interactive tool, not a shortcode placeholder. Its behavior should borrow from successful interactive-learning systems: clear inputs, immediate feedback, explanatory output, and a recommended next action.
| Input | Type | Default |
|---|---|---|
| Team size | number | 6 |
| Sprint length in days | number | 10 |
| Work hours per day | number | 8 |
| Meetings per week | number | 8 |
| Average attendees per meeting | number | 6 |
| Interruptions per person per day | number | 4 |
| Review hops per item | number | 2 |
| Scope changes per sprint | number | 3 |
| Incident count per sprint | number | 1 |
| Async replacement rate | percentage | 20% |
| Output | Meaning |
|---|---|
| Weekly or sprint person-hours burned | Core cost number |
| Person-days consumed | Simplified aggregate |
| Sprint-share percentage | Capacity impact |
| Largest burn source | Top culprit category |
| Async savings opportunity | Estimated recoverable time |
| Risk band | Mild / Medium / High / Combustible |
| Recommended product | Satirical mirror of the pattern |
| Recommended lesson | Educational next step |
| Recommended field report | Story-led reinforcement |
Voice, tone, and sample copy
The voice should be deadpan, premium, observant, and systems-focused. The humor should punch at process waste, not at people. That fits the current BarkBowl premise and also protects usability: the more critical the task, the lower the joke density should be.
| Surface | Humor density | Rule |
|---|---|---|
| Hero and aisle banners | 7/10 | Big laugh, fast understanding |
| Product cards | 6/10 | Retail deadpan with clear formula |
| Product detail pages | 5/10 | Joke + translation + plain formula |
| Lessons and glossary | 3/10 | Prioritize memory and clarity |
| Quiz results | 5/10 | Light humor, practical next step |
| Receipts | 4/10 | Wry, not cute |
| Errors, forms, and accessibility text | 1/10 | Mostly straight, mildly on-brand at most |
| Surface | Sample copy |
|---|---|
| Hero | Feed your roadmap. Learn where your time actually goes. BarkBowl is a satirical grocery shelf for features, bugs, refactors, ceremonies, and planning rituals priced in the hours your team will never get back. |
| Product card | Tiny Ticket Tender Bits — “Just one button” in bite-sized denial. Typical order: 9 p-h. Plain English: Small requests expand once acceptance criteria show up. |
| Product detail | Why this costs more than it looks: the request sounds tiny, but clarification, QA, review, and edge cases all eat time. BarkBowl calls that Feature Kibble. Your calendar calls it Thursday. |
| Receipt | No money accepted. You burned 21 p-h, roughly 2.6 p-days, or 4.4% of a six-person two-week sprint. Shipping was instant because the work already lived in your calendar. |
| Quiz result | You’re overfeeding Roadmap Rations. Your biggest burn is not coding speed; it is decision density. Read Roadmaps Are Inventory, Not Output, then try an async substitute before adding more alignment to the bowl. |
| Error message | We couldn’t add that snack right now. Nothing is lost. Try again, or refresh the bowl. If this keeps happening, the product is successfully dogfooding itself a little too hard. |
Engineering specification and launch governance
The engineering build should follow WordPress and web-platform guidance closely. Register custom REST routes on rest_api_init, use explicit namespaced and versioned routes, supply permission_callback for every route, use JSON Schema-backed validation and sanitization, and keep unknown payload properties out of write handlers. Use a narrow-scope host-only session cookie with Secure, HttpOnly, SameSite=Lax, and Path=/; store carts server-side in custom tables; and use transients only for caches because WordPress explicitly notes transient expiration is a maximum time, not a minimum. For telemetry, structure events so the system emits traces, metrics, and logs or log-equivalent analytics signals; for performance, instrument real-user monitoring in addition to lab checks.
Frontend architecture
| Module | Responsibility |
|---|---|
core/http.ts | Fetch wrapper, credentials, nonce header, error normalization |
core/session.ts | Read bootstrap payload, expose session/cart state |
core/events.ts | Lightweight pub/sub for UI modules |
catalog/filters.ts | Archive filters, querystring sync, reset/apply behavior |
catalog/cards.ts | Product card hydration and quick-add behavior |
product/formula.ts | PDP formula expansion, “what it teaches,” async substitute module |
cart/store.ts | Client state mirroring server cart snapshot |
cart/drawer.ts | Cart UI, item updates, TTL UI, subtotal updates |
receipt/view.ts | Checkout receipt formatting, print/share behavior |
quiz/engine.ts | Question flow, scoring, result rendering |
lesson/progress.ts | Micro-lesson progress tracking and next-step CTA |
simulator/formulas.ts | Time Burn Simulator calculations |
telemetry/client.ts | Event batching, sendBeacon/fetch fallback, schema versioning |
a11y/disclosure.ts | Disclosure widget controls |
a11y/tooltip.ts | Tooltip trigger and escape behavior |
a11y/dialog.ts | Modal focus trap and return-focus handling |
Session and persistence model
| Concern | Recommendation |
|---|---|
| Session cookie name | __Host-barkbowl_session |
| Cookie attributes | Secure; HttpOnly; SameSite=Lax; Path=/ |
| Cookie scope | host-only |
| Session persistence | custom table row keyed by cookie token |
| Cart persistence | wp_bb_cart_item rows linked to session id |
| Cart TTL | 72 hours after first item add |
| Quiz attempt persistence | custom table plus anonymous session link |
| Cache strategy | use transients only for catalog/filter cache and pre-render data, not cart authority |
| Time zone for persisted operational timestamps | UTC |
REST routes
| Method | Route | Purpose | Auth/session |
|---|---|---|---|
GET | /wp-json/barkbowl/v1/bootstrap | Return initial config, nonce, session state, flags, token values | public |
GET | /wp-json/barkbowl/v1/products | Product archive with filters/sort/pagination | public |
GET | /wp-json/barkbowl/v1/products/(?P<id>\d+) | Product detail payload | public |
GET | /wp-json/barkbowl/v1/lessons | Lesson archive | public |
GET | /wp-json/barkbowl/v1/lessons/(?P<slug>[a-z0-9-]+) | Lesson detail | public |
GET | /wp-json/barkbowl/v1/cart | Current cart snapshot | session |
POST | /wp-json/barkbowl/v1/cart/items | Add product to cart | session + nonce |
PATCH | /wp-json/barkbowl/v1/cart/items/(?P<key>[A-Za-z0-9_-]+) | Update quantity | session + nonce |
DELETE | /wp-json/barkbowl/v1/cart/items/(?P<key>[A-Za-z0-9_-]+) | Remove item | session + nonce |
POST | /wp-json/barkbowl/v1/checkout | Create time-burn receipt | session + nonce |
POST | /wp-json/barkbowl/v1/quiz/(?P<slug>[a-z0-9-]+)/score | Score quiz and return archetype | session + nonce |
POST | /wp-json/barkbowl/v1/telemetry | Record product/quiz/cart/simulator events | session |
GET | /wp-json/barkbowl/v1/admin/dashboard | Dogfooding metrics dashboard | authenticated capability |
Because WordPress explicitly uses routes, endpoints, route namespaces, and controller classes in its REST model, the implementation should use namespaced controller classes rather than anonymous endpoint callbacks scattered across the plugin.
Sample JSON payloads
The REST layer should use stable schemas and reject unknown fields where appropriate. WordPress’s REST API schema guidance recommends JSON Schema-backed validation, including explicit properties, required fields, and the ability to reject additional properties.
Product payload
{
"id": 101,
"slug": "tiny-ticket-tender-bits",
"title": "Tiny Ticket Tender Bits",
"sku": "BB-FTR-TTB-009",
"category": "feature-kibble",
"tagline": "“Just one button” in bite-sized denial.",
"translation": "Small requests expand once acceptance criteria appear.",
"formula": "1h discovery + 5h build + 2h QA + 1h review",
"typical_time_price_minutes": 540,
"typical_time_price_label": "9 p-h",
"what_it_teaches": "Tiny features are rarely tiny",
"ingredients": [
"single-sentence request",
"hidden acceptance criteria",
"one reviewer"
],
"warning": "Expands on contact with stakeholders.",
"async_substitute": "Clarifying Note Cup",
"related_lesson_slug": "tiny-features-grow-teeth"
}
Cart add request
{
"product_id": 101,
"quantity": 1,
"context": {
"team_size": 6,
"sprint_days": 10,
"work_hours_per_day": 8
}
}
Checkout receipt response
{
"receipt_id": "bb_rcpt_20260611_8GQ2ZX",
"created_at_utc": "2026-06-11T16:48:22Z",
"session_id": "bb_sess_a8d3f4c29f",
"items": [
{
"product_id": 101,
"sku": "BB-FTR-TTB-009",
"title": "Tiny Ticket Tender Bits",
"quantity": 1,
"subtotal_minutes": 540,
"subtotal_label": "9 p-h"
}
],
"totals": {
"minutes": 540,
"person_hours": 9,
"person_days": 1.125,
"sprint_share_percent": 1.88,
"burn_band": "snack"
},
"primary_lesson_slug": "tiny-features-grow-teeth",
"disclaimer": "No money accepted. This receipt records time burn, not payment."
}
Telemetry event
{
"event_name": "bb_cart_item_added",
"event_version": 1,
"occurred_at_utc": "2026-06-11T16:49:01Z",
"session_id": "bb_sess_a8d3f4c29f",
"route_name": "product_detail",
"content_type": "product",
"content_id": 101,
"sku": "BB-FTR-TTB-009",
"value_minutes": 540,
"ui_surface": "pdp_primary_cta",
"success": true,
"flag_state": {
"new_cart_drawer": true,
"quiz_inline_recommendations": false
}
}
Telemetry schema and KPIs
| Schema field | Purpose |
|---|---|
event_name | Stable event id |
event_version | Breaking-change control |
occurred_at_utc | Ordered event time |
session_id | Anonymous session correlation |
user_id | Optional authenticated correlation |
route_name | Route grouping |
content_type | product / lesson / quiz / field_report / cart |
content_id or slug | Entity association |
ui_surface | exact interaction point |
value_minutes | time value attached to event |
duration_ms | latency or time-to-complete |
success | binary outcome |
error_code | normalised failure reason |
flag_state | active experiment/rollout state |
device_class | mobile / tablet / desktop |
| Event | Trigger | KPI it supports |
|---|---|---|
bb_page_view | route render | route demand, content reach |
bb_product_card_viewed | product card observed | catalog engagement |
bb_product_detail_viewed | PDP render | PDP CTR |
bb_formula_expanded | explanation disclosure opened | educational engagement |
bb_async_substitute_clicked | async substitute clicked | educational-action rate |
bb_cart_item_added | add to cart | build-a-bowl progression |
bb_cart_item_removed | remove from cart | cart friction analysis |
bb_cart_viewed | cart page opened | cart progression |
bb_cart_expired | TTL expiration | TTL expiry rate |
bb_checkout_started | checkout CTA | checkout start rate |
bb_receipt_created | receipt success | bowl completion rate |
bb_quiz_started | quiz entry | quiz start rate |
bb_quiz_completed | quiz result generated | quiz completion rate |
bb_lesson_started | lesson page engaged beyond threshold | lesson start rate |
bb_lesson_completed | lesson finish CTA/history mark | lesson completion rate |
bb_field_report_opened | field report detail viewed | story engagement |
bb_simulator_run | simulator output computed | tool usage rate |
bb_simulator_apply_recommendation | output CTA clicked | educational conversion |
bb_frontend_error | client runtime failure | JS reliability |
bb_api_error | failed request | API reliability |
| KPI | Definition |
|---|---|
| Learning engagement rate | Sessions with at least one meaningful educational action (formula_expanded, lesson_completed, quiz_completed, async_substitute_clicked, or field_report_opened) |
| Build-a-Bowl completion rate | Sessions reaching bb_receipt_created ÷ bb_cart_viewed |
| Quiz completion rate | bb_quiz_completed ÷ bb_quiz_started |
| Lesson completion rate | bb_lesson_completed ÷ bb_lesson_started |
| Async substitute click rate | bb_async_substitute_clicked ÷ bb_product_detail_viewed |
| Cart TTL expiry rate | bb_cart_expired ÷ sessions_with_items |
| Route error rate | 4xx/5xx or frontend_error ÷ page views |
| 75th percentile CWV by route | route-level LCP/INP/CLS |
| Dogfooding ring adoption | active internal users by rollout ring |
| Receipt-to-return rate | returning sessions after a completed receipt |
Accessibility checklist and ARIA patterns
WCAG 2.2 guidance requires meaningful page titles, visible focus, labels or instructions for inputs, keyboard operability, and predictable navigation. The WAI APG patterns further define how disclosures, tooltips, and modal dialogs should behave.
| Area | Test |
|---|---|
| Titles | Every page has a descriptive, unique <title> aligned with its visible H1 |
| Keyboard | Every interactive control is reachable and operable by keyboard |
| Focus | Every focusable item has a visible focus indicator |
| Skip link | Skip link lands on main content on every template |
| Labels | Filters, simulator inputs, and quiz controls all have visible labels |
| Instructions | Complex inputs include concise visible instructions |
| Error feedback | Form and cart errors appear near source and are not color-only |
| Motion | Non-essential motion is reduced or disabled when reduced-motion is enabled |
| Dialogs | Cart/receipt modals trap focus, close on Escape, and return focus to trigger |
| Tooltips | Tooltip content is reachable by focus, dismissible, and non-essential |
| Disclosure | Formula explainers announce expanded/collapsed state |
| Screen reader | Product cards, receipt rows, and quiz results read in sensible order |
| Contrast | Text and UI contrast meet AA thresholds |
| Reflow | Layout works at 320px wide without essential loss |
| Live regions | Cart subtotal changes are announced politely, not aggressively |
Tooltip pattern
<button
type="button"
aria-describedby="tip-time-price"
>
What is this price?
</button>
<div id="tip-time-price" role="tooltip" hidden>
BarkBowl prices snacks in team time, not money.
</div>
Disclosure pattern
<button
type="button"
aria-expanded="false"
aria-controls="formula-panel-101"
>
Show formula
</button>
<div id="formula-panel-101" hidden>
1h discovery + 5h build + 2h QA + 1h review
</div>
Dialog pattern
<div
role="dialog"
aria-modal="true"
aria-labelledby="cart-title"
aria-describedby="cart-summary"
hidden
>
<h2 id="cart-title">Time Cart</h2>
<p id="cart-summary">Review your selected snacks and total burn.</p>
<button type="button">Close</button>
</div>
SEO and performance
Google’s Search guidance emphasizes useful, compelling content, descriptive title links, a clear main heading, sitemap submission, canonical URLs in sitemaps, and structured data that matches visible on-page content. BarkBowl’s current placeholder titles and broken routes are therefore both discoverability and trust problems.
| Page | SEO title | Meta description |
|---|---|---|
| Home | BarkBowl \ | Time-Commerce Dogfooding for Software Teams |
| Build a Bowl | Build a Bowl \ | BarkBowl |
| Time Cart | Time Cart \ | BarkBowl |
| Learn | Learn \ | BarkBowl |
| Quiz Lab | Quiz Lab \ | BarkBowl |
| Field Reports | Field Reports \ | BarkBowl |
| Dogfooding Program | Dogfooding Program \ | BarkBowl |
Recommended schema is conservative: WebSite, Organization, BreadcrumbList, and where appropriate Article for field reports and lessons, only when the structured data reflects visible content. Use JSON-LD because Google recommends it when the setup allows it.
| Metric | Target |
|---|---|
| LCP | ≤ 2.5s at 75th percentile |
| INP | ≤ 200ms at 75th percentile |
| CLS | ≤ 0.1 at 75th percentile |
| JS on first load | ≤ 170KB gzipped |
| CSS on first load | ≤ 90KB gzipped |
| Largest hero image | ≤ 180KB optimized |
| Time-to-interactive-critical surfaces | cart and filter controls responsive within CWV budget |
QA, launch checklist, and acceptance criteria
| QA area | Launch check |
|---|---|
| Routes | No visible nav/footer links 404 |
| Content | 24 products, 8 lessons, 6 field reports, quiz, glossary seeded and rendered |
| Cart | Add, remove, recalc, TTL, and checkout receipt all work |
| Telemetry | Key events flowing to vendor or logs with schema version |
| Accessibility | Keyboard, focus, labels, dialogs, disclosure, reduced motion pass |
| SEO | Titles, metas, canonicals, sitemap, robots, OG tags live |
| Performance | Core Web Vitals budgets passing in lab; RUM shipping |
| Security | REST routes on rest_api_init, permission callbacks enforced, nonces/capabilities correct |
| Session | Cookie attributes correct; cart persists as designed |
| Admin | Seeder, settings page, dashboard, and content editing flows work |
| Rollout | Feature flags and ring configuration tested |
| Copy | Humor density matches rules; critical UX text is clear |
| 404/search | Helpful recovery and internal path back to content |
| Acceptance area | Acceptance criteria |
|---|---|
| Trust | The site no longer exposes placeholder titles, raw shortcodes, empty primary aisles, or broken core routes |
| Humor | All launch surfaces read as confident premium parody, not fragmented prototype copy |
| Education | Every product includes plain-English translation, formula, what-it-teaches, lesson link, and async substitute |
| Product mechanics | A visitor can browse, add products, view totals, finish a receipt, and understand the lesson without confusion |
| WordPress architecture | Theme owns presentation; plugin owns content types, operational logic, API, session/cart, telemetry, and seeders |
| Accessibility | Core journeys are fully keyboard-usable and screen-reader sensible |
| Discoverability | Titles, metas, sitemaps, structured data, and internal links are in place |
| Dogfooding | Internal rollout rings and core instrumentation are ready before broad release |
Paste-ready master prompt
The prompt below is designed to be handed directly to a multidisciplinary engineering, design, and content agent. It is intentionally implementation-forward and assumes no special hosting or analytics constraints beyond “modern supported WordPress environment.” It is derived from the current public site audit, the BarkBowl architecture documents, WordPress developer guidance, WCAG 2.2/WAI APG guidance, Google Search documentation, and current interactive-learning product patterns.
You are the implementation lead for a full coordinated redesign of BarkBowl, a WordPress-based satirical time-commerce product for software teams. Your job is to implement the redesign in one sweep across engineering, design, UX writing, content architecture, seeded data, analytics, accessibility, and launch QA.
Do not ask clarifying questions unless something is genuinely impossible. Make reasonable assumptions. Preserve the core BarkBowl premise: this is NOT a real store and NOT a conventional ecommerce site. It is a fake premium dogfood brand for software-team waste. The currency is time, not money. The site must become much funnier, much more educational, and much more trustworthy than the current public implementation.
NON-NEGOTIABLE POSITIONING
BarkBowl is:
- a premium grocery parody for software teams
- a time-commerce product where features, bugs, meetings, refactors, incidents, and roadmap rituals are priced in person-hours/person-days/sprint share
- educational: every joke must have an immediate plain-English translation and a practical lesson
- internally dogfooded: the BarkBowl cart, quiz, simulator, and telemetry must be treated as product features worth measuring
BarkBowl is NOT:
- a WooCommerce repaint
- a real payments funnel
- a pet nutrition education site
- a “clever brochure” with fake buttons and dead ends
CURRENT PROBLEMS TO FIX IN THIS SWEEP
Fix all of these as core acceptance criteria:
- critical navigation routes currently 404
- browser titles are weak/generic
- products archive is empty
- homepage exposes raw shortcode-like scaffolding
- the joke currently outruns explanation
- the site is not educational enough
- the cart premise is under-implemented
- the current public experience feels like a prototype, not a product
ARCHITECTURE DECISION
Build this with:
- one custom WordPress theme: barkbowl-theme
- one custom WordPress plugin: barkbowl-core
Do NOT build on WooCommerce.
Theme responsibilities:
- theme.json
- design tokens
- templates and template parts
- block patterns
- nav/footer/search/404
- page layout and editorial styling
- print styling for receipt pages
- non-critical presentational JS only
Plugin responsibilities:
- CPTs, taxonomies, and custom fields
- content seeders
- REST API controllers
- session management
- Time Cart logic
- checkout receipt creation
- quiz engine and result scoring
- Time Burn Simulator formulas
- telemetry endpoint and event schema
- feature flags / rollout ring support
- admin settings and dashboard
CUSTOM CONTENT MODEL
Create these custom post types:
- bb_product
- bb_lesson
- bb_field_report
- bb_quiz
- bb_glossary_term
Create these taxonomies:
- bb_product_category
- bb_work_stage
- bb_risk_level
- bb_team_appetite
- bb_teach_topic
Key bb_product fields:
- title
- slug
- sku
- tagline
- translation
- formula_display
- typical_time_price_minutes
- typical_time_price_label
- what_it_teaches
- ingredients[]
- warning
- async_substitute
- related_lesson_slug
- display_order
- hero_image_id
Key bb_lesson fields:
- title
- slug
- teaser
- summary
- learning_objective
- read_time_minutes
- sections[]
- checklist[]
- formula_callout
- related_products[]
- related_reports[]
- next_lesson_slug
Key bb_field_report fields:
- title
- slug
- summary
- situation
- what_happened
- what_it_taught
- related_lesson_slug
- related_products[]
- pull_quote
Key bb_quiz fields:
- title
- slug
- intro
- questions_json
- scoring_json
- result_archetypes_json
- completion_cta
Key bb_glossary_term fields:
- term
- slug
- short_definition
- long_definition
- plain_english_note
- related_terms[]
- related_lessons[]
Create custom runtime tables for:
- sessions
- cart items
- receipts
- telemetry events
- quiz attempts
- feature-flag assignments or overrides if needed
ROUTES TO BUILD
Top-level routes:
- /
- /build-a-bowl/
- /products/
- /product-category/{term}/
- /snack/{slug}/
- /time-cart/
- /how-it-works/
- /learn/
- /lesson/{slug}/
- /quiz-lab/
- /quiz-lab/team-overfeeding-checkup/
- /field-reports/
- /field-report/{slug}/
- /dogfooding-program/
- /glossary/
- /about/
- /privacy/
- /accessibility/
- /search/
- /404/
NAVIGATION MODEL
Primary nav:
- Build a Bowl
- Learn
- Quiz Lab
- Time Cart
- Field Reports
- Dogfooding Program
- About
Footer nav:
- Privacy
- Accessibility
- Glossary
- Search
- Sitemap
VOICE AND TONE RULES
Voice:
- deadpan
- premium retail serious
- observant
- systems-focused
- never smug
- never mean to individuals
- jokes target process waste, ambiguity, ritual inflation, delivery theater, approval sprawl, and meeting gravity
Humor density:
- hero and banners: 7/10
- product cards: 6/10
- product detail pages: 5/10
- lessons and glossary: 3/10
- quiz results: 5/10
- receipts: 4/10
- errors/forms/accessibility/legal text: 1/10
Core writing pattern:
1. joke line
2. plain-English translation
3. time formula
4. lesson link
5. async substitute
VISUAL SYSTEM
Create a design system with this feel:
- premium dogfood packaging + delivery dashboard
- warm cream background, dark ink text, brass/golden aisle accents, strong category-coded support colors
- display serif + neutral sans body + monospace for formulas/receipts
- rounded cards, shelf labels, barcode-style details, “no money accepted” stamp treatment
- subtle motion only
- reduced-motion support must disable non-essential motion
Use these breakpoints:
- xs 0–599
- sm 600–899
- md 900–1199
- lg 1200–1439
- xl 1440+
ASSET LIST TO PRODUCE
- primary wordmark logo
- compact icon/logo
- 6 aisle icons
- 24 product illustrations
- 8 lesson icons
- 6 field report thumbnails
- 6 quiz result badges
- receipt stamps
- social OG images
- simulator diagram
TIME CURRENCY AND FORMULAS
The site’s unit system must be:
- min
- hr
- p-h
- p-day
- sprint-share %
Formulas:
- person_hours = minutes / 60
- person_days = person_hours / 8
- sprint_share_percent = person_hours / (team_size * sprint_days * work_hours_per_day) * 100
- cart_subtotal_minutes = sum(item_minutes * quantity)
- async_savings = sync_total_person_hours - async_total_person_hours
Burn bands:
- under 5% sprint = snack
- 5–15% = meal
- 15–30% = crate
- above 30% = kennel fire
SESSION AND CART RULES
Use a host-only session cookie:
- __Host-barkbowl_session
- Secure
- HttpOnly
- SameSite=Lax
- Path=/
Store cart state server-side.
Cart TTL: 72 hours after first add.
Show countdown only on cart and receipt-adjacent surfaces, not everywhere.
Do not use transients as the source of truth for cart authority.
Use transients only for cacheable catalog/bootstrap data.
REST API
Implement versioned routes under /wp-json/barkbowl/v1/
Required endpoints:
- GET /bootstrap
- GET /products
- GET /products/{id}
- GET /lessons
- GET /lessons/{slug}
- GET /cart
- POST /cart/items
- PATCH /cart/items/{key}
- DELETE /cart/items/{key}
- POST /checkout
- POST /quiz/{slug}/score
- POST /telemetry
- GET /admin/dashboard
Implementation rules:
- register routes on rest_api_init
- every route has explicit permission_callback
- use controller classes
- validate and sanitize request bodies with schema-backed rules
- reject unknown write properties where practical
- use UTC for operational timestamps
FRONTEND TYPESCRIPT MODULES
Create a clean TS module structure:
- core/http.ts
- core/session.ts
- core/events.ts
- catalog/filters.ts
- catalog/cards.ts
- product/formula.ts
- cart/store.ts
- cart/drawer.ts
- receipt/view.ts
- lesson/progress.ts
- quiz/engine.ts
- simulator/formulas.ts
- telemetry/client.ts
- a11y/disclosure.ts
- a11y/tooltip.ts
- a11y/dialog.ts
Use predictable state boundaries. Do not smear business logic into templates.
SEEDED PRODUCT CATALOG
Seed exactly these 24 products:
Feature Kibble
1. Tiny Ticket Tender Bits | BB-FTR-TTB-009 | “Just one button” in bite-sized denial. | Small requests expand once acceptance criteria appear. | 1h discovery + 5h build + 2h QA + 1h review | 9 p-h | teaches tiny features are rarely tiny | ingredients: single-sentence request, hidden acceptance criteria, one reviewer | warning: expands on contact with stakeholders | async substitute: Clarifying Note Cup
2. OAuth Kibble Pro | BB-FTR-OAU-025 | Single sign-on, multiple sign-offs. | Enterprise auth has hidden integration and rollout cost. | 2h discovery + 16h build + 4h QA + 2h review + 1h rollout | 25 p-h | teaches integration work hides in platform asks | ingredients: enterprise ask, security crumbs, integration hair | warning: may require new env variables | async substitute: Decision memo + integration spike
3. Dashboard Variety Box | BB-FTR-DAS-044 | Packed with metrics nobody wanted until the exec invite landed. | Dashboards cost scoping, data, QA, and polish. | 3h scoping + 24h build + 8h data wrangling + 6h QA + 3h polish | 44 p-h | teaches metrics should justify maintenance cost | ingredients: exec curiosity, orphan metrics, CSV dust | warning: frequently mistaken for strategy | async substitute: Weekly KPI digest
4. Edge-Case Feast | BB-FTR-ECF-021 | Happy path sold separately. | Exceptions multiply implementation effort. | 2h scoping + 8h build + 6h exceptions + 3h QA + 2h review | 21 p-h | teaches edge cases are where estimates go to molt | ingredients: optional cases, legal sprinkles, boolean crumbs | warning: case count triples after demo | async substitute: Rule table first
Bug Biscuits
5. Flake Nibbles | BB-BUG-FLK-003 | Now with intermittent crunch. | Flaky bugs consume time even before a fix exists. | 30m triage + 1h repro + 1h fix + 30m verify | 3 p-h | teaches reproduction quality matters | ingredients: race-condition flakes, stale mocks, timing dust | warning: usually disappears during screen share | async substitute: Repro template
6. Regression Rounds | BB-BUG-REG-006 | Baked from yesterday’s confidence. | Regressions cost more than the original defect. | 1h triage + 2h fix + 2h QA + 1h release watch | 6 p-h | teaches every fix needs guardrails | ingredients: previous fix residue, test gap crumbs, release steam | warning: returns after cheerful deploy notes | async substitute: Guardrail test first
7. Cannot-Repro Chews | BB-BUG-CNR-003 | Mystery flavor, browser-dependent. | Weak bug reports turn diagnosis into archaeology. | 45m intake + 1h logs + 1h retry + 30m follow-up | 3.25 p-h | teaches better intake reduces wasted cycles | ingredients: vague screenshots, browser variance, mystery gravy | warning: diagnosis may exceed symptom size | async substitute: Structured bug intake
8. Hotfix Sprinkles | BB-BUG-HFX-005 | Add directly to Friday. | Hotfixes compress decision-making and raise risk. | 30m triage + 2h fix + 1h review + 1.5h deploy/check | 5 p-h | teaches urgency taxes code quality | ingredients: alert pings, narrowed scope, Friday fumes | warning: consume before weekend | async substitute: Feature flag rollback
Sprint Chow
9. Commitment Chow Family Pack | BB-SPR-CMT-006 | Over-portioned promises for growing roadmaps. | Sprint plans fail when commitments outrun capacity. | 2h scope pack + 1h dependency check + 2h tradeoff debate + 1h plan rewrite | 6 p-h | teaches commitments need capacity math | ingredients: promises, dependency glitter, slide garnish | warning: best before priorities change | async substitute: Single-page sprint brief
10. Estimation Nuggets | BB-SPR-EST-010 | Now with objective-looking numbers. | Estimation creates confidence, not certainty. | 90m refinement × 6 + 30m re-baseline | 9.5 p-h | teaches precision is not predictability | ingredients: cards, poker faces, optimism powder | warning: creates false certainty when overfed | async substitute: Written sizing notes
11. Ceremony Sampler Sack | BB-SPR-CER-049 | A balanced blend of planning, updates, reviewing, and regretting. | Scrum ceremonies can multiply cost when they stop serving delivery. | 2h planning × 7 + 15m daily × 7 × 10 + 1.5h review × 7 + 1h retro × 7 | 49 p-h | teaches meetings are parallel burn | ingredients: planning oats, daily crumbs, review glaze, retro salt | warning: not a substitute for delivery | async substitute: Async status board
12. Hardening Week Kibble | BB-SPR-HAR-138 | Crunchy release prep for teams that treat QA like weather. | Late quality work becomes a sprint-consuming event. | (5 days × 3 engineers × 8h) + (2 days × 1 QA × 8h) + 2h freeze huddle | 138 p-h | teaches quality must move left | ingredients: late defects, release anxiety, freeze crystals | warning: usually means quality arrived late | async substitute: Definition-of-Done tune-up
Refactor Jerky
13. Naming Cleanup Strips | BB-REF-NAM-004 | Lean, chewy, and invisible to stakeholders. | Small clarity refactors reduce future friction. | 1h scan + 2h rename + 1h tests | 4 p-h | teaches shared language speeds teams up | ingredients: vague classes, inconsistent nouns, grep smoke | warning: may trigger unrelated opinions | async substitute: Naming glossary
14. Dependency Detox Twists | BB-REF-DDT-014 | Removes stale packages and reveals hidden trauma. | Dependency maintenance is real product work. | 2h audit + 6h upgrade + 4h fallout + 2h QA | 14 p-h | teaches forgotten dependencies compound risk | ingredients: stale packages, CVE dust, API drift | warning: can summon a changelog storm | async substitute: Dependency audit cadence
15. Test Harness Jerky | BB-REF-THJ-010 | Dense with future relief. | Building better tests buys down future bug cost. | 2h harness + 6h tests + 2h stabilize | 10 p-h | teaches automation is an anti-regression asset | ingredients: manual steps, copy-paste residue, assertion crumbs | warning: feels slow until next outage | async substitute: Golden-path smoke tests
16. Architectural Reseal Pack | BB-REF-ARP-028 | No visible features. Strong future chew. | Deep refactors are option purchases for future speed. | 4h design + 16h refactor + 8h regression | 28 p-h | teaches hidden architecture still shapes throughput | ingredients: coupling, duplicate logic, hidden seams | warning: stakeholders may see no visible change | async substitute: Architectural decision record
Incident Snacks
17. Pager Crunchies | BB-INC-PGR-003 | Best served loud. | Even small incidents destroy planned focus. | (15m ack × 3) + (45m diagnose × 2) + (30m comms × 2) | 3.25 p-h | teaches interruptions have real operating cost | ingredients: alerts, adrenaline, half context | warning: pairs poorly with sleep | async substitute: Runbook refresh
18. Severity-One Stew | BB-INC-SEV-015 | A whole-meal derailment. | Major incidents consume multiple people and displace roadmap work. | (2h incident cell × 4) + (2h recovery × 3) + 1h stakeholder brief | 15 p-h | teaches incidents tax planned delivery | ingredients: incident channel foam, rollback stock, customer comms | warning: consumes the whole sprint | async substitute: Tabletop drill
19. Rollback Bisque | BB-INC-RBK-004 | Rich, reversible, occasionally lumpy. | Rollbacks are cheaper when designed early. | 30m decision + 1h rollback + 2h verify | 3.5 p-h | teaches safe release design reduces blast radius | ingredients: release notes, restore scripts, humility | warning: not all rollbacks are clean | async substitute: Canary release
20. Postmortem Pumpkin Bites | BB-INC-PMB-004 | Gentle on blame, firm on learning. | Retrospective rigor matters after incidents. | 1h timeline + 1h write-up + 1h review + 1h action follow-up | 4 p-h | teaches learnings need owners and follow-through | ingredients: timeline puree, action-item seeds, memory fog | warning: spoils if blame is added | async substitute: Blameless write-up template
Roadmap Rations
21. Stakeholder Alignment Feast | BB-RDM-ALN-015 | Slow-cooked consensus in a premium tray. | Broad approval chains inflate time cost. | 60m × 12 attendees × 1.25 repetition factor | 15 p-h | teaches approval sprawl is measurable | ingredients: opinions, calendars, alignment broth | warning: frequently repeats itself | async substitute: Recorded walkthrough + comment window
22. Reprioritization Pellets | BB-RDM-RPR-008 | Same backlog, different weather. | Constant priority changes destroy flow efficiency. | 45m prep + 1h realignment × 6 + 1h board rewrite | 7.75 p-h | teaches churn has carrying cost | ingredients: new-ask glaze, stale commitments, roadmap binder | warning: destroys momentum in large doses | async substitute: Weekly intake cutoff
23. Committee Product Ownership Platter | BB-RDM-CPO-006 | Five approvers, one backlog, zero final answer. | Product ownership by committee slows decisions. | (30m × 5 approvers) + 2h reconciliation + 1h roadmap polish | 5.5 p-h | teaches single-threaded ownership matters | ingredients: five approvers, one backlog, garnish of hesitancy | warning: never fully sold out | async substitute: Single-threaded owner
24. Q4 Promise Loaf | BB-RDM-Q4P-007 | Sliced thin for maximum confidence. | Roadmaps are inventory, not output. | 2h planning + 2h roadmap art + 2h dependency guesswork + 1h exec polish | 7 p-h | teaches announced work is not delivered work | ingredients: quarterly confidence, dependency glaze, optimism crust | warning: shelf life ends at implementation | async substitute: Capacity-first planning
LAUNCH LESSONS
Seed these 8 lessons:
- time-is-the-price
- tiny-features-grow-teeth
- meetings-are-parallel-burn
- bugs-charge-interest
- refactors-buy-future-speed
- incidents-steal-planned-work
- roadmaps-are-inventory-not-output
- dogfooding-rings-and-release-safety
Each lesson must include:
- joke line
- plain summary
- one formula or worked example
- one checklist
- related products
- related field report
- next lesson CTA
FIELD REPORTS
Seed these 6 field reports:
- we-added-one-tiny-feature-and-lost-a-tuesday
- the-cart-expired-during-refinement-as-designed
- why-story-points-taste-like-chicken
- we-bought-an-incident-and-shipped-a-postmortem
- the-roadmap-was-full-and-the-sprint-was-hungry
- how-a-refactor-paid-back-in-three-releases
QUIZ LAB
Create flagship quiz:
- slug: team-overfeeding-checkup
- title: What Is Your Team Overfeeding?
- 8 questions focused on scope creep, approval count, meeting bias, bug quality, refactor maturity, incident interruption, roadmap churn, and async readiness
- return one of 6 result archetypes:
- Feature Kibble Pack
- Bug Biscuit Kennel
- Sprint Chow Club
- Refactor Jerky Syndicate
- Incident Snack Response Unit
- Roadmap Rations Cooperative
Every result page must include:
- diagnosis headline
- short explanation
- two recommended products
- one linked lesson
- one linked field report
- one async substitute recommendation
GLOSSARY
Seed these terms:
- dogfooding
- time commerce
- person-hour
- person-day
- sprint share
- TTL
- async substitute
- scope creep
- context-switch tax
- review drag
- definition of done
- ring rollout
- blameless postmortem
- WIP
- lead time
TIME BURN SIMULATOR
Build a real simulator with inputs:
- team size
- sprint length in days
- work hours per day
- meetings per week
- average attendees
- interruptions per person per day
- review hops per item
- scope changes per sprint
- incident count per sprint
- async replacement rate
Outputs:
- person-hours burned
- person-days
- sprint-share %
- largest burn source
- async savings opportunity
- burn band
- recommended product
- recommended lesson
- recommended field report
TELEMETRY
Emit at least these events:
- bb_page_view
- bb_product_card_viewed
- bb_product_detail_viewed
- bb_formula_expanded
- bb_async_substitute_clicked
- bb_cart_item_added
- bb_cart_item_removed
- bb_cart_viewed
- bb_cart_expired
- bb_checkout_started
- bb_receipt_created
- bb_quiz_started
- bb_quiz_completed
- bb_lesson_started
- bb_lesson_completed
- bb_field_report_opened
- bb_simulator_run
- bb_simulator_apply_recommendation
- bb_frontend_error
- bb_api_error
Telemetry schema fields:
- event_name
- event_version
- occurred_at_utc
- session_id
- route_name
- content_type
- content_id or slug
- ui_surface
- value_minutes
- duration_ms
- success
- error_code
- flag_state
- device_class
KPIs:
- learning engagement rate
- build-a-bowl completion rate
- quiz completion rate
- lesson completion rate
- async substitute click rate
- cart TTL expiry rate
- route error rate
- 75th percentile route-level CWV
- dogfooding ring adoption
- receipt-to-return rate
ACCESSIBILITY REQUIREMENTS
Target WCAG 2.2 AA.
Must support:
- descriptive page titles
- visible focus indicators
- keyboard access for all critical interactions
- visible labels and instructions
- skip link on all templates
- non-color-only errors
- disclosure aria-expanded/aria-controls
- tooltip aria-describedby/role=tooltip
- dialog role=dialog aria-modal=true return focus to trigger
- reduced-motion support for non-essential animation
- sensible screen-reader order on cards, cart, quiz, receipt
SEO REQUIREMENTS
Implement:
- descriptive unique titles
- aligned visible H1s
- useful meta descriptions
- crawlable internal links
- sitemap.xml
- robots.txt sitemap reference
- canonicals
- OG/Twitter metadata
- JSON-LD only for visible content
- Organization, WebSite, BreadcrumbList, Article where appropriate
PERFORMANCE REQUIREMENTS
Build toward:
- LCP <= 2.5s at 75th percentile
- INP <= 200ms at 75th percentile
- CLS <= 0.1 at 75th percentile
- first-load JS <= 170KB gzipped
- first-load CSS <= 90KB gzipped
- optimized images and lazy loading
- real-user monitoring for key routes
SAMPLE COPY TO MATCH
Hero:
“Feed your roadmap. Learn where your time actually goes.”
“BarkBowl is a satirical grocery shelf for features, bugs, refactors, ceremonies, and planning rituals priced in the hours your team will never get back.”
Product card:
“Tiny Ticket Tender Bits — ‘Just one button’ in bite-sized denial.”
“Typical order: 9 p-h.”
“Plain English: Small requests expand once acceptance criteria show up.”
Receipt:
“No money accepted.”
“You burned 21 p-h, roughly 2.6 p-days, or 4.4% of a six-person two-week sprint.”
“Shipping was instant because the work already lived in your calendar.”
Error:
“We couldn’t add that snack right now. Nothing is lost. Try again, or refresh the bowl.”
DOGFOODING PROGRAM PAGE
Explain ring rollout:
- Ring 0: Builder Pack
- Ring 1: Friendly Maintainers
- Ring 2: Cross-Functional Kennel
- Ring 3: Public Yard
For each ring show:
- audience
- success criteria
- metrics required to advance
- rollback trigger
QA AND ACCEPTANCE
Do not mark complete until all are true:
- all nav/footer routes resolve
- all seeded content renders
- cart add/remove/receipt works
- quiz returns correct archetypes
- simulator produces visible educational outputs
- titles/metas/schema/sitemap/robots exist
- keyboard and focus pass on all core paths
- telemetry fires for all core events
- feature flags/rings are wired and testable
- no placeholder shortcodes or staging copy remain
- the site feels like a premium finished product, not a half-seeded prototype
- every major joke is paired with an immediate educational explanation
FINAL DELIVERABLE EXPECTATION
Produce:
- the finished theme and plugin architecture
- seeded content importers
- templates, patterns, and design tokens
- TypeScript modules
- REST controllers
- accessibility-compliant UI behaviors
- telemetry wiring
- launch-ready content across all routes
- QA checklist and acceptance evidence