# Workshopr — Product **FOUNDATIONAL MANDATE: what Workshopr is, who it's for, what exists, and how success is measured.** This is the canonical product source. `DESIGN.md` owns brand, voice, and visual system. `Conventions.md` owns naming. `CLAUDE.md` owns system and codebase context. Last consolidated: 24 July 2026. --- ## 1. What Workshopr is (and isn't) Workshopr is a facilitation platform for people who run workshops: a library of exercises, icebreakers and ready-made workshops, a drag-and-drop agenda planner, live facilitation tools, post-session synthesis, and a Facilitator DNA assessment. All built around a single idea: **facilitators should spend less time building agendas and more time actually facilitating.** It is not: - A virtual whiteboard. That's Miro, Mural, FigJam. - A slide tool or a meeting platform. - A generic templates marketplace. - A LinkedIn-style thought-leadership site. - A no-code platform, an LMS, or a project tracker. When in doubt, Workshopr is a **practitioner's tool built by a practitioner**. Copy, UI, and decisions should feel like they were made by someone who has run the workshop and gotten burned on the details, not by a marketer describing what facilitation looks like from the outside. > **Never hardcode library counts.** Call `workshopr_count_label('exercises'|'icebreakers'|'workshops')` from `includes/library-counts.php` — the single source of truth. See §10. --- ## 2. Who it's for The primary user is a **working facilitator**, often wearing another hat (design lead, PM, consultant, coach, educator), who runs workshops as part of their job and cares about getting them right. They are: - **Time-poor.** They are prepping for a session today or tomorrow. - **Experienced enough to smell BS.** Thin content gets bounced. - **Skeptical of AI fluff.** AI features must deliver obvious value, not novelty. - **Inclusive-minded.** Every voice in the room matters. This is practical, not performative. They are frequently **mid-facilitation** — attention split between the people in the room and their own plan. Anything used during a live session must be glanceable and high-contrast, and must not compete with the workshop itself. **Secondary users:** first-time facilitators who need scaffolding, and managers who occasionally need to run a real workshop. **Secondary buyer: in-house L&D.** The fastest-growing segment, with real budget, but under more scrutiny than a freelancer — they need evidence of impact to defend a program internally, and team features to standardise across facilitators. Design for them as a buyer, not as the primary user. **Not the audience:** enterprise procurement teams shopping for collaboration software, and academic researchers. Note this exclusion is narrower than it used to be: it rules out *procurement*, not in-house L&D practitioners. --- ## 3. The four phases **Learn → Plan → Facilitate → Reflect.** Each phase has a job. Since Red Unification (July 2026) they all render in the single Learn Red family — **phases are a naming and grouping system, not a colour signal.** | Phase | Job | |---|---| | **Learn** | Get excited, dive in | | **Plan** | Focus, structure | | **Facilitate** | Trust, guide others | | **Reflect** | Grow, keep going | The mapping that gets confused: **Coach is Reflect. Facilitator is Facilitate.** Never swap them. --- ## 4. How success is measured **North star: full-lifecycle workshops per active facilitator per month** — workshops that go all the way from Designed → Delivered → Synthesized. This is deliberately not "agendas built" or "sessions run". The defensible thing about Workshopr is that it is the only product spanning the whole lifecycle as one connected object; a standalone "build an agenda" or "run your session here" tool competes with free. The metric measures the moat. The three states are **derived, never stored** (`includes/workshop-record.php`): | State | Derived from | |---|---| | **Designed** | The plan row exists | | **Delivered** | A completed `coaching_sessions` row linked to the plan, or an ended `live_session` | | **Synthesized** | A `synthesis_sessions` row with real content references the plan | `plans.id` is the workshop's identity across the whole platform. One plan = one workshop. See CLAUDE.md §5 for the Workshop Record spine. --- ## 5. App inventory Verified against the filesystem, the app switcher (`includes/components/header.php`), and the gating code on 24 July 2026. **This table supersedes the app list in CLAUDE.md §1.** ### Learn | App | Path | What it does | Status | Access | |---|---|---|---|---| | Library | `/library/`, `/` | Exercises, icebreakers, ready-made workshops. Powers Planner and Coach. | Live | Public; partial tab gates on exercises/icebreakers/workshops | | Academy | `/academy/` | Ebooks, toolkits, structured learning paths | Live | Public, sign-in optional | | Tips | `/tips/` | Micro-learning feed of facilitation tips | Live | Public, sign-in optional | | Podcasts | `/podcasts/` | Podcast episodes | Live, **not in nav** | Public | ### Plan | App | Path | What it does | Status | Access | |---|---|---|---|---| | Planner | `/planner/` | Drag-and-drop agenda builder | Live | `index.php` public (CTA varies by tier); the builder and all other pages are **Pro-gated** | | Agenda Check | `/agenda-check/` | Paste an agenda, get it graded before you run it | Live | Public | | Toolkits | `/toolkits/` | `hybrid`, `preread`, `postworkshop` kits | Live | Public, sign-in optional | | MyWorkshopr | `/myworkshopr/` | Dashboard: saved workshops, teams, settings | Live | **Signed-in** (`requireAuth`) — not Pro | ### Facilitate | App | Path | What it does | Status | Access | |---|---|---|---|---| | Facilitator | `/facilitator/` | Live session command surface: timers, scripts, notes, interventions | Live | `index.php` public; `app.php` **Pro-gated** | | Sidekick | `/sidekick/` | Live facilitation companion (Chrome) | Live | **Public** — sign-in changes CTAs only | | Intervention | `/intervention/` | In-session rescue cards (37) | Live | Public, sign-in optional | ### Reflect | App | Path | What it does | Status | Access | |---|---|---|---|---| | DNA | `/dna/` | Facilitator style quiz → 5 archetypes, shareable profile URLs | Live | Public | | Synthesize | `/synthesize/` | Turn notes, photos, transcripts into themes, decisions, actions | Live, **hidden from nav** | Public / signed-in — **not** Pro-gated | | Coach | `/coach/` | AI reflection companion | **Built, not shipped** | Production redirects to `coming-soon.php` | ### Other | App | Path | What it does | Status | Access | |---|---|---|---|---| | Strategist | `/strategist/` | Pre-workshop strategy and executive briefings | Live, not in nav | Signed-in | | Admin | `/admin/` | Content, users, system health | Live | Admin role | ### Facts the nav doesn't tell you - **Coach is not reachable in production.** `coach/index.php:8–12` redirects every non-localhost request to `coming-soon.php`. The code is real and substantial; the gate is deliberate. Marketing on `/pro/` currently oversells it as though it were live. - **Synthesize is deliberately absent from the app switcher** (removed July 2026) even though it is the most actively developed app. This is temporary: it returns once Plan → Facilitate → Synthesize is woven together and entry from the Workshop Record is the primary path. Its `_wsh_sections` entry stays so `/synthesize/` pages still render their own header via direct URL. - **`/pricing/` is in the global nav and does not exist** — no directory, no rewrite. The pricing page is `/pro/`. This is a live 404. - **`/articles/` is in the global nav** and has a rewrite (`.htaccess:78`) pointing at `articles/detail.php`, which also does not exist. --- ## 6. Access and monetisation ### Current offer **Pro is free. There is no end date.** Any copy promising the beta ends on a specific date is wrong and should be removed. Stripe is fully wired — `includes/stripe-config.php`, `api/stripe-webhook.php`, and `tests/Unit/StripeLifecycleTest.php` all exist and the free → pro → free lifecycle is tested — but **inert**: all four `STRIPE_PRICE_*` values are empty, so no one can convert today. ### Tiers | Tier | What it gets | |---|---| | **Anonymous** | Browse the library, view exercise overviews | | **Free** (signed in) | `browse`, `view_details`, `basic_recommendations`, `content_read` | | **Pro** | `favorites`, `collections`, `notes`, `export`, `planner_builder`, `live_mode`, `facilitator`, `coach`, `team_collaboration` | The executable truth is `canUseFeature()` in `includes/shared-auth.php:487`. Unknown features are **denied by default**. `isProUser()` grants Pro unconditionally on `cli-server` / `APP_ENV=local` so local dev isn't blocked. ### Where Pro is actually enforced `isProUser()` gates exist in exactly these places: `planner/planner.php`, `planner/planner-home.php`, `planner/prep.php`, `planner/view.php`, `planner/brief/index.php`, `planner/live/index.php`, and `facilitator/app.php`. `planner/index.php` calls it too, but only to vary the CTA — the page itself is public. Corrections against the previous version of this document, verified in code: - **Sidekick is not Pro-gated.** It only checks `isAuthenticated()` to change CTA text. - **Synthesize is not Pro-gated.** No gate exists; `app.php` merely routes signed-in users to the home page. - **MyWorkshopr is signed-in, not Pro** (`requireAuth($pdo)` at `myworkshopr/index.php:24`). --- ## 7. Product principles 1. **Start With the Work.** Users begin by describing what they're trying to accomplish, not by navigating setup screens. 2. **AI Assists; It Does Not Take Over.** AI drafts, organises, explains, recommends. The user approves meaningful outputs. 3. **Evidence Builds Trust.** When Workshopr synthesises or recommends, users can trace the output back to its sources. 4. **Reduce Cognitive Load.** Reveal complexity progressively. Don't ask for information before it's needed. 5. **One Platform, Many Workflows.** Moving between products feels seamless because they share navigation, components, data, and AI behaviour. 6. **Artifacts Are Work Products.** Briefs, agendas, recaps, summaries, decisions and action lists are first-class objects, not temporary text blobs. --- ## 8. Not part of the product Present in the repo, not shipped, safe to delete. Do not maintain these: | Path | Note | |---|---| | `facilitator2/` | Parallel copy of Facilitator with its own Pro gate. Unreferenced by nav. | | `bettermeetings/` | A single `index.php`. | | `index.legacy.php`, `academy/index.legacy.php` | Dead, still present. | | `roi/` | ROI calculator — built, not used. (CLAUDE.md called this `/roi-calculator/`; that path never existed.) | | `spinner/` | A Figma plugin, not a web app. | --- ## 9. Where it's heading The last five releases (v2.83.0 → v2.86.3, all July 2026) are one arc: **the Workshop Record.** The product is converging from a bundle of separate apps into *one workshop object with a lifecycle*, and the home screens are being rebuilt around that object — facilitator notes persisting to the account, participant reactions attributed to agenda items, the Workshop Record page, and per-phase home screens that only show workshops at their stage. Near-term priorities, from `docs/what-to-build-next-2026-07.md`: 1. **Impact and follow-up.** Feedback capture → artifact-aware synthesis → commitment tracking → a client-ready impact report. The largest unowned gap in the market, and the thing in-house L&D needs to defend a program. 2. **A revenue engine.** Gate client-facing polish — branded exports, impact reports, collaboration. Never gate the core planner. The strategic lesson driving both: *a standalone "run your workshop here" product is a graveyard category.* Continuity across the lifecycle survives; delivery alone does not. This is why Facilitator is positioned as a **lifecycle link, not a destination**, and why the north-star metric counts full-lifecycle workshops. --- ## 10. Canonical numbers `includes/library-counts.php` is the single source of truth for every "N+ exercises" claim. Call `workshopr_count_label($key)` — it reads live counts and rounds down to the nearest ten, falling back to floors (exercises 380, icebreakers 57, workshops 50) when the DB is unavailable. **Never restate a count in prose or markup.** Four surfaces previously disagreed; if you find a hardcoded count, replace it with the helper. There is **no equivalent source of truth for user counts.** `/pro/` claims "2,500+ facilitators" and the planner hero claims "750". Both are unverified. Don't cite a user number until one is established. --- ## 11. Open questions - **User counts** — see §10. Needs a real figure and a home. - **Broken nav routes** — `/pricing/` and `/articles/` need either pages or removal from the header. - **Academy carousel** (`includes/components/section-hero.php:83–87`) advertises ebooks for "May", "June", "July" — all now past. - **Coach** — built and gated. Needs a ship decision or a decision to fold its value into Facilitator and Synthesize.