Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
72 changes: 72 additions & 0 deletions .github/workflows/casekit-audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: CaseKit PR & Package Audit

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
audit:
name: Audit Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]

steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: "pip"

- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt

- name: Run CaseKit Doctor in Strict Mode
run: python3 casekit.py doctor --strict

- name: Run Core Test Suite & Smoke Tests
run: python3 scripts/validate_suite.py

- name: Test Preset Scaffolding (hackathon-sprint)
run: |
python3 casekit.py init /tmp/test-sprint --preset hackathon-sprint
python3 casekit.py validate /tmp/test-sprint --strict

- name: Test Preset Scaffolding (corporate-launchpad)
run: |
python3 casekit.py init /tmp/test-corp --preset corporate-launchpad
python3 casekit.py validate /tmp/test-corp --strict

- name: Test Preset Scaffolding (full-deep-drill)
run: |
python3 casekit.py init /tmp/test-deep --preset full-deep-drill
python3 casekit.py validate /tmp/test-deep --strict

- name: Validate Canonical Reference Example (launch-event)
run: python3 casekit.py validate examples/launch-event --strict

- name: Validate Canonical Reference Example (airbnb-2008-pitch)
run: python3 casekit.py validate examples/airbnb-2008-pitch --strict

- name: Validate Canonical Reference Example (stripe-developer-wedge)
run: python3 casekit.py validate examples/stripe-developer-wedge --strict

- name: Test Deck Rendering
run: |
python3 casekit.py render examples/launch-event --output /tmp/launch-event.pptx
python3 casekit.py render examples/airbnb-2008-pitch --output /tmp/airbnb.pptx
python3 casekit.py render examples/stripe-developer-wedge --output /tmp/stripe.pptx

- name: Test Live Prototype Generation
run: |
python3 casekit.py prototype examples/launch-event --output /tmp/prototype.html
python3 casekit.py prototype examples/airbnb-2008-pitch --output /tmp/airbnb-proto.html
python3 casekit.py prototype examples/stripe-developer-wedge --output /tmp/stripe-proto.html
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@ __pycache__/
outputs/*.pptx
outputs/*.pdf
inputs/extracted/

.agents/
102 changes: 82 additions & 20 deletions OBSIDIAN.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,94 @@
# CaseKit in Obsidian
# CaseKit in Obsidian — No-Code GUI & Team Workspace Guide

CaseKit works as a normal Obsidian vault. Markdown notes hold the brief, decisions, integration, and narrative; CSV files hold structured ledgers; Excel remains suitable for wider financial models and imported data.
CaseKit works natively as an Obsidian vault, providing a high-performance visual cockpit for venture design, hackathons, and enterprise strategy. Markdown files maintain narrative strategy and decisions; CSV files serve as structured evidence and assumption ledgers; and Excel spreadsheets power bottom-up financial models.

## Recommended setup
---

1. Clone CaseKit and create a new workspace with `python3 casekit.py init ./my-case`.
2. Open `my-case` in Obsidian with **Open folder as vault**.
3. Keep the CaseKit repository and each competition workspace in Git separately. Do not initialise a Git repository in a parent folder that also contains unrelated personal files.
4. Use Obsidian to edit Markdown and CSV. Keep spreadsheets under `inputs/` and map only presentation-ready values into the metric tree.
5. Track every API, partner, CRM, payment, identity, or external-data dependency in `integration-contract.csv`. `Mocked` is acceptable for a demo when labelled honestly.
## 1. 1-Click Vault Setup & Community Plugins

## Updating a number
Every new CaseKit workspace created via `casekit.py init` automatically includes pre-configured `.obsidian` settings with essential community plugins.

For a direct assumption, edit the appropriate value in `02-assumptions.csv` or `03-metric-tree.csv`, then ask the AI to explain its downstream effect and run the finance/model validation.
### Quick Start:
1. Initialize your workspace:
```bash
python3 casekit.py init ./my-startup-vault
```
2. Download and launch **Obsidian** ([obsidian.md](https://obsidian.md)).
3. Click **Open folder as vault** and select `./my-startup-vault`.
4. When prompted by Obsidian, click **Turn on community plugins**.

For Excel-backed values:
### Pre-Configured Community Plugins:
- **Edit CSV (`edit-csv`)**: Interactive Excel-like spreadsheet editor embedded directly inside Obsidian for editing CSV ledgers without quotation-mark corruption.
- **Dataview (`dataview`)**: Real-time dynamic querying and summary tables for project progress.
- **Obsidian Git (`obsidian-git`)**: Automated background Git backup and push/pull synchronization for effortless team collaboration.
- **Advanced Tables (`table-editor-markdown`)**: Clean auto-formatting and keyboard navigation (`Tab`, `Enter`) for standard Markdown tables.
- **Excalidraw (`obsidian-excalidraw-plugin`)**: Infinite canvas for architecture diagrams, wireframes, and customer journey maps.
- **Advanced Slides (`obsidian-advanced-slides`)**: Live Markdown slide deck rendering directly in Obsidian.

---

## 2. Real-Time Dashboard (`00-DASHBOARD.md`)

Opening `00-DASHBOARD.md` inside Obsidian gives you an executive cockpit powered by **Dataview**:
- **🎯 Case Overview & 5-Level Funnel**: Displays case type, stage, beachhead ICP, and last modified timestamps.
- **🧪 Active Assumptions**: Filterable table of all `ASM-xxx` entries ranked by sensitivity.
- **🔍 Evidence Ledger**: Real-time triangulation status and source quality ratings for all `CLM-xxx` claims.
- **⚠️ Risk Register**: Matrix of identified business and technical risks ranked by severity.
- **📑 Pitch Deck Progress**: Slide-by-slide completion status and owner assignments.

---

## 3. No-Code Tabular Ledger Editing with Edit CSV

Non-developer teammates can edit structured ledgers without touching terminal commands:
1. In the Obsidian file tree, right-click any ledger (e.g. `02-assumptions.csv`, `01-evidence-ledger.csv`, `05-risk-register.csv`).
2. Select **Open as CSV Table**.
3. Add rows, edit Low/Base/High values, sort by sensitivity, or filter by owner in an intuitive spreadsheet grid.
4. Press `Cmd + S` (or `Ctrl + S`) to save cleanly formatted CSV.

---

## 4. 1-Click Team Cloud Sync with Obsidian Git

Collaborate with teammates without running command-line Git:
1. Open the Obsidian Command Palette (`Cmd + P` on macOS or `Ctrl + P` on Windows/Linux).
2. Type `Git: Open Source Control View` to see all modified ledgers and notes.
3. To sync changes:
- Click **Backup / Commit and Push** to upload your work to the team repository.
- Click **Pull** to fetch teammates' latest numbers and decisions.
4. **Auto-Backup**: Configure automatic background saves every 10-15 minutes in **Settings -> Community Plugins -> Obsidian Git -> Auto Backup**.

---

## 5. Visual System Architecture & Wireframing with Excalidraw

1. In Obsidian, right-click any folder and select **New Excalidraw drawing**.
2. Sketch system block diagrams, user flowcharts, or pitch deck visuals on the infinite vector canvas.
3. Embed drawings into strategy notes or pitch deck slides using standard WikiLinks: `![[architecture-diagram]]`.

---

## 6. Financial Model Spreadsheet Synchronization

CaseKit includes 5 production-grade multi-tab Excel models in `templates/financial-models/` (`b2b-saas.xlsx`, `marketplace.xlsx`, `hardware-iot.xlsx`, `d2c-retail.xlsx`, `corporate-roi.xlsx`).

To inspect or synchronize numbers into your case workspace:

```bash
python3 /path/to/casekit/casekit.py inspect-spreadsheet inputs/model.xlsx --output inputs/model-inspection.md
python3 /path/to/casekit/casekit.py sync-spreadsheet . data-import-map.json --apply --report outputs/spreadsheet-sync-report.json
python3 /path/to/casekit/casekit.py validate . --strict
# Inspect defined Named Ranges and run CFO sanity checks
python3 casekit.py inspect-spreadsheet inputs/b2b-saas.xlsx

# Sync mapped Named Ranges into 03-metric-tree.csv
python3 casekit.py sync-spreadsheet . data-import-map.json --apply

# Validate case integrity before deck freeze
python3 casekit.py validate . --strict
```

Excel formula results are read from the workbook's last saved calculation cache. Recalculate and save in Excel before syncing; CaseKit will reject a mapped formula with no cached result rather than silently use an incorrect number.
---

## Safe collaboration
## 7. Safe Team Collaboration Protocols

- Assign one owner for every `MET`, `ASM`, and `DEC`.
- Resolve merge conflicts in ledger rows before deck work resumes.
- Preserve IDs; supersede a value instead of silently reusing an ID for a different definition.
- Commit at decision locks, and attach raw research or interview notes under `inputs/`.
- **Owner Attribution**: Every Metric (`MET`), Assumption (`ASM`), Decision (`DEC`), and Risk (`RSK`) must have a clear owner.
- **Immutable Historical Records**: Never reuse or delete an ID. If an assumption changes, supersede the value or record a new decision in `04-decision-log.csv`.
- **Integrity Validation**: Always run `python3 casekit.py validate . --strict` prior to final deck freeze and rendering.
Loading
Loading