Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
f3d090f
docs(rescue): build 2026 client-acquisition operating system + sprint…
Jul 21, 2026
c6823ec
docs(rescue): add JTBD customer profile + Four Forces of Progress
Jul 21, 2026
caa032e
chore(gitignore): ignore claude-flow-generated agent category dirs
Jul 21, 2026
64af6c0
docs(rescue): add Shape Up executive summary pitch
Jul 21, 2026
7051104
docs(rescue): move operation to docs/projects/2607-vibe-code-rescue +…
Jul 21, 2026
d3187ad
docs(claude): carve out docs/projects/<YYMM-slug>/ for major initiatives
Jul 21, 2026
344b2f5
docs(rescue): add market analysis + estimations with sourced numbers
Jul 21, 2026
616c7bd
docs(business): split company layer from the rescue project
Jul 21, 2026
a924536
docs(2607): groom T4/T5 (3-agent brainstorm + votes) + F5Bot Reddit fix
Jul 21, 2026
4ddd7f0
docs(2607): add atomic executable backlog (P1-P9), decompose T4/T5
Jul 21, 2026
d86f286
docs(2607): T8 discovery kit done (call script + audit template), T9 …
Jul 21, 2026
7b41bf0
docs(2607): scaffold prospects/ output stubs + RUN.md copy-paste prompts
Jul 21, 2026
53afea5
docs(2607): point backlog at kanban-md board for live status
Jul 21, 2026
a110cec
docs(2607): complete P1-P7 prospect sourcing + T9 objection bank
Jul 21, 2026
7393fda
docs(2607): quality review fixes - remove failing rows, fix VoC speak…
Jul 21, 2026
405b8d5
docs(2607): P8 merge - 25 deduped prospect rows + VoC phrase bank
Jul 21, 2026
0e970fe
docs(2607): A2 pricing confirmed + P9 outbound openers (25 personalized)
Jul 21, 2026
f89f802
updates backlog
Jul 22, 2026
4f94529
docs(2607): rescue demand sprint — async audit pivot + quality fixes
Jul 22, 2026
e4bc885
docs(2607): polish opener tones + sync VoC phrase bank
Jul 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,22 @@ claude-flow.config.json
.claude/agents/consensus/
.claude/agents/sparc/
.claude/agents/testing/
.claude/agents/analysis/
.claude/agents/architecture/
.claude/agents/custom/
.claude/agents/data/
.claude/agents/development/
.claude/agents/devops/
.claude/agents/documentation/
.claude/agents/flow-nexus/
.claude/agents/github/
.claude/agents/goal/
.claude/agents/optimization/
.claude/agents/payments/
.claude/agents/sona/
.claude/agents/specialized/
.claude/agents/sublinear/
.claude/agents/v3/
memory/
coordination/
memory/claude-flow-data.json
Expand Down Expand Up @@ -125,3 +141,4 @@ docs/projects/**/*-verification-report.md
.grepai/
*.rvf
*.rvf.lock
kanban/
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ Follow official methodology from `/knowledge/`:
- **Zero ad hoc test scripts**: Use repo-provided test commands: `bin/rake test:critical`, plus `bin/test` and `bin/dtest` for visual changes
- **No Python scripts for analysis**: Prefer `rg`, `sed`, `awk`, and shell tools
- **Zero tolerance for duplicates**: No `*_refactored.*`, `*_new.*`, `*_backup.*` files
- **New docs allowed only under** `docs/workflows/` (else edit existing files)
- **New-doc locations (3 layers)**: (1) **company** things that persist across every opportunity — vision/mission, the operating system, the opportunity portfolio — live in `docs/business/`; (2) a **project** validating one opportunity/initiative gets its own `docs/projects/<YYMM-slug>/` folder (dated-slug convention: 2509/2510/2604/2605/2607); (3) reusable **process how-tos** go under `docs/workflows/`. Everything else edits an existing file. Do NOT put the business/OS under `docs/workflows/` (how-tos only) or collapse the company layer into a single project — the company OS runs ALL projects, and one bet is "Validating" at a time (flagged 2026-07-22: the Vibe Code Rescue OS first landed in workflows/, then wrongly nested the whole business inside project 2607; the company layer now lives in `docs/business/` with 2607 as portfolio bet #1).
- **Reflection triggers**: User reports "code is bad" / "over-engineered" → HALT, 5-Why analysis, fix config, THEN proceed
- **Mandatory self-critique on voice-sensitive content (BLOCKING)**: For any draft or revision of LinkedIn posts, blog posts, or marketing copy, invoke `reflexion-reflect` (Standard Path) BEFORE first handback. After user pushback on the same draft, escalate to `reflexion-critique` (multi-judge debate) per the LinkedIn pipeline §3 / blog pipeline equivalent. Solo iteration past first delivery consistently misses pattern-level tells (over-narration, cinematic beat-marking, shape-coded copywriting) — observed on the 2026-05-11 Monday Jira-not-progress post (5 user corrections after the AI rubric scored 0/10).
- **Visual regression test gate (BLOCKING for HTML/CSS/template changes)**: After ANY edit to `themes/`, `layouts/`, `content/blog/*/index.md` body HTML, or `*.css`, run BOTH `bin/test` (macOS host) AND `bin/dtest` (Linux/Docker) BEFORE committing. They write to separate baseline dirs (`test/fixtures/screenshots/macos/` vs `linux/`) and CI runs Linux — skipping `bin/dtest` ships a green PR locally that breaks the build. The 35-failure incident on 2026-04-30 happened because Sprints #2/#3 shipped 15 commits without running it once — and the failing tests caught a real `.fl-button` regression Sprint #3 missed. Visual regression failures are NOT optional warnings; they are commit blockers. Either fix the regression OR confirm the change is intentional AND update baselines (both macos/ AND linux/) in the same commit. "I'll run tests after a few commits" is the path that lets unfixed bugs ship.
Expand Down
16 changes: 16 additions & 0 deletions docs/business/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# JetThoughts - Business (company layer)

This folder is the **company**, not any single project. It holds the durable things that persist across every opportunity we pursue. Individual bets (like validating the Vibe Code Rescue opportunity) live under [`docs/projects/`](../projects/) and are governed by what's here.

## The three company documents

| File | What it is |
|---|---|
| [`vision-mission.md`](vision-mission.md) | Who JetThoughts is, what we do, and the durable positioning - independent of any one go-to-market wedge. |
| [`operating-system.md`](operating-system.md) | How we run: EOS-lite (accountability chart, quarterly OKR, rocks, weekly scorecard, issues, pipeline, cadence). Runs whatever the active bet is. |
| [`opportunity-portfolio.md`](opportunity-portfolio.md) | The bets we're making, how we validate / kill / scale each, and which one is active now. |

## Current focus

- **Active portfolio bet**: [Vibe Code Rescue validation](../projects/2607-vibe-code-rescue/) - project #1, proving one opportunity end to end (1 signed client by Nov 30, 2026).
- **How it connects**: the company OS drives that project this quarter; when it's validated (or killed), the same OS picks up the next bet in the portfolio.
108 changes: 108 additions & 0 deletions docs/business/operating-system.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# JetThoughts Operating System (lean)

**Scope**: this is the **company** operating system - how JetThoughts runs across every opportunity, not just the current one. It is the durable cadence (accountability chart, quarterly OKR, rocks, weekly scorecard, issues, pipeline). The **active bet it currently drives** is the [Vibe Code Rescue validation project](../projects/2607-vibe-code-rescue/) (portfolio bet #1); when the next opportunity becomes active, the same OS runs it with a new OKR/rocks.
**Company layer**: [`index.md`](index.md) (front door) · [`vision-mission.md`](vision-mission.md) (who we are) · [`opportunity-portfolio.md`](opportunity-portfolio.md) (the bets, and how we validate/kill/scale them).
**Purpose**: the smallest cadence that reliably ships the current company objective - right now, **1 Vibe Code Rescue client by Nov 30, 2026** (the active portfolio bet).
**Owner**: Paul Keen | **Created**: 2026-07-21 | **Review**: weekly
**Model**: EOS-lite (accountability chart + quarterly OKR + weekly scorecard + rocks + issues), sized for a founder + white-label delivery + AI execution.

---

## 0. Current state & where to start (fresh session)

**As of 2026-07-21**: foundation is set. A0 assumptions register ✓, G0 white-label partner ✓ (locked per CEO), offer/kit/booking drafts ✓, T1 trigger taxonomy ✓, T2 sourcing pipeline ✓.
**Active sprint**: Rescue Demand Sprint — populate the prospect list (agent) so Paul can send + book calls.
**Next agent work**: `T4/T5` (build the list) → `T6` dedupe → `T7` openers; `T8` discovery kit in parallel.
**To execute**: open [`operation-runbook.md`](../projects/2607-vibe-code-rescue/operation-runbook.md) → **▶ START HERE** block → take the next Ready task. That runbook is the shared state across sessions; this file is the weekly cadence over it.
**Paul's desk (human-only)**: booking page (~5 min), confirm price band (✅ done: $2,500 triage / $7,500 rescue / $10,000 foundation reset), review + send the outreach, take the calls, close. Optional: Gmail consent (warm lane), Apollo $79/mo + Hunter key (paid cold funnel).

---

## 1. Accountability chart (who owns what)

| Seat | Owner | Owns |
|---|---|---|
| **CEO / Sales / Trust layer** | Paul | Discovery calls, offer, pricing, the founder relationship, fractional-CTO oversight |
| **Delivery** | White-label partner | The rescue build (Rails), under JT brand, to JT quality bar |
| **Marketing / Content / Ops engine** | Claude Code (+ Paul review) | Content, SEO, landing, lead magnets, LinkedIn drafts, pipeline tracking, this OS |

One person can hold several seats - but every seat has exactly one accountable owner.

## 2. Quarterly OKR (Q3->Q4 2026)

**Objective**: Land the first Vibe Code Rescue client and prove the machine.

| Key Result | Target | Status |
|---|---|---|
| KR1 - Offer + white-label partner live | Rescue Audit priced, partner signed, landing CTA live | 🟢 partner signed ✓; offer priced ✓ ($2,500 / $7,500 / $10,000); landing deferred |
| KR2 - Discovery calls booked | 8-12 by Nov 15 | 🔲 |
| KR3 - Audits delivered | 3-5 paid Rescue Audits | 🔲 |
| KR4 - Rescue signed | **1 engagement by Nov 30** | 🔲 |

## 3. Rocks (90-day priorities = roadmap milestones)

1. **Offer + partner locked** (Aug) - the machine can't sell without these.
2. **Landing = booking machine** (Aug) - offer, proof, one CTA.
3. **Demand-gen live on all channels** (Aug->Sep) - LinkedIn 3-4/wk, rescue SEO cluster, paid pilot.
4. **First audit -> first signing** (Oct).

## 4. Weekly scorecard (leading metrics, review every week)

| Metric | Owner | Target/wk |
|---|---|---|
| LinkedIn posts published | Paul/Claude | 3-4 |
| LinkedIn qualified replies/DMs | Paul | >=3 |
| New email subs from magnets | Claude | trend up |
| Blog posts shipped (rescue/ICP-E) | Claude | 2-3 |
| **Discovery calls booked** | Paul | trend to 8-12 by mid-Nov |
| Rescue Audits sold | Paul | cumulative -> 3-5 |
| Rescues signed | Paul | -> 1 |

Green = hit target, Red = missed. Any red 2 weeks running becomes an Issue (section 6).

## 5. Meeting cadence

- **Weekly ops review (~30 min)**: scorecard (5 min) -> rock progress (5 min) -> pipeline
walk (10 min) -> IDS the top issues (10 min). Update the scorecard + OKR statuses in this file.
- **Monthly strategy check (~45 min)**: is the wedge still right? adjust roadmap; refresh
market scan if signals shift.
- **Per-deal**: discovery call -> audit -> proposal, tracked in the pipeline (section 7).

## 6. Issues list (IDS: Identify, Discuss, Solve)

Rolling list of the top blockers. Solve the highest-leverage one each week; don't let it grow.

| # | Issue | Owner | Status |
|---|---|---|---|
| 1 | White-label delivery partner (runbook G0) | Paul | ✅ Resolved 2026-07-21 (locked per CEO). Standing validation: confirm a paid trial rescue hits the quality bar + a fallback partner is named before the first real signing. |
| 2 | Prospect list populated — 25 deduped rows merged in P8 | Claude | ✅ Resolved 2026-07-22 (P8 complete) |
| 3 | Price band confirmed — A2 set at $2,500 triage / $7,500 rescue / $10,000 foundation reset | Paul | ✅ Resolved 2026-07-22 (A2 confirmed) |

## 7. Pipeline (simple funnel, no CRM needed yet)

Track each lead as a row: **Source -> Discovery call -> Audit sold -> Proposal -> Signed**.
Stages: `Lead` -> `Call booked` -> `Audit sold` -> `Proposal out` -> `Won` / `Lost (reason)`.
Keep it in a single sheet (or a section here) until volume justifies a real CRM.
**Leads originate from** the populated target list in [`rescue-sprint/warm-intro-referral-kit.md`](../projects/2607-vibe-code-rescue/rescue-sprint/warm-intro-referral-kit.md) (agent-built via runbook T4-T7); once Paul sends, each contacted row becomes a pipeline `Lead`.

## 8. Tooling map

| Function | Tool |
|---|---|
| Site / blog | Hugo (`bin/hugo-build`), content in `content/blog/` |
| Content ops | Blog pipeline (`docs/workflows/blog-pipeline.md`), voice guide 90.11 |
| LinkedIn | LinkedIn pipeline (`docs/workflows/linkedin-post-pipeline.md`) + ICP validation plan |
| Discovery scheduling | NeetoCal (per outreach template) |
| Pipeline tracking | Sheet / this doc section 7 until CRM is justified |
| OKR spine | `lark-okr` skill for structuring quarterly OKRs |
| Weekly OS loop | `eos-lite` skill (`Skill(eos-lite) weekly`) — runs scorecard/OKR/rocks/issues/pipeline over this doc |
| Step-by-step execution | [`operation-runbook.md`](../projects/2607-vibe-code-rescue/operation-runbook.md) — ordered task cards + Incremental agent backlog; **▶ START HERE** for any fresh session |
| Foundational premises | [`rescue-sprint/assumptions-register.md`](../projects/2607-vibe-code-rescue/rescue-sprint/assumptions-register.md) — ICP/trigger/channel/pre-validation, voted, with kill-criteria (runbook rule 7) |
| Sprint artifacts | `rescue-sprint/` — offer, warm-intro kit, booking spec, trigger taxonomy, sourcing pipeline (see runbook START HERE artifact index) |

## 9. Definition of "operating" (are we actually running the system?)

- Scorecard updated weekly, with real numbers.
- Every rock has a next action and an owner.
- The Issues list is short because we solve the top one each week.
- Discovery-calls-booked moves up week over week from Sept.
40 changes: 40 additions & 0 deletions docs/business/opportunity-portfolio.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# JetThoughts - Opportunity Portfolio

**Owner**: Paul Keen (CEO) | **Scope**: company-level | **Updated**: 2026-07-22
**What this is**: the bets JetThoughts is making to grow, which one is active, and how we decide to validate, kill, or scale each. Every bet becomes a project under [`docs/projects/`](../projects/) and is run by the [operating system](operating-system.md).

---

## How a bet moves through the portfolio

Each opportunity is a **falsifiable hypothesis**, not a plan we commit to. It moves through four states, and it can be killed at any gate on evidence.

| State | Meaning | Exit gate |
|---|---|---|
| **Candidate** | An idea worth a look; not yet resourced. | A one-page thesis + a market signal worth testing. |
| **Validating** | The active bet. We run a real go-to-market and measure. | The pre-validation tests pass (real buyers pay / book), OR a kill-criteria fires. |
| **Scaling** | Validated - now build the repeatable machine. | Predictable pipeline + unit economics that hold. |
| **Killed / Parked** | Evidence said no, or it's on hold. | Documented reason so we don't re-litigate it. |

Discipline: **one bet is Validating at a time.** Spreading the company across several unvalidated bets is how a small firm dies. The assumptions and kill-criteria for the active bet live in that project's assumptions register.

---

## The portfolio

| # | Opportunity | State | Project | Thesis (one line) | Kill-criteria (short) |
|---|---|---|---|---|---|
| 1 | **Vibe Code Rescue** | 🔵 **Validating** | [`2607-vibe-code-rescue`](../projects/2607-vibe-code-rescue/) | Funded non-technical founders will pay a fixed price to rescue a broken AI/dev-shop MVP and get ownership back. | 0 booked calls in 2 weeks of warm outreach → re-open the ICP bet ([assumptions register](../projects/2607-vibe-code-rescue/rescue-sprint/assumptions-register.md)). |

**Parking lot (candidates, not resourced)**: none yet. Add a row here when a new wedge earns a one-page thesis; do NOT start validating it while bet #1 is still open.

---

## Why Vibe Code Rescue is the active bet

- **Timing**: the AI-app-builder wave (Lovable, Cursor, Bolt, Replit) manufactured a large, founder-heavy pool of broken, funded MVPs - measured, not guessed ([market analysis](../projects/2607-vibe-code-rescue/10-19-research/market-analysis-2026.md)).
- **Fit**: Rails rebuild is JT's home turf; the ownership/trust wedge is JT's durable positioning made concrete.
- **Provability**: a single signed client proves the whole motion (demand → call → audit → signing) and produces the first case study - a clean validation gate.
- **Reversibility**: delivered via a white-label partner, so the bet is testable without over-committing the firm.

Full plan: [executive summary](../projects/2607-vibe-code-rescue/executive-summary.md) · [strategy](../projects/2607-vibe-code-rescue/strategy.md) · run it via the [operating system](operating-system.md).
39 changes: 39 additions & 0 deletions docs/business/vision-mission.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
> DRAFT - company identity for Paul to review. Grounded in verifiable JT facts; keep claims defensible.

# JetThoughts - Vision, Mission, Positioning

**Owner**: Paul Keen (CEO) | **Scope**: the company, independent of any single go-to-market wedge | **Reviewed**: draft 2026-07-22

---

## What JetThoughts is

A Ruby on Rails engineering firm, shipping production software since 2011. Verifiable track record: 4.8/5 from 32 clients, ~95% client retention, five-year average client relationships, developers averaging 8+ years of experience. We work with founders, not enterprises.

## Mission

Help founders build and keep control of software they actually own and understand - and rescue them when someone else's build has taken that control away.

## Vision

Be the engineering partner a non-technical founder trusts with the truth about their software. Not the shop that talks over their head and holds the code hostage - the one that hands back a working product, the accounts, and a plain-English understanding of what they have.

## Positioning (the durable part)

**Trust and transparency is the product; the code is how we deliver it.** A founder's deepest pain is not a missing feature - it is not knowing whether they are being told the truth, and not owning what they paid for. JetThoughts sells that certainty: a senior engineer who reads the actual code, tells the founder straight, and hands back ownership at every step, with Paul on the call as the fractional-CTO translation layer.

This positioning is stable across whatever specific service we lead with. The **current expression** of it is the Vibe Code Rescue wedge (see the portfolio); the identity underneath - Rails engineering, ownership, radical transparency - does not change when the wedge does.

## Who we serve (ICP)

Non-technical founder, pre-seed to Series A, whose product was built by a dev shop, a freelancer, or an AI tool and who has lost confidence or control. Full profile: [`docs/90-99-content-strategy/strategy-analysis/90.10-icp-primary-website-target.md`](../90-99-content-strategy/strategy-analysis/90.10-icp-primary-website-target.md).

## What we will not be

- Not a body shop selling hours we can't tie to an outcome.
- Not a black box - if the founder can't understand what we did, we haven't finished.
- Not the cheapest option. We compete on trust and ownership, not price.

---

**Note for Paul**: this is a working draft assembled from the documented ICP, positioning, and verifiable stats. Adjust the vision/mission wording to your voice before it becomes canon.
Loading
Loading