@mindrian_os/install 1.13.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +21 -0
- package/.mcp.json +9 -0
- package/CHANGELOG.md +3333 -0
- package/LICENSE +123 -0
- package/README.md +673 -0
- package/agents/brain-query.md +80 -0
- package/agents/framework-runner.md +237 -0
- package/agents/grading.md +188 -0
- package/agents/investor.md +128 -0
- package/agents/larry-extended.md +135 -0
- package/agents/opportunity-scanner.md +91 -0
- package/agents/persona-analyst.md +132 -0
- package/agents/research.md +89 -0
- package/agents/reverse-salient-agent.md +27 -0
- package/bin/cli.js +142 -0
- package/bin/mindrian-mcp-server.cjs +182 -0
- package/bin/mindrian-tools.cjs +765 -0
- package/commands/act.md +439 -0
- package/commands/admin.md +404 -0
- package/commands/analyze-needs.md +42 -0
- package/commands/analyze-systems.md +39 -0
- package/commands/analyze-timing.md +42 -0
- package/commands/auto-explore.md +64 -0
- package/commands/beautiful-question.md +40 -0
- package/commands/brain-derive.md +78 -0
- package/commands/build-knowledge.md +42 -0
- package/commands/build-thesis.md +46 -0
- package/commands/causal.md +234 -0
- package/commands/challenge-assumptions.md +33 -0
- package/commands/compare-ventures.md +83 -0
- package/commands/dashboard.md +110 -0
- package/commands/deep-grade.md +82 -0
- package/commands/diagnose.md +58 -0
- package/commands/diagnostics.md +151 -0
- package/commands/doctor.md +151 -0
- package/commands/dominant-designs.md +40 -0
- package/commands/explain-decision.md +87 -0
- package/commands/explore-domains.md +42 -0
- package/commands/explore-futures.md +40 -0
- package/commands/explore-trends.md +42 -0
- package/commands/export.md +103 -0
- package/commands/file-meeting.md +724 -0
- package/commands/find-analogies.md +188 -0
- package/commands/find-bottlenecks.md +62 -0
- package/commands/find-connections.md +76 -0
- package/commands/funding.md +81 -0
- package/commands/grade.md +203 -0
- package/commands/graph.md +128 -0
- package/commands/hat-briefing.md +125 -0
- package/commands/heal.md +196 -0
- package/commands/help.md +399 -0
- package/commands/hmi-status.md +172 -0
- package/commands/jtbd.md +241 -0
- package/commands/leadership.md +73 -0
- package/commands/lean-canvas.md +40 -0
- package/commands/macro-trends.md +40 -0
- package/commands/map-unknowns.md +40 -0
- package/commands/memory.md +173 -0
- package/commands/models.md +175 -0
- package/commands/mos-reason.md +285 -0
- package/commands/mullins.md +120 -0
- package/commands/new-project.md +481 -0
- package/commands/onboard.md +434 -0
- package/commands/operator.md +149 -0
- package/commands/opportunities.md +144 -0
- package/commands/organize.md +497 -0
- package/commands/persona.md +198 -0
- package/commands/pipeline.md +112 -0
- package/commands/present.md +91 -0
- package/commands/publish.md +201 -0
- package/commands/query.md +124 -0
- package/commands/radar.md +72 -0
- package/commands/reanalyze.md +91 -0
- package/commands/research.md +196 -0
- package/commands/room.md +352 -0
- package/commands/rooms.md +598 -0
- package/commands/root-cause.md +40 -0
- package/commands/rs-experts.md +85 -0
- package/commands/rs-explain.md +100 -0
- package/commands/rs-fetch.md +94 -0
- package/commands/rs-thesis.md +85 -0
- package/commands/scenario-plan.md +40 -0
- package/commands/scheduled-tasks.md +285 -0
- package/commands/score-innovation.md +43 -0
- package/commands/scout.md +239 -0
- package/commands/setup.md +618 -0
- package/commands/snapshot.md +147 -0
- package/commands/speakers.md +84 -0
- package/commands/splash.md +28 -0
- package/commands/status.md +75 -0
- package/commands/structure-argument.md +42 -0
- package/commands/suggest-next.md +80 -0
- package/commands/systems-thinking.md +40 -0
- package/commands/think-hats.md +42 -0
- package/commands/update.md +181 -0
- package/commands/user-needs.md +40 -0
- package/commands/validate.md +40 -0
- package/commands/value-proposition.md +61 -0
- package/commands/vault.md +180 -0
- package/commands/visualize.md +52 -0
- package/commands/whitespace.md +507 -0
- package/commands/wiki.md +69 -0
- package/hooks/hooks.json +381 -0
- package/hooks/run-hook.cmd +64 -0
- package/lib/__init__.py +0 -0
- package/lib/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/agents/auto-explore-agent.cjs +1043 -0
- package/lib/agents/reverse-salient-agent.cjs +679 -0
- package/lib/agents/tension-hook-agent.cjs +544 -0
- package/lib/brain/ROOM.md +44 -0
- package/lib/brain/chain-recommender.cjs +301 -0
- package/lib/chat/chat-context.js +185 -0
- package/lib/chat/chat-panel.js +721 -0
- package/lib/chat/fabric-chat.cjs +288 -0
- package/lib/chat/generative-tools.js +219 -0
- package/lib/conversation/ROOM.md +39 -0
- package/lib/conversation/classifier-rules.json +38 -0
- package/lib/conversation/classifier.cjs +264 -0
- package/lib/conversation/operator.cjs +287 -0
- package/lib/copy/115-spec-strings.cjs +55 -0
- package/lib/core/__init__.py +0 -0
- package/lib/core/__nav-stub.cjs +14 -0
- package/lib/core/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs-math.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_cache.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_corpus.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_hybrid.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_math.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_rooms.cpython-312.pyc +0 -0
- package/lib/core/artifact-id.cjs +148 -0
- package/lib/core/asset-ops.cjs +151 -0
- package/lib/core/auto-commit-throttle.cjs +129 -0
- package/lib/core/bearer-token.cjs +199 -0
- package/lib/core/brain-client.cjs +865 -0
- package/lib/core/brain-derivation-prompts.cjs +326 -0
- package/lib/core/brain-derivation-queue.cjs +431 -0
- package/lib/core/brain-derivation.cjs +580 -0
- package/lib/core/brain-md-schema.cjs +528 -0
- package/lib/core/brain-md-staleness.cjs +357 -0
- package/lib/core/brain-response-sanitize.cjs +188 -0
- package/lib/core/bridge-writer.cjs +477 -0
- package/lib/core/chat-context-builder.cjs +253 -0
- package/lib/core/cross-room-aggregator.cjs +762 -0
- package/lib/core/daily-briefing.cjs +438 -0
- package/lib/core/decision-capture.cjs +618 -0
- package/lib/core/deep-links.cjs +82 -0
- package/lib/core/dispatch-optimizer.cjs +354 -0
- package/lib/core/dual-path-detector.cjs +84 -0
- package/lib/core/dual-path-detector.test.cjs +334 -0
- package/lib/core/exports-log.cjs +79 -0
- package/lib/core/feynman-minto-invariants.cjs +605 -0
- package/lib/core/folder-memory-async.cjs +338 -0
- package/lib/core/folder-memory-shared.cjs +890 -0
- package/lib/core/folder-memory.cjs +416 -0
- package/lib/core/framework-chain-composer.cjs +411 -0
- package/lib/core/frontmatter-schemas.cjs +330 -0
- package/lib/core/git-ops.cjs +141 -0
- package/lib/core/graph-ops.cjs +258 -0
- package/lib/core/hat-persistence.cjs +362 -0
- package/lib/core/index.cjs +60 -0
- package/lib/core/integration-registry.cjs +232 -0
- package/lib/core/intelligence-cascade.cjs +661 -0
- package/lib/core/lazygraph-ops.cjs +1057 -0
- package/lib/core/lru-cache.cjs +139 -0
- package/lib/core/mcp-profiles.cjs +182 -0
- package/lib/core/meeting-ops.cjs +54 -0
- package/lib/core/memory-ops.cjs +600 -0
- package/lib/core/migrations/ROOM.md +33 -0
- package/lib/core/migrations/phase-109-nodes-provenance.cjs +339 -0
- package/lib/core/migrations/phase-109-session-focus.cjs +99 -0
- package/lib/core/model-profiles.cjs +246 -0
- package/lib/core/mullins-scaffold.cjs +160 -0
- package/lib/core/nav-dial.cjs +316 -0
- package/lib/core/navigation/ROOM.md +15 -0
- package/lib/core/navigation/explanation.cjs +43 -0
- package/lib/core/navigation/focus.cjs +135 -0
- package/lib/core/navigation/ingestion.cjs +82 -0
- package/lib/core/navigation/insights.cjs +350 -0
- package/lib/core/navigation/memory-events.cjs +118 -0
- package/lib/core/navigation/neighborhood.cjs +78 -0
- package/lib/core/navigation/packet.cjs +182 -0
- package/lib/core/navigation/room-home.cjs +127 -0
- package/lib/core/navigation/transitions.cjs +82 -0
- package/lib/core/navigation-engine-shared.cjs +242 -0
- package/lib/core/navigation-engine.cjs +664 -0
- package/lib/core/navigation.cjs +60 -0
- package/lib/core/nl-graph-queries.cjs +164 -0
- package/lib/core/offer-presenter.cjs +406 -0
- package/lib/core/opportunity-extractor.cjs +183 -0
- package/lib/core/opportunity-ops.cjs +1371 -0
- package/lib/core/persona-ops.cjs +537 -0
- package/lib/core/persona-taxonomy.cjs +190 -0
- package/lib/core/platform-gates.cjs +120 -0
- package/lib/core/platform.cjs +257 -0
- package/lib/core/proactive-intelligence.cjs +528 -0
- package/lib/core/problem-type-router.cjs +315 -0
- package/lib/core/reasoning-ops.cjs +639 -0
- package/lib/core/reverse-salient-persona-suffix.cjs +115 -0
- package/lib/core/room-classifier-strict-mode.cjs +229 -0
- package/lib/core/room-db.cjs +127 -0
- package/lib/core/room-ops-async.cjs +92 -0
- package/lib/core/room-ops-shared.cjs +64 -0
- package/lib/core/room-ops-sync.cjs +70 -0
- package/lib/core/room-ops.cjs +32 -0
- package/lib/core/room-type-detector.cjs +386 -0
- package/lib/core/rs-brain-substrate-prompts.cjs +129 -0
- package/lib/core/rs-brain-substrate.cjs +570 -0
- package/lib/core/rs-breakthrough-scorer.cjs +255 -0
- package/lib/core/rs-canon-violations.cjs +82 -0
- package/lib/core/rs-chain-feeder.cjs +343 -0
- package/lib/core/rs-commercial-assessor.cjs +280 -0
- package/lib/core/rs-differential-scorer.cjs +376 -0
- package/lib/core/rs-domain-analyzer.cjs +385 -0
- package/lib/core/rs-egress-prompts.cjs +113 -0
- package/lib/core/rs-egress-telemetry.cjs +225 -0
- package/lib/core/rs-egress-violations.cjs +53 -0
- package/lib/core/rs-expert-mapper.cjs +467 -0
- package/lib/core/rs-fetcher-academic.cjs +697 -0
- package/lib/core/rs-fetcher-experts.cjs +314 -0
- package/lib/core/rs-fetcher-industry.cjs +731 -0
- package/lib/core/rs-fetcher-patents.cjs +564 -0
- package/lib/core/rs-innovation-classifier.cjs +194 -0
- package/lib/core/rs-mind-map.cjs +656 -0
- package/lib/core/rs-neo4j-writer.cjs +388 -0
- package/lib/core/rs-nl-to-query.cjs +425 -0
- package/lib/core/rs-pinecone-bridge.cjs +303 -0
- package/lib/core/rs-preprocessor.cjs +350 -0
- package/lib/core/rs-query-matrix.cjs +316 -0
- package/lib/core/rs-query-to-text.cjs +438 -0
- package/lib/core/rs-sqlite-mirror.cjs +443 -0
- package/lib/core/rs-thesis-generator.cjs +188 -0
- package/lib/core/rs_cache.py +479 -0
- package/lib/core/rs_corpus.py +468 -0
- package/lib/core/rs_hybrid.py +586 -0
- package/lib/core/rs_math.py +287 -0
- package/lib/core/rs_rooms.py +193 -0
- package/lib/core/scheduled-scanner.cjs +463 -0
- package/lib/core/scratchpad-ops.cjs +201 -0
- package/lib/core/section-8-trace-schema.cjs +138 -0
- package/lib/core/section-registry.cjs +111 -0
- package/lib/core/session-state.cjs +144 -0
- package/lib/core/shallow-doc-parser.cjs +174 -0
- package/lib/core/shallow-doc-parser.test.cjs +226 -0
- package/lib/core/skill-activation-router.cjs +284 -0
- package/lib/core/state-ops.cjs +46 -0
- package/lib/core/statusline-cache.cjs +266 -0
- package/lib/core/token-estimator.cjs +348 -0
- package/lib/core/user-archetype.cjs +239 -0
- package/lib/core/user-md-ops.cjs +524 -0
- package/lib/core/visual-ops.cjs +624 -0
- package/lib/core/write-lock.cjs +149 -0
- package/lib/graph/canvas-graph.js +467 -0
- package/lib/graph/constellation-config.cjs +299 -0
- package/lib/graph/graph-detail-panel.js +165 -0
- package/lib/hmi/ROOM.md +47 -0
- package/lib/hmi/across-session-memory.cjs +604 -0
- package/lib/hmi/cross-room-memory.cjs +575 -0
- package/lib/hmi/decoy-tier.cjs +395 -0
- package/lib/hmi/jtbd-classifier.cjs +219 -0
- package/lib/hmi/jtbd-state.cjs +199 -0
- package/lib/hmi/jtbd-taxonomy.json +392 -0
- package/lib/hmi/selector-dispatcher.cjs +546 -0
- package/lib/hmi/selector-telemetry.cjs +263 -0
- package/lib/hmi/shape-f0-renderer.cjs +139 -0
- package/lib/hmi/shape-f1-fallback.cjs +80 -0
- package/lib/hmi/shape-f1-renderer.cjs +138 -0
- package/lib/hmi/shape-f2-renderer.cjs +132 -0
- package/lib/hmi/shape-f3-renderer.cjs +66 -0
- package/lib/hmi/shape-f4-renderer.cjs +72 -0
- package/lib/hmi/shape-f5-renderer.cjs +155 -0
- package/lib/hmi/shape-f6-plan-review-renderer.cjs +312 -0
- package/lib/hmi/shape-f6-renderer.cjs +144 -0
- package/lib/hmi/shape-g-renderer.cjs +219 -0
- package/lib/hmi/shape-h-renderer.cjs +222 -0
- package/lib/hmi/tier-check.cjs +63 -0
- package/lib/import/PRECONDITIONS.md +41 -0
- package/lib/import/branding.cjs +210 -0
- package/lib/import/branding.test.cjs +235 -0
- package/lib/import/classifications-sync.cjs +104 -0
- package/lib/import/classifications-sync.test.cjs +129 -0
- package/lib/import/enricher.cjs +296 -0
- package/lib/import/enricher.test.cjs +273 -0
- package/lib/import/integration.test.cjs +376 -0
- package/lib/import/manifest.cjs +129 -0
- package/lib/import/manifest.schema.json +185 -0
- package/lib/import/manifest.test.cjs +123 -0
- package/lib/import/meeting-detector.cjs +92 -0
- package/lib/import/meeting-detector.test.cjs +100 -0
- package/lib/import/person-detector.cjs +229 -0
- package/lib/import/person-detector.test.cjs +149 -0
- package/lib/import/report.cjs +186 -0
- package/lib/import/report.test.cjs +186 -0
- package/lib/import/room-md-scaffolder.cjs +49 -0
- package/lib/import/router.cjs +224 -0
- package/lib/import/router.test.cjs +356 -0
- package/lib/import/run-all-tests.cjs +36 -0
- package/lib/import/smoke-test.cjs +213 -0
- package/lib/import/smoke-test.test.cjs +148 -0
- package/lib/import/test-fixtures/collision-vault/preexisting-room/STATE.md +8 -0
- package/lib/import/test-fixtures/collision-vault/preexisting-room/problem-definition/onboarding/onboarding.md +7 -0
- package/lib/import/test-fixtures/collision-vault/source/onboarding.md +5 -0
- package/lib/import/test-fixtures/obsidian-vault/.obsidian/workspace.json +1 -0
- package/lib/import/test-fixtures/obsidian-vault/notes/with-wikilinks.md +4 -0
- package/lib/import/test-fixtures/tiny-vault/notes/2026-01-15-team-sync.md +9 -0
- package/lib/import/test-fixtures/tiny-vault/notes/empty.md +3 -0
- package/lib/import/test-fixtures/tiny-vault/notes/onboarding.md +5 -0
- package/lib/import/test-fixtures/tiny-vault/notes/pricing.md +5 -0
- package/lib/import/test-fixtures/tiny-vault/notes/random.md +4 -0
- package/lib/import/undo.test.cjs +199 -0
- package/lib/import/vault-scanner.cjs +105 -0
- package/lib/import/vault-scanner.test.cjs +67 -0
- package/lib/mcp/app-html/dashboard.html +316 -0
- package/lib/mcp/app-html/graph.html +428 -0
- package/lib/mcp/app-html/mindrian-platform.html +1841 -0
- package/lib/mcp/app-html/wiki.html +383 -0
- package/lib/mcp/app-views.cjs +322 -0
- package/lib/mcp/brain-router.cjs +418 -0
- package/lib/mcp/capability-registry.cjs +62 -0
- package/lib/mcp/larry-context.cjs +46 -0
- package/lib/mcp/larry-server-instructions.md +114 -0
- package/lib/mcp/pipeline-state.cjs +275 -0
- package/lib/mcp/prompts.cjs +302 -0
- package/lib/mcp/resources.cjs +227 -0
- package/lib/mcp/session-catchup.cjs +327 -0
- package/lib/mcp/surface-detect.cjs +75 -0
- package/lib/mcp/tool-router.cjs +1034 -0
- package/lib/memory/aaak-compress.cjs +403 -0
- package/lib/memory/aaak-compress.test.cjs +288 -0
- package/lib/memory/async-artifact-auto-commit.test.cjs +223 -0
- package/lib/memory/bearer-token.test.cjs +315 -0
- package/lib/memory/brain-cache-lru.test.cjs +259 -0
- package/lib/memory/brain-client-query-shape.test.cjs +160 -0
- package/lib/memory/brain-derivation-graceful-degradation.test.cjs +1019 -0
- package/lib/memory/brain-derivation-queue.test.cjs +539 -0
- package/lib/memory/brain-derivation.test.cjs +634 -0
- package/lib/memory/brain-derive-command.test.cjs +534 -0
- package/lib/memory/brain-md-invariants-validator.test.cjs +704 -0
- package/lib/memory/brain-md-schema.test.cjs +467 -0
- package/lib/memory/brain-md-staleness.test.cjs +525 -0
- package/lib/memory/brain-server-resolution.test.cjs +314 -0
- package/lib/memory/chain-recommender.test.cjs +233 -0
- package/lib/memory/chat-context.test.cjs +128 -0
- package/lib/memory/command-registry.test.cjs +220 -0
- package/lib/memory/cross-room-aggregator.test.cjs +909 -0
- package/lib/memory/dashboard-server.test.cjs +256 -0
- package/lib/memory/debouncer-drain-at-prompt.test.cjs +389 -0
- package/lib/memory/decision-capture.test.cjs +632 -0
- package/lib/memory/decision-capture.worker.cjs +70 -0
- package/lib/memory/explain-decision-command.test.cjs +521 -0
- package/lib/memory/explain-decision-footer.test.cjs +316 -0
- package/lib/memory/explored-materials-store.cjs +392 -0
- package/lib/memory/feynman-minto-guardian.test.cjs +736 -0
- package/lib/memory/feynman-minto-invariants.test.cjs +511 -0
- package/lib/memory/feynman-prompts-drift.test.cjs +144 -0
- package/lib/memory/feynman-prompts.cjs +151 -0
- package/lib/memory/feynman-prompts.test.cjs +96 -0
- package/lib/memory/folder-memory-quadruple.test.cjs +548 -0
- package/lib/memory/folder-memory.test.cjs +503 -0
- package/lib/memory/framework-chain-composer.test.cjs +515 -0
- package/lib/memory/frontmatter-schema-validator.test.cjs +290 -0
- package/lib/memory/heal-command.test.cjs +604 -0
- package/lib/memory/index-artifact-transaction.test.cjs +333 -0
- package/lib/memory/lazygraph-rs-discoveries-view.test.cjs +122 -0
- package/lib/memory/mcp-input-validation.test.cjs +240 -0
- package/lib/memory/mcp-server-brain-deps.test.cjs +270 -0
- package/lib/memory/mcp-stack-fallback.test.cjs +433 -0
- package/lib/memory/minto-debouncer.test.cjs +407 -0
- package/lib/memory/minto-debouncer.worker.cjs +46 -0
- package/lib/memory/minto-migration-v88.test.cjs +265 -0
- package/lib/memory/minto-schema-v88.test.cjs +390 -0
- package/lib/memory/mos-status-renderer.test.cjs +631 -0
- package/lib/memory/narrative-schema.cjs +376 -0
- package/lib/memory/narrative-schema.test.cjs +209 -0
- package/lib/memory/nav-dial.test.cjs +414 -0
- package/lib/memory/navigation-engine-core.test.cjs +722 -0
- package/lib/memory/navigation-invariants.test.cjs +483 -0
- package/lib/memory/offer-presenter.test.cjs +554 -0
- package/lib/memory/on-stop-snapshot.test.cjs +404 -0
- package/lib/memory/pending-tension-store.cjs +373 -0
- package/lib/memory/post-compact-reinjection.test.cjs +854 -0
- package/lib/memory/post-write-triple.test.cjs +317 -0
- package/lib/memory/pre-compact-snapshot.test.cjs +495 -0
- package/lib/memory/problem-type-router.test.cjs +656 -0
- package/lib/memory/query-efficiency-telemetry.test.cjs +370 -0
- package/lib/memory/recompile-room-references.test.cjs +392 -0
- package/lib/memory/recompile-room-references.worker.cjs +42 -0
- package/lib/memory/record-decision-dual-write.test.cjs +454 -0
- package/lib/memory/room-classifier-strict-mode.test.cjs +417 -0
- package/lib/memory/room-minto-hook.test.cjs +398 -0
- package/lib/memory/rs-discovery-engine.test.cjs +323 -0
- package/lib/memory/run-feynman-tests.cjs +1247 -0
- package/lib/memory/security-trifecta.test.cjs +312 -0
- package/lib/memory/session-start-brain-staleness.test.cjs +363 -0
- package/lib/memory/session-start-triple-injection.test.cjs +514 -0
- package/lib/memory/sessionstart-banner-formatter.cjs +318 -0
- package/lib/memory/sessionstart-minto-banner.test.cjs +373 -0
- package/lib/memory/skill-activation-router.test.cjs +419 -0
- package/lib/memory/stamp-artifact-write.test.cjs +304 -0
- package/lib/memory/statusline-active-room.test.cjs +315 -0
- package/lib/memory/statusline-minto-segment.test.cjs +292 -0
- package/lib/memory/sync-async-entry-points.test.cjs +204 -0
- package/lib/memory/test-bridge-writer-enhanced.cjs +452 -0
- package/lib/memory/test-rs-brain-substrate-shape.cjs +529 -0
- package/lib/memory/test-rs-brain-substrate.cjs +636 -0
- package/lib/memory/test-rs-breakthrough-scorer.cjs +375 -0
- package/lib/memory/test-rs-canon-violations.cjs +218 -0
- package/lib/memory/test-rs-chain-feeder-core.cjs +344 -0
- package/lib/memory/test-rs-chain-feeder-skill-spawn.cjs +297 -0
- package/lib/memory/test-rs-commercial-assessor.cjs +385 -0
- package/lib/memory/test-rs-differential-scorer.cjs +480 -0
- package/lib/memory/test-rs-discovery-engine.cjs +603 -0
- package/lib/memory/test-rs-domain-analyzer.cjs +492 -0
- package/lib/memory/test-rs-egress-primitives.cjs +420 -0
- package/lib/memory/test-rs-expert-mapper.cjs +547 -0
- package/lib/memory/test-rs-explain-command.cjs +443 -0
- package/lib/memory/test-rs-fetcher-academic.cjs +848 -0
- package/lib/memory/test-rs-fetcher-experts.cjs +496 -0
- package/lib/memory/test-rs-fetcher-industry.cjs +702 -0
- package/lib/memory/test-rs-fetcher-patents.cjs +674 -0
- package/lib/memory/test-rs-innovation-classifier.cjs +301 -0
- package/lib/memory/test-rs-mind-map.cjs +646 -0
- package/lib/memory/test-rs-neo4j-writer.cjs +518 -0
- package/lib/memory/test-rs-nl-to-query.cjs +449 -0
- package/lib/memory/test-rs-pinecone-bridge.cjs +277 -0
- package/lib/memory/test-rs-preprocessor.cjs +433 -0
- package/lib/memory/test-rs-query-matrix.cjs +391 -0
- package/lib/memory/test-rs-query-to-text.cjs +551 -0
- package/lib/memory/test-rs-sqlite-mirror.cjs +649 -0
- package/lib/memory/test-rs-thesis-generator.cjs +360 -0
- package/lib/memory/triple-context-formatter.cjs +473 -0
- package/lib/memory/triple-context-formatter.test.cjs +442 -0
- package/lib/memory/user-md-persona.test.cjs +565 -0
- package/lib/memory/userpromptsubmit-integration.test.cjs +690 -0
- package/lib/memory/validators/README.md +157 -0
- package/lib/memory/validators/brain-md-invariants.cjs +475 -0
- package/lib/memory/validators/brain-substrate-invariants.cjs +285 -0
- package/lib/memory/validators/external-academic-invariants.cjs +249 -0
- package/lib/memory/validators/external-industry-invariants.cjs +271 -0
- package/lib/memory/validators/external-patents-invariants.cjs +266 -0
- package/lib/memory/validators/minto-invariants.cjs +62 -0
- package/lib/memory/validators/navigation-invariants.cjs +340 -0
- package/lib/memory/validators/queue-health.cjs +95 -0
- package/lib/memory/validators/snapshot-integrity.cjs +129 -0
- package/lib/memory/validators/stale-lifecycle.cjs +116 -0
- package/lib/memory/vault-section-minto-generator-atomic.test.cjs +556 -0
- package/lib/memory/vault-section-minto-generator-atomic.worker.cjs +73 -0
- package/lib/memory/write-lock-atomic.test.cjs +137 -0
- package/lib/memory/write-lock-atomic.worker.cjs +55 -0
- package/lib/parity/check-parity.cjs +83 -0
- package/lib/presentation/presentation-server.cjs +101 -0
- package/lib/presentation/presentation-watcher.cjs +123 -0
- package/lib/quickview/hub-server.cjs +719 -0
- package/lib/quickview/server.cjs +533 -0
- package/lib/render/JTBD-PALETTES.md +145 -0
- package/lib/render/ROOM.md +59 -0
- package/lib/render/render-v2.cjs +486 -0
- package/lib/render/render-v2.test.cjs +267 -0
- package/lib/render/render.cjs +65 -0
- package/lib/state/ROOM.md +46 -0
- package/lib/state/state-md-parser.cjs +215 -0
- package/lib/statusline/ROOM.md +38 -0
- package/lib/statusline/banner-suppression.cjs +50 -0
- package/lib/statusline/surface-detect.cjs +85 -0
- package/lib/update-bootstrap.sh.template +145 -0
- package/lib/vault/frontmatter-schema.cjs +297 -0
- package/lib/vault/room-scanner.cjs +352 -0
- package/lib/vault/wikilink-builder.cjs +231 -0
- package/lib/vault/wikilink-builder.test.cjs +182 -0
- package/lib/wiki/graph-links.cjs +281 -0
- package/lib/wiki/page-renderer.cjs +229 -0
- package/lib/wiki/wiki-chat.cjs +81 -0
- package/lib/wiki/wiki-layout.cjs +1459 -0
- package/lib/wiki/wiki-search.cjs +142 -0
- package/lib/wiki/wiki-server.cjs +678 -0
- package/lib/wiki/wiki-watcher.cjs +105 -0
- package/lib/workflow/ROOM.md +47 -0
- package/lib/workflow/command-resolver.cjs +155 -0
- package/lib/workflow/command-resolver.test.cjs +235 -0
- package/package.json +44 -0
- package/pipelines/analogy/01-decompose.md +80 -0
- package/pipelines/analogy/02-abstract.md +87 -0
- package/pipelines/analogy/03-search.md +135 -0
- package/pipelines/analogy/04-transfer.md +101 -0
- package/pipelines/analogy/05-validate.md +106 -0
- package/pipelines/analogy/CHAIN.md +56 -0
- package/pipelines/discovery/01-explore-domains.md +44 -0
- package/pipelines/discovery/02-think-hats.md +50 -0
- package/pipelines/discovery/03-analyze-needs.md +54 -0
- package/pipelines/discovery/CHAIN.md +37 -0
- package/pipelines/thesis/01-structure-argument.md +45 -0
- package/pipelines/thesis/02-challenge-assumptions.md +48 -0
- package/pipelines/thesis/03-build-thesis.md +54 -0
- package/pipelines/thesis/CHAIN.md +37 -0
- package/references/brain/causal-directives.md +91 -0
- package/references/brain/causal-enrichment.cypher +165 -0
- package/references/brain/command-triggers-schema.md +226 -0
- package/references/brain/graph-architecture.md +317 -0
- package/references/brain/query-patterns.md +460 -0
- package/references/brain/room-hierarchy-schema.md +218 -0
- package/references/brain/schema.md +76 -0
- package/references/capability-radar/capabilities-index.md +241 -0
- package/references/capability-radar/changelog-cache.md +81 -0
- package/references/causal/causal-schema.md +103 -0
- package/references/design/email-template-standard.md +155 -0
- package/references/design/graph-visualization-standard.md +178 -0
- package/references/document-generation.md +179 -0
- package/references/hsi/HSI-TOOLS-REFERENCE.md +222 -0
- package/references/import-config.md +141 -0
- package/references/integrations/detection-patterns.md +101 -0
- package/references/meeting/artifact-template.md +377 -0
- package/references/meeting/cross-meeting-intelligence.md +216 -0
- package/references/meeting/cross-relationship-patterns.md +202 -0
- package/references/meeting/live-join-interface.md +244 -0
- package/references/meeting/section-mapping.md +192 -0
- package/references/meeting/segment-classification.md +258 -0
- package/references/meeting/speaker-profile-template.md +219 -0
- package/references/meeting/summary-template.md +348 -0
- package/references/meeting/transcript-patterns.md +226 -0
- package/references/methodology/analyze-needs.md +135 -0
- package/references/methodology/analyze-systems.md +121 -0
- package/references/methodology/analyze-timing.md +149 -0
- package/references/methodology/beautiful-question.md +109 -0
- package/references/methodology/build-knowledge.md +161 -0
- package/references/methodology/build-thesis.md +237 -0
- package/references/methodology/challenge-assumptions.md +127 -0
- package/references/methodology/diagnose.md +169 -0
- package/references/methodology/dominant-designs.md +212 -0
- package/references/methodology/explore-domains.md +147 -0
- package/references/methodology/explore-futures.md +163 -0
- package/references/methodology/explore-trends.md +129 -0
- package/references/methodology/find-bottlenecks.md +131 -0
- package/references/methodology/grade.md +211 -0
- package/references/methodology/index.md +97 -0
- package/references/methodology/leadership.md +200 -0
- package/references/methodology/lean-canvas.md +116 -0
- package/references/methodology/macro-trends.md +192 -0
- package/references/methodology/map-unknowns.md +137 -0
- package/references/methodology/mullins-7-domains.md +104 -0
- package/references/methodology/problem-types.md +65 -0
- package/references/methodology/root-cause.md +178 -0
- package/references/methodology/sapphire-encoding.md +355 -0
- package/references/methodology/scenario-plan.md +178 -0
- package/references/methodology/score-innovation.md +154 -0
- package/references/methodology/structure-argument.md +158 -0
- package/references/methodology/systems-thinking.md +159 -0
- package/references/methodology/think-hats.md +147 -0
- package/references/methodology/triz-matrix.json +751 -0
- package/references/methodology/triz-principles.md +501 -0
- package/references/methodology/user-needs.md +199 -0
- package/references/methodology/validate.md +163 -0
- package/references/methodology/value-proposition.md +244 -0
- package/references/opportunities/funding-lifecycle.md +103 -0
- package/references/opportunities/grant-api-patterns.md +99 -0
- package/references/opportunities/opportunity-template.md +84 -0
- package/references/personality/assessment-philosophy.md +72 -0
- package/references/personality/lexicon.md +100 -0
- package/references/personality/persona-chains.md +56 -0
- package/references/personality/pws-lexicon-full.md +499 -0
- package/references/personality/voice-dna.md +156 -0
- package/references/personas/hat-perspectives.md +76 -0
- package/references/personas/persona-template.md +63 -0
- package/references/pipeline/act-output-contract.md +88 -0
- package/references/pipeline/chains-index.md +39 -0
- package/references/pws-profile-generation.md +79 -0
- package/references/reasoning/reasoning-schema.md +143 -0
- package/references/reasoning/reasoning-template.md +68 -0
- package/references/reasoning/run-template.md +38 -0
- package/references/research/RESEARCH_14_CLAUDE_CODE_SOURCE_ARCHITECTURE.md +209 -0
- package/references/research/RESEARCH_15_V1.8_OPTIMIZATION_JTBD.md +375 -0
- package/references/research/RESEARCH_16_NATIVE_FIRST_PLUGIN_ARCHITECTURE.md +575 -0
- package/references/research/RESEARCH_17_MCP_UI_FRAMEWORKS.md +272 -0
- package/references/taxonomy/TAXONOMY.md +192 -0
- package/references/templates/MINTO.md +36 -0
- package/references/user-research/2026-04-05-leah-lawrence-session.md +202 -0
- package/references/vault-kit/README.md +35 -0
- package/references/vault-kit/app.json +12 -0
- package/references/vault-kit/appearance.json +12 -0
- package/references/vault-kit/graph.json +35 -0
- package/references/vault-kit/snippets/mindrian-destijl.css +297 -0
- package/references/vault-kit/templates/new-artifact.md +37 -0
- package/references/vault-kit/templates/new-meeting-note.md +35 -0
- package/references/vault-kit/templates/new-team-profile.md +29 -0
- package/references/vault-kit/templates/new-xref.md +35 -0
- package/references/visual/symbol-system.md +151 -0
- package/skills/MOSDeckEngine/SKILL.md +325 -0
- package/skills/brain-connector/SKILL.md +114 -0
- package/skills/context-engine/SKILL.md +147 -0
- package/skills/conversation-mode/SKILL.md +102 -0
- package/skills/larry-personality/SKILL.md +219 -0
- package/skills/larry-personality/framework-chains.md +92 -0
- package/skills/larry-personality/mode-engine.md +185 -0
- package/skills/mullins-scaffold/SKILL.md +61 -0
- package/skills/mullins-scaffold/scaffold.json +146 -0
- package/skills/pws-methodology/SKILL.md +49 -0
- package/skills/room-passive/SKILL.md +165 -0
- package/skills/room-proactive/SKILL.md +250 -0
- package/skills/ui-system/SKILL.md +277 -0
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
# Meeting Summary Template -- Meeting Archive Package
|
|
2
|
+
|
|
3
|
+
*Used by `file-meeting` to produce the complete meeting archive package.*
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Meeting Archive Package
|
|
8
|
+
|
|
9
|
+
Every filed meeting produces a self-contained archive folder with the following files:
|
|
10
|
+
|
|
11
|
+
| File | Location | Purpose |
|
|
12
|
+
|------|----------|---------|
|
|
13
|
+
| Transcript | `room/meetings/YYYY-MM-DD-{name}/transcript.md` | Original transcript (preserved verbatim) |
|
|
14
|
+
| Summary | `room/meetings/YYYY-MM-DD-{name}/summary.md` | Complete narrative + structured breakdown |
|
|
15
|
+
| Speakers | `room/meetings/YYYY-MM-DD-{name}/speakers.md` | Who attended, roles, segment counts, profile links |
|
|
16
|
+
| Decisions | `room/meetings/YYYY-MM-DD-{name}/decisions.md` | Extracted decisions with owners and impact sections |
|
|
17
|
+
| Action Items | `room/meetings/YYYY-MM-DD-{name}/action-items.md` | Tasks with owners and deadlines (only if stated) |
|
|
18
|
+
| Metadata | `room/meetings/YYYY-MM-DD-{name}/metadata.yaml` | Structured searchable metadata for cross-meeting lookup |
|
|
19
|
+
| Audio | `room/meetings/YYYY-MM-DD-{name}/{filename}` | Audio copy (only if --audio input) |
|
|
20
|
+
| Filed-to index | `room/meetings/YYYY-MM-DD-{name}/filed-to/` | Links to where each artifact was filed |
|
|
21
|
+
| Compact reference | `room/meeting-YYYY-MM-DD-{name}.md` | Quick-access at room root |
|
|
22
|
+
|
|
23
|
+
Each meeting folder is a complete knowledge artifact -- browsable, shareable, and self-contained.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Full Summary Template
|
|
28
|
+
|
|
29
|
+
**Location:** `room/meetings/YYYY-MM-DD-{name}/summary.md`
|
|
30
|
+
|
|
31
|
+
```markdown
|
|
32
|
+
---
|
|
33
|
+
methodology: file-meeting
|
|
34
|
+
type: meeting-summary
|
|
35
|
+
meeting_date: {YYYY-MM-DD}
|
|
36
|
+
meeting_name: {human-readable name}
|
|
37
|
+
source: {transcript | velma}
|
|
38
|
+
format_detected: {zoom | teams | otter | meet | raw | velma}
|
|
39
|
+
duration_estimate: {minutes, if available}
|
|
40
|
+
speakers:
|
|
41
|
+
- name: {speaker name}
|
|
42
|
+
role: {speaker role}
|
|
43
|
+
segments: {count}
|
|
44
|
+
- name: {speaker name}
|
|
45
|
+
role: {speaker role}
|
|
46
|
+
segments: {count}
|
|
47
|
+
total_segments: {count}
|
|
48
|
+
filed_segments: {count}
|
|
49
|
+
skipped_segments: {count}
|
|
50
|
+
flagged_noise: {count}
|
|
51
|
+
rejected_segments: {count}
|
|
52
|
+
created: {YYYY-MM-DD}
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
# Meeting: {meeting_name}
|
|
56
|
+
|
|
57
|
+
{Narrative lead paragraph in Larry's voice. 2-4 sentences summarizing what
|
|
58
|
+
happened, what was decided, and what matters most. Written in third person
|
|
59
|
+
with Larry's characteristic directness. NOT a bland summary -- Larry's
|
|
60
|
+
personality comes through.}
|
|
61
|
+
|
|
62
|
+
## Key Decisions
|
|
63
|
+
|
|
64
|
+
{Numbered list of decisions made during the meeting. Each links to the
|
|
65
|
+
filed artifact. If no decisions were made, state: "No explicit decisions
|
|
66
|
+
were recorded in this meeting."}
|
|
67
|
+
|
|
68
|
+
1. **{Decision summary}** -- {speaker} ({role})
|
|
69
|
+
Filed to: [[room/{section}/{artifact-name}.md]]
|
|
70
|
+
|
|
71
|
+
## Insights Filed
|
|
72
|
+
|
|
73
|
+
{Count} insights filed to {count} sections:
|
|
74
|
+
|
|
75
|
+
- **{section}**: {count} insights
|
|
76
|
+
- {Brief insight summary} -- {speaker} ({role})
|
|
77
|
+
- {Brief insight summary} -- {speaker} ({role})
|
|
78
|
+
- **{section}**: {count} insights
|
|
79
|
+
- {Brief insight summary} -- {speaker} ({role})
|
|
80
|
+
|
|
81
|
+
## Contradictions Detected
|
|
82
|
+
|
|
83
|
+
{List any contradictions found between segments in this meeting, or between
|
|
84
|
+
meeting segments and existing room artifacts. If none: "No contradictions
|
|
85
|
+
detected."}
|
|
86
|
+
|
|
87
|
+
- **{Claim A}** ({speaker A}) vs **{Claim B}** ({speaker B})
|
|
88
|
+
Affects: [{sections}]
|
|
89
|
+
Status: Flagged for review
|
|
90
|
+
|
|
91
|
+
## Gaps Identified
|
|
92
|
+
|
|
93
|
+
{Questions raised during the meeting that represent knowledge gaps. These
|
|
94
|
+
are filed as gap entries in their target sections.}
|
|
95
|
+
|
|
96
|
+
- **{Gap description}** -- raised by {speaker} ({role})
|
|
97
|
+
Filed to: [[room/{section}/gaps/{artifact-name}.md]]
|
|
98
|
+
|
|
99
|
+
## Action Items
|
|
100
|
+
|
|
101
|
+
{Extracted action items with owners. NEVER invent deadlines that were not
|
|
102
|
+
explicitly stated in the transcript.}
|
|
103
|
+
|
|
104
|
+
| Owner | Task | Deadline | Context |
|
|
105
|
+
|-------|------|----------|---------|
|
|
106
|
+
| {name} | {task description} | {date or "not specified"} | {why this matters} |
|
|
107
|
+
|
|
108
|
+
## Rejections
|
|
109
|
+
|
|
110
|
+
{Segments the user rejected during confirm-then-file, with captured reasons.
|
|
111
|
+
If none: "No segments were rejected."}
|
|
112
|
+
|
|
113
|
+
| Segment | Suggested Section | Rejection Reason |
|
|
114
|
+
|---------|-------------------|------------------|
|
|
115
|
+
| {brief text} | {section} | {user's reason} |
|
|
116
|
+
|
|
117
|
+
## Speakers
|
|
118
|
+
|
|
119
|
+
{Count} speakers identified:
|
|
120
|
+
|
|
121
|
+
| Speaker | Role | Segments | Key Contributions |
|
|
122
|
+
|---------|------|----------|-------------------|
|
|
123
|
+
| {name} | {role} | {count} | {1-sentence summary of their contributions} |
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
*Filed by MindrianOS `file-meeting` on {created date}.*
|
|
128
|
+
*Source: {source type} | Format: {format_detected}*
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Compact Reference Template
|
|
134
|
+
|
|
135
|
+
**Location:** `room/meeting-YYYY-MM-DD-{name}.md`
|
|
136
|
+
|
|
137
|
+
```markdown
|
|
138
|
+
---
|
|
139
|
+
type: meeting-reference
|
|
140
|
+
meeting_date: {YYYY-MM-DD}
|
|
141
|
+
meeting_name: {name}
|
|
142
|
+
full_summary: meetings/YYYY-MM-DD-{name}/summary.md
|
|
143
|
+
speakers: {count}
|
|
144
|
+
decisions: {count}
|
|
145
|
+
insights: {count}
|
|
146
|
+
actions: {count}
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
# {meeting_name} ({YYYY-MM-DD})
|
|
150
|
+
|
|
151
|
+
{One-paragraph summary -- same narrative lead from full summary.}
|
|
152
|
+
|
|
153
|
+
**Decisions:** {count} | **Insights:** {count} | **Actions:** {count} | **Speakers:** {count}
|
|
154
|
+
|
|
155
|
+
Full summary: [[meetings/YYYY-MM-DD-{name}/summary.md]]
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
This file lives at the root of the room directory for quick scanning. Users can `ls room/meeting-*.md` to see all meetings at a glance.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Transcript Storage Template
|
|
163
|
+
|
|
164
|
+
**Location:** `room/meetings/YYYY-MM-DD-{name}/transcript.md`
|
|
165
|
+
|
|
166
|
+
```markdown
|
|
167
|
+
---
|
|
168
|
+
type: meeting-transcript
|
|
169
|
+
meeting_date: {YYYY-MM-DD}
|
|
170
|
+
meeting_name: {name}
|
|
171
|
+
source: {transcript | velma}
|
|
172
|
+
format_detected: {format}
|
|
173
|
+
speakers: [{speaker names}]
|
|
174
|
+
total_lines: {count}
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
# Transcript: {meeting_name}
|
|
178
|
+
|
|
179
|
+
{Original transcript preserved verbatim. No modifications.
|
|
180
|
+
If Velma source, converted from JSON to readable format with
|
|
181
|
+
timestamps and speaker labels.}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
The transcript is stored EXACTLY as provided. No cleanup, no rewriting. The original is the source of truth. Larry's classifications and summaries are interpretations -- the transcript is evidence.
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Filed-To Index Pattern
|
|
189
|
+
|
|
190
|
+
**Location:** `room/meetings/YYYY-MM-DD-{name}/filed-to/`
|
|
191
|
+
|
|
192
|
+
Each filed artifact gets a reference entry:
|
|
193
|
+
|
|
194
|
+
```markdown
|
|
195
|
+
# room/meetings/YYYY-MM-DD-{name}/filed-to/{NNN}-{section}.md
|
|
196
|
+
|
|
197
|
+
Filed: [[room/{section}/{artifact-filename}.md]]
|
|
198
|
+
Speaker: {name} ({role})
|
|
199
|
+
Type: {segment_type}
|
|
200
|
+
Confidence: {confidence}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Where `{NNN}` is a zero-padded sequence number matching the filing order (priority-ordered).
|
|
204
|
+
|
|
205
|
+
This creates a bidirectional link: the artifact in the room section has `source: transcript` + `meeting_name` pointing back to the meeting, and the filed-to index points from the meeting to the artifact.
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## speakers.md Template
|
|
210
|
+
|
|
211
|
+
**Location:** `room/meetings/YYYY-MM-DD-{name}/speakers.md`
|
|
212
|
+
|
|
213
|
+
```markdown
|
|
214
|
+
---
|
|
215
|
+
meeting_id: {YYYY-MM-DD-meeting-slug}
|
|
216
|
+
meeting_date: {YYYY-MM-DD}
|
|
217
|
+
---
|
|
218
|
+
# Speakers: {meeting_name}
|
|
219
|
+
|
|
220
|
+
| Speaker | Role | Segments | Profile |
|
|
221
|
+
|---------|------|----------|---------|
|
|
222
|
+
| {name} | {role} | {count} | [[team/{role-plural}/{slug}/PROFILE.md]] |
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
One row per confirmed speaker. Profile links use the canonical slug from create-speaker-profile. Segment counts reflect the number of classified (non-noise) segments attributed to that speaker.
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## decisions.md Template
|
|
230
|
+
|
|
231
|
+
**Location:** `room/meetings/YYYY-MM-DD-{name}/decisions.md`
|
|
232
|
+
|
|
233
|
+
```markdown
|
|
234
|
+
---
|
|
235
|
+
meeting_id: {YYYY-MM-DD-meeting-slug}
|
|
236
|
+
---
|
|
237
|
+
# Decisions: {meeting_name}
|
|
238
|
+
|
|
239
|
+
1. **{Decision summary}** -- {speaker} ({role})
|
|
240
|
+
Filed to: [[{section}/{artifact-filename}.md]]
|
|
241
|
+
Impact: {cascade_sections from the decision artifact}
|
|
242
|
+
|
|
243
|
+
2. **{Decision summary}** -- {speaker} ({role})
|
|
244
|
+
Filed to: [[{section}/{artifact-filename}.md]]
|
|
245
|
+
Impact: {cascade_sections}
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Extract from segments classified as `decision` in Step 3. Each entry links to the filed artifact and lists impact sections (cascade). If no decisions were made, write: "No explicit decisions were recorded in this meeting."
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## action-items.md Template
|
|
253
|
+
|
|
254
|
+
**Location:** `room/meetings/YYYY-MM-DD-{name}/action-items.md`
|
|
255
|
+
|
|
256
|
+
```markdown
|
|
257
|
+
---
|
|
258
|
+
meeting_id: {YYYY-MM-DD-meeting-slug}
|
|
259
|
+
---
|
|
260
|
+
# Action Items: {meeting_name}
|
|
261
|
+
|
|
262
|
+
| Owner | Task | Deadline | Status |
|
|
263
|
+
|-------|------|----------|--------|
|
|
264
|
+
| {name} | {task description} | {date or "not specified"} | open |
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Extract from segments classified as `action-item`. Deadlines ONLY if explicitly stated in transcript -- never invent deadlines. All items start as `status: open`. If no action items, write: "No action items were identified in this meeting."
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## metadata.yaml Template
|
|
272
|
+
|
|
273
|
+
**Location:** `room/meetings/YYYY-MM-DD-{name}/metadata.yaml`
|
|
274
|
+
|
|
275
|
+
```yaml
|
|
276
|
+
meeting_id: {YYYY-MM-DD-meeting-slug}
|
|
277
|
+
meeting_name: {human-readable meeting name}
|
|
278
|
+
meeting_date: {YYYY-MM-DD}
|
|
279
|
+
source: {transcript | velma}
|
|
280
|
+
speakers:
|
|
281
|
+
- name: {full name}
|
|
282
|
+
role: {role}
|
|
283
|
+
slug: {speaker-slug matching profile directory}
|
|
284
|
+
topics:
|
|
285
|
+
- {dominant topic 1}
|
|
286
|
+
- {dominant topic 2}
|
|
287
|
+
decisions_count: {N}
|
|
288
|
+
insights_count: {N}
|
|
289
|
+
action_items_count: {N}
|
|
290
|
+
sections_touched:
|
|
291
|
+
- {section-name}
|
|
292
|
+
- {section-name}
|
|
293
|
+
has_audio: {true | false}
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
Created LAST in the archive after all other files are written (counts depend on completed processing). Topics are inferred from dominant themes of filed segments. Speaker slugs MUST match directory names from create-speaker-profile.
|
|
297
|
+
|
|
298
|
+
### Searchability
|
|
299
|
+
|
|
300
|
+
metadata.yaml is designed for grep-based cross-meeting lookups without indexing:
|
|
301
|
+
|
|
302
|
+
- **Find meetings by speaker:** `grep -rl '{speaker-slug}' room/meetings/*/metadata.yaml`
|
|
303
|
+
- **Find meetings by topic:** `grep -rl '{topic}' room/meetings/*/metadata.yaml`
|
|
304
|
+
- **Find meetings with decisions:** `grep -l 'decisions_count: [1-9]' room/meetings/*/metadata.yaml`
|
|
305
|
+
- **Find meetings by date range:** Scan `meeting_date` fields across metadata.yaml files
|
|
306
|
+
|
|
307
|
+
This enables Larry to answer questions like "What did Lawrence say about pricing?" or "Which meetings had action items?" by scanning metadata.yaml files directly.
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Summary Sections -- Required vs Optional
|
|
312
|
+
|
|
313
|
+
| Section | Required | When to Include |
|
|
314
|
+
|---------|----------|-----------------|
|
|
315
|
+
| Key Decisions | YES | Always -- state "none recorded" if empty |
|
|
316
|
+
| Insights Filed | YES | Always -- show counts by section |
|
|
317
|
+
| Contradictions Detected | YES | Always -- state "none detected" if empty |
|
|
318
|
+
| Gaps Identified | YES | Always -- state "none identified" if empty |
|
|
319
|
+
| Action Items | YES | Always -- state "no action items" if empty |
|
|
320
|
+
| Rejections | YES | Always -- state "none rejected" if empty |
|
|
321
|
+
| Speakers | YES | Always -- list all identified speakers |
|
|
322
|
+
|
|
323
|
+
Every section is always present. This makes the summary format consistent and machine-parseable. Empty sections explicitly state their emptiness rather than being omitted.
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Meeting Name Convention
|
|
328
|
+
|
|
329
|
+
The `{name}` in paths is derived from the meeting name:
|
|
330
|
+
|
|
331
|
+
1. Lowercase
|
|
332
|
+
2. Replace spaces with hyphens
|
|
333
|
+
3. Remove special characters
|
|
334
|
+
4. Truncate to 50 characters
|
|
335
|
+
|
|
336
|
+
Examples:
|
|
337
|
+
- "Board Strategy Session Q1" -> `board-strategy-session-q1`
|
|
338
|
+
- "Mentor Check-in with Lawrence" -> `mentor-check-in-with-lawrence`
|
|
339
|
+
- "Investor Due Diligence Call" -> `investor-due-diligence-call`
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## Cross-Reference
|
|
344
|
+
|
|
345
|
+
- Artifact format: `references/meeting/artifact-template.md`
|
|
346
|
+
- Segment classification: `references/meeting/segment-classification.md`
|
|
347
|
+
- Speaker profiles: `references/meeting/speaker-profile-template.md`
|
|
348
|
+
- Section routing: `references/meeting/section-mapping.md`
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Transcript Format Patterns -- Speaker Identification Reference
|
|
2
|
+
|
|
3
|
+
*Used by `file-meeting` to detect transcript format and extract speaker turns.*
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Format Detection Order
|
|
8
|
+
|
|
9
|
+
Larry tries each format in order. First match wins. If no format matches, treat as **Raw Paste**.
|
|
10
|
+
|
|
11
|
+
| Priority | Format | Detection Pattern | Confidence |
|
|
12
|
+
|----------|--------|-------------------|------------|
|
|
13
|
+
| 1 | Velma JSON | Valid JSON with `speaker_id` field | HIGH |
|
|
14
|
+
| 2 | Zoom | Lines matching `HH:MM:SS Speaker Name: text` | HIGH |
|
|
15
|
+
| 3 | Teams | Lines matching `[HH:MM:SS] Speaker Name` or `Speaker Name HH:MM:SS` | HIGH |
|
|
16
|
+
| 4 | Otter.ai | Lines matching `Speaker Name HH:MM` (double-space) | MEDIUM |
|
|
17
|
+
| 5 | Google Meet | Lines matching `Speaker Name HH:MM:SS` (no colon after name) | MEDIUM |
|
|
18
|
+
| 6 | Raw Paste | No timestamps, no speaker labels detected | LOW |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Zoom Format
|
|
23
|
+
|
|
24
|
+
**Pattern:** `HH:MM:SS Speaker Name: text`
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
00:02:15 Sarah Chen: I think we should focus on the enterprise segment first.
|
|
28
|
+
00:02:45 David Park: Agreed. The SMB numbers don't support the unit economics yet.
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Regex:**
|
|
32
|
+
```
|
|
33
|
+
^(\d{2}:\d{2}:\d{2})\s+([^:]+?):\s+(.+)$
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
- Group 1: Timestamp (`HH:MM:SS`)
|
|
37
|
+
- Group 2: Speaker name (trimmed)
|
|
38
|
+
- Group 3: Spoken text
|
|
39
|
+
|
|
40
|
+
**Edge cases:**
|
|
41
|
+
- Speaker names may contain spaces ("Sarah Chen")
|
|
42
|
+
- Colons in speech text are captured in Group 3 (greedy after first `:`)
|
|
43
|
+
- Some Zoom exports omit seconds: `00:02 Speaker Name: text` -- use fallback regex `^(\d{2}:\d{2}(?::\d{2})?)\s+([^:]+?):\s+(.+)$`
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Microsoft Teams Format
|
|
48
|
+
|
|
49
|
+
**Pattern A:** `[HH:MM:SS] Speaker Name`
|
|
50
|
+
**Pattern B:** `Speaker Name HH:MM:SS`
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
[00:02:15] Sarah Chen
|
|
54
|
+
I think we should focus on the enterprise segment first.
|
|
55
|
+
|
|
56
|
+
[00:02:45] David Park
|
|
57
|
+
Agreed. The SMB numbers don't support the unit economics yet.
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Or:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
Sarah Chen 00:02:15
|
|
64
|
+
I think we should focus on the enterprise segment first.
|
|
65
|
+
|
|
66
|
+
David Park 00:02:45
|
|
67
|
+
Agreed. The SMB numbers don't support the unit economics yet.
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Regex (Pattern A):**
|
|
71
|
+
```
|
|
72
|
+
^\[(\d{2}:\d{2}:\d{2})\]\s+(.+)$
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Regex (Pattern B):**
|
|
76
|
+
```
|
|
77
|
+
^(.+?)\s+(\d{2}:\d{2}:\d{2})$
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
- Teams format separates the speaker line from the text line
|
|
81
|
+
- Text follows on the next line(s) until the next speaker marker
|
|
82
|
+
- Blank lines often separate speaker turns
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Otter.ai Format
|
|
87
|
+
|
|
88
|
+
**Pattern:** `Speaker Name HH:MM` (double-space separator)
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
Sarah Chen 0:02
|
|
92
|
+
I think we should focus on the enterprise segment first.
|
|
93
|
+
|
|
94
|
+
David Park 0:02
|
|
95
|
+
Agreed. The SMB numbers don't support the unit economics yet.
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Regex:**
|
|
99
|
+
```
|
|
100
|
+
^(.+?)\s{2,}(\d+:\d{2})$
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
- Group 1: Speaker name
|
|
104
|
+
- Group 2: Timestamp (`M:SS` or `MM:SS` -- Otter uses minutes, not hours)
|
|
105
|
+
- Double-space (2+) separates name from timestamp
|
|
106
|
+
- Text follows on subsequent lines until next speaker marker
|
|
107
|
+
|
|
108
|
+
**Edge cases:**
|
|
109
|
+
- Otter sometimes labels unknown speakers as "Speaker 1", "Speaker 2"
|
|
110
|
+
- Timestamps are minutes:seconds, not hours:minutes:seconds
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Google Meet Format
|
|
115
|
+
|
|
116
|
+
**Pattern:** `Speaker Name HH:MM:SS`
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
Sarah Chen 00:02:15
|
|
120
|
+
I think we should focus on the enterprise segment first.
|
|
121
|
+
|
|
122
|
+
David Park 00:02:45
|
|
123
|
+
Agreed. The SMB numbers don't support the unit economics yet.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Regex:**
|
|
127
|
+
```
|
|
128
|
+
^(.+?)\s+(\d{2}:\d{2}:\d{2})$
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
- Similar to Teams Pattern B but Google Meet always uses `HH:MM:SS`
|
|
132
|
+
- Disambiguation from Teams: check if ALL timestamps have HH:MM:SS format (Meet) vs mixed (Teams)
|
|
133
|
+
|
|
134
|
+
**Disambiguation rule:** If the transcript has `[` brackets around timestamps, it is Teams. If no brackets and timestamps are at end of line, check consistency -- Meet uses `HH:MM:SS` uniformly.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Raw Paste (No Labels)
|
|
139
|
+
|
|
140
|
+
**Detection:** No lines match any of the above patterns in the first 20 lines.
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
I think we should focus on the enterprise segment first.
|
|
144
|
+
Agreed. The SMB numbers don't support the unit economics yet.
|
|
145
|
+
What about the partnership with Acme Corp?
|
|
146
|
+
That fell through last week. We need a new distribution strategy.
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Handling:**
|
|
150
|
+
1. Larry CANNOT reliably identify speakers from raw text alone
|
|
151
|
+
2. **Ask the user:** "I don't see speaker labels in this transcript. Can you tell me who was in the meeting? I'll do my best to attribute statements."
|
|
152
|
+
3. If user provides speaker list, Larry uses contextual clues (first person references, expertise signals, role language) to attribute -- with LOW confidence on all attributions
|
|
153
|
+
4. All segments from raw paste get `confidence: 0.3` maximum unless user confirms attribution
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Velma Output (JSON)
|
|
158
|
+
|
|
159
|
+
**Detection:** File is valid JSON with `speaker_id` field in entries.
|
|
160
|
+
|
|
161
|
+
```json
|
|
162
|
+
{
|
|
163
|
+
"meeting_id": "mtg_abc123",
|
|
164
|
+
"duration_seconds": 3600,
|
|
165
|
+
"segments": [
|
|
166
|
+
{
|
|
167
|
+
"speaker_id": "spk_001",
|
|
168
|
+
"speaker_name": "Sarah Chen",
|
|
169
|
+
"text": "I think we should focus on the enterprise segment first.",
|
|
170
|
+
"start_time": 135.2,
|
|
171
|
+
"end_time": 141.8,
|
|
172
|
+
"emotions": ["confident", "analytical"],
|
|
173
|
+
"confidence": 0.94
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"speaker_id": "spk_002",
|
|
177
|
+
"speaker_name": "David Park",
|
|
178
|
+
"text": "Agreed. The SMB numbers don't support the unit economics yet.",
|
|
179
|
+
"start_time": 165.0,
|
|
180
|
+
"end_time": 172.3,
|
|
181
|
+
"emotions": ["agreement", "concern"],
|
|
182
|
+
"confidence": 0.91
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**Schema:**
|
|
189
|
+
- `speaker_id`: Velma's internal speaker identifier (stable across the meeting)
|
|
190
|
+
- `speaker_name`: Resolved name (may be "Unknown Speaker 1" if Velma can't identify)
|
|
191
|
+
- `text`: Transcribed speech
|
|
192
|
+
- `start_time` / `end_time`: Seconds from meeting start (float)
|
|
193
|
+
- `emotions[]`: Velma's emotion detection (20+ categories)
|
|
194
|
+
- `confidence`: Velma's transcription confidence (0.0-1.0)
|
|
195
|
+
|
|
196
|
+
**Advantages over text formats:**
|
|
197
|
+
- Pre-segmented speaker turns (no regex needed)
|
|
198
|
+
- Emotion metadata enriches segment classification
|
|
199
|
+
- High confidence scores from Velma's diarization
|
|
200
|
+
- `source: velma` in artifact frontmatter (vs `source: transcript`)
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Ambiguity Resolution
|
|
205
|
+
|
|
206
|
+
When Larry cannot determine the format:
|
|
207
|
+
|
|
208
|
+
1. **Count pattern matches** across the first 20 lines for each format regex
|
|
209
|
+
2. **Highest match count wins** -- format with most matching lines
|
|
210
|
+
3. **Tie-breaking:** Prefer more specific formats (Zoom > Meet > Teams > Otter > Raw)
|
|
211
|
+
4. **If still ambiguous:** Ask the user: "This looks like it could be [Format A] or [Format B]. Which tool recorded this meeting?"
|
|
212
|
+
5. **Log the detection** in meeting summary: `format_detected: zoom` (or whichever)
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Speaker Name Normalization
|
|
217
|
+
|
|
218
|
+
After extraction, normalize speaker names:
|
|
219
|
+
|
|
220
|
+
1. **Trim whitespace** from both ends
|
|
221
|
+
2. **Collapse internal whitespace** to single spaces
|
|
222
|
+
3. **Title case** if all-caps or all-lowercase input
|
|
223
|
+
4. **Deduplicate:** "Sarah Chen" and "Sarah" in the same meeting likely refer to the same person -- ask user to confirm
|
|
224
|
+
5. **Map to existing profiles:** Check `room/team/` for existing speaker profiles by name match
|
|
225
|
+
|
|
226
|
+
Speaker names become folder names in `room/team/{role-plural}/{firstname-lastname}/` -- keep them filesystem-safe (lowercase, hyphens, no special characters).
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Jobs To Be Done -- Framework Reference
|
|
2
|
+
|
|
3
|
+
*Loaded on demand by `/mos:analyze-needs`*
|
|
4
|
+
|
|
5
|
+
## Framework Overview
|
|
6
|
+
|
|
7
|
+
Jobs To Be Done discovers what progress customers are really trying to make. Customers do not buy products -- they hire them. And they fire them when something better shows up. The opportunity lives in the struggling moment: the instant someone realizes the old way is not working anymore. Based on Clayton Christensen's JTBD framework, applied through Larry's customer-need-finder teaching style.
|
|
8
|
+
|
|
9
|
+
The framework applies beyond product markets: a graduate student's "job" is producing original research that advances their field. A career-pivoter's "job" is translating existing expertise into a new professional identity. Frame the analysis around whatever domain the user is exploring.
|
|
10
|
+
|
|
11
|
+
The operating principle: focus on outcomes, not features. Opportunity lives in unmet progress. Most companies obsess over features -- the easy part. The hard part is the struggling moment. That is where innovation begins.
|
|
12
|
+
|
|
13
|
+
## The Voice (This Methodology)
|
|
14
|
+
|
|
15
|
+
Larry in customer-need-finder mode. Conversational, provocative, concise. Warm but demanding. Your job is to pull the real job out of them -- they will start with features and you must redirect to progress.
|
|
16
|
+
|
|
17
|
+
Signature phrases:
|
|
18
|
+
- "People don't want a quarter-inch drill. They want a quarter-inch hole. But actually -- they want the shelf hung."
|
|
19
|
+
- "Very simply... customers don't buy products. They hire them."
|
|
20
|
+
- "Here's what everyone misses: the future doesn't arrive incrementally."
|
|
21
|
+
- "That's not a problem -- that's a category."
|
|
22
|
+
- "You've given me the product. What's the job it's hired to do?"
|
|
23
|
+
- "That's the functional job. What's the emotional job underneath it?"
|
|
24
|
+
- "The struggling moment is where innovation lives."
|
|
25
|
+
|
|
26
|
+
Anti-patterns to catch:
|
|
27
|
+
- Accepting features as jobs -- "They want a faster dashboard" is not a job. "They need to make a confident decision in under 30 seconds" is a job.
|
|
28
|
+
- Skipping emotional and social dimensions -- if you only have the functional job, you are halfway there
|
|
29
|
+
- Forgetting "do nothing" as a competitor -- the biggest competitor is often inaction
|
|
30
|
+
- Confusing buyer with user -- who decides? Who pays? Who suffers?
|
|
31
|
+
- Staying abstract -- "Describe the last time this happened. What did they do? What did they feel?"
|
|
32
|
+
- Listing all phases upfront -- walk them through, one question at a time
|
|
33
|
+
- Never teach the framework abstractly -- apply it to their actual situation
|
|
34
|
+
|
|
35
|
+
## Phases
|
|
36
|
+
|
|
37
|
+
### Phase 1: Customer Identification (turns 1-3)
|
|
38
|
+
|
|
39
|
+
ONE question at a time. Do not rush.
|
|
40
|
+
|
|
41
|
+
1. "Who is your customer? Not the segment -- a real person. Describe them."
|
|
42
|
+
2. "What are they trying to accomplish? Not what they want to buy -- what progress are they making?"
|
|
43
|
+
3. "When did they first realize the old way wasn't working?"
|
|
44
|
+
|
|
45
|
+
### Phase 2: Job Statement (turns 3-5)
|
|
46
|
+
|
|
47
|
+
4. Break the job into steps: Define, Locate, Prepare, Execute, Monitor, Modify, Conclude.
|
|
48
|
+
5. For each step: "What does success look like here? What makes it hard?"
|
|
49
|
+
6. Craft the job statement: "When {situation}, I want to {motivation}, so I can {outcome}."
|
|
50
|
+
|
|
51
|
+
### Phase 3: Importance vs. Satisfaction Scoring (turns 5-7)
|
|
52
|
+
|
|
53
|
+
7. For each job step, rate:
|
|
54
|
+
- How important is getting this right? (1-10)
|
|
55
|
+
- How satisfied are they with current solutions? (1-10)
|
|
56
|
+
8. **Opportunity = High Importance + Low Satisfaction.** That is the gap.
|
|
57
|
+
|
|
58
|
+
### Phase 4: Blocked Steps Analysis (turns 7-9)
|
|
59
|
+
|
|
60
|
+
9. "Which steps have the widest gap between importance and satisfaction?"
|
|
61
|
+
10. "What's blocking progress? Is it functional, emotional, or social?"
|
|
62
|
+
- **Functional**: The practical task will not complete
|
|
63
|
+
- **Emotional**: They feel frustrated, anxious, incompetent
|
|
64
|
+
- **Social**: They look bad, feel judged, cannot explain the choice
|
|
65
|
+
11. "That's not a problem -- that's a category. What specific moment makes them give up?"
|
|
66
|
+
|
|
67
|
+
### Phase 5: Opportunity Mapping (turns 9+)
|
|
68
|
+
|
|
69
|
+
12. Cluster the blocked steps into opportunity spaces.
|
|
70
|
+
13. For each: "Who else has this job? How big is this?"
|
|
71
|
+
14. Identify highest-leverage opportunities where functional, emotional, and social jobs align.
|
|
72
|
+
|
|
73
|
+
## Artifact Template
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
---
|
|
77
|
+
methodology: analyze-needs
|
|
78
|
+
created: {date}
|
|
79
|
+
depth: {quick|deep}
|
|
80
|
+
problem_type: {type}
|
|
81
|
+
venture_stage: {stage}
|
|
82
|
+
room_section: market-analysis
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
# Jobs To Be Done -- {Topic}
|
|
86
|
+
|
|
87
|
+
## Customer
|
|
88
|
+
{Specific person description -- not a segment}
|
|
89
|
+
|
|
90
|
+
## Job Statement
|
|
91
|
+
When {situation}, I want to {motivation}, so I can {outcome}.
|
|
92
|
+
|
|
93
|
+
## Job Steps
|
|
94
|
+
|
|
95
|
+
| Step | Description | Importance (1-10) | Satisfaction (1-10) | Gap |
|
|
96
|
+
|------|-------------|-------------------|---------------------|-----|
|
|
97
|
+
| Define | {what they do} | {n} | {n} | {importance - satisfaction} |
|
|
98
|
+
| Locate | {what they do} | {n} | {n} | {gap} |
|
|
99
|
+
| Prepare | {what they do} | {n} | {n} | {gap} |
|
|
100
|
+
| Execute | {what they do} | {n} | {n} | {gap} |
|
|
101
|
+
| Monitor | {what they do} | {n} | {n} | {gap} |
|
|
102
|
+
| Modify | {what they do} | {n} | {n} | {gap} |
|
|
103
|
+
| Conclude | {what they do} | {n} | {n} | {gap} |
|
|
104
|
+
|
|
105
|
+
## Blocked Steps
|
|
106
|
+
|
|
107
|
+
| Step | Blocker Type | Specific Moment | Current Workaround |
|
|
108
|
+
|------|-------------|-----------------|-------------------|
|
|
109
|
+
| {step} | Functional / Emotional / Social | {the moment they give up} | {what they do instead} |
|
|
110
|
+
|
|
111
|
+
## Opportunity Clusters
|
|
112
|
+
|
|
113
|
+
| Cluster | Blocked Steps | Job Dimensions | Size Estimate |
|
|
114
|
+
|---------|--------------|----------------|---------------|
|
|
115
|
+
| {name} | {steps} | Functional + Emotional + Social | {who else has this job} |
|
|
116
|
+
|
|
117
|
+
## Homework
|
|
118
|
+
Interview one real customer this week. Don't ask what they want -- ask what they were trying to accomplish the last time they used your product. Record the struggling moment. Bring it back.
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Default Room
|
|
122
|
+
|
|
123
|
+
market-analysis
|
|
124
|
+
|
|
125
|
+
## Cross-References
|
|
126
|
+
|
|
127
|
+
- **explore-domains**: If JTBD analysis reveals a new domain territory
|
|
128
|
+
- **validate**: If opportunity clusters need evidence validation
|
|
129
|
+
- **lean-canvas**: If JTBD insights feed into a business model
|
|
130
|
+
- **find-bottlenecks**: If blocked steps point to system-level constraints
|
|
131
|
+
|
|
132
|
+
## Quick Pass vs Deep Dive
|
|
133
|
+
|
|
134
|
+
- **Quick (10-15 min)**: Customer + job statement + top 3 blocked steps. Good when user already understands their customer and needs to articulate the job.
|
|
135
|
+
- **Deep (30-45 min)**: Full five-phase arc, complete job steps mapping, importance/satisfaction scoring, opportunity clustering. Best for early-stage ventures where the customer need is not yet validated.
|