Files
SecondBrain/Bootstrap script for this vault.md
T

7.6 KiB
Raw Blame History

Use this bootstrap-vault.sh:

#!/bin/bash

set -e

echo ""
echo "======================================"
echo " SecondBrain Vault Bootstrap"
echo "======================================"
echo ""

folders=(
  "00 Inbox/MeetMic"

  "10 Knowledge/CTO Academy/Data"
  "10 Knowledge/CTO Academy/Project Management"
  "10 Knowledge/CTO Academy/Infrastructure"
  "10 Knowledge/CTO Academy/Security"
  "10 Knowledge/Quotes"
  "10 Knowledge/Templates"

  "20 Work/Contracts/Active"
  "20 Work/Contracts/Archive"

  "20 Work/Decisions"
  "20 Work/Ideas"
  "20 Work/Journal"
  "20 Work/KPIs"

  "20 Work/Meetings/Internal"
  "20 Work/Meetings/Vendors"

  "20 Work/Projects"
  "20 Work/Team"
  "20 Work/Tracking"
  "20 Work/Weekly Review"

  "90 Archives"
)

for folder in "${folders[@]}"; do
  mkdir -p "$folder"

  if [ ! -f "$folder/.gitkeep" ]; then
    touch "$folder/.gitkeep"
  fi

  echo "✓ $folder"
done

echo ""
echo "Vault structure created."
echo ""

echo "Important:"
echo "- Employee folders under 20 Work/Team are created dynamically by Templater."
echo "- Month folders under employee 1-1 folders are also created dynamically."
echo "- Templates themselves should already exist in Git under 10 Knowledge/Templates."
echo ""

echo "SecondBrain bootstrap complete."
echo ""

Save it as:

scripts/bootstrap-vault.sh

Then:

chmod +x scripts/bootstrap-vault.sh

And commit it.


For the README, Id use something like this:

SecondBrain

Personal work and leadership knowledge system built with Obsidian.

The vault is backed up through Git and a private Gitea repository.

The goal is to make the environment easy to restore on a new computer with minimal manual reconstruction.


Quick Restore

1. Clone the vault


git clone <GITEA_REPOSITORY_URL>

cd SecondBrain

## 2. Restore the folder structure

./scripts/bootstrap-vault.sh

## 3. Open the vault in Obsidian

Open Obsidian and choose:

**Open folder as vault**

Select the cloned `SecondBrain` directory.

---

# Required Obsidian Plugins

Install and enable:

- Templater
- Dataview
- Obsidian Git

Check `10 Knowledge/Templates` for the templates used by the system.

Important machine-specific Obsidian files such as `workspace.json` are intentionally not synchronized.

---

# Vault Structure

00 Inbox/

└── MeetMic/

  

10 Knowledge/

├── CTO Academy/

├── Quotes/

├── Templates/

└── Principles.md

  

20 Work/

├── Contracts/

│   ├── Active/

│   └── Archive/

├── Decisions/

├── Ideas/

├── Journal/

├── KPIs/

├── Meetings/

│   ├── Internal/

│   └── Vendors/

├── Projects/

├── Team/

├── Tracking/

└── Weekly Review/

  

90 Archives/

Employee and monthly 1-1 folders are created dynamically by Templater.

Example:

20 Work/Team/

└── Employee Name/

    └── 1-1/

        └── 08/

---

# MeetMic Integration

MeetMic is used for local meeting transcription and/or summaries.

MeetMic should output Markdown or transcript files into:

00 Inbox/MeetMic/

The Inbox is intentionally a temporary landing area.

After reviewing a MeetMic note:

- move useful meeting information into `20 Work/Meetings`
- extract decisions into `20 Work/Decisions`
- extract action items into Jira, Twos, or Monday
- delete/archive the raw MeetMic output when no longer useful

## MeetMic machine setup

MeetMic itself is not stored in this vault.

On a new computer:

1. Install MeetMic.
2. Configure its output folder to point to:

<VAULT_PATH>/00 Inbox/MeetMic

3. Confirm Markdown output is enabled.
4. Test with a short recording.

---

# Contract Processing Integration

Contract PDFs are deliberately NOT stored inside the Obsidian vault.

The local contract processor lives separately, typically at:

~/Herd/scripts/obsidian-contracts

Expected source structure:

obsidian-contracts/

├── Algolia/

│   └── 2024/

│       └── contract.pdf

├── Directus/

│   └── 2026/

│       └── contract.pdf

├── process_contracts.py

├── prompt.md

├── .env

└── logs/

The vendor folder name is the canonical vendor name.

Example:

Directus/2026/

will generate:

Directus - 2026-2027.md

even if the contract itself names TFO as the purchaser.

Generated contract notes are written to:

20 Work/Contracts/Active/

---

# Contract Processor Requirements

## Python

Create a virtual environment:

cd ~/Herd/scripts/obsidian-contracts

  

python3 -m venv .venv

source .venv/bin/activate

Install dependencies:

pip install requests python-dotenv

## PDF extraction

Install Poppler:

brew install poppler

This provides:

pdftotext

## Local AI

Ollama is used for local contract extraction.

Install Ollama and confirm:

ollama --version

The current contract model is:

contract-reader

Example base model:

qwen3:1.7b

The dedicated model should use a limited context to avoid excessive memory usage.

Example Modelfile:

FROM qwen3:1.7b

  

PARAMETER num_ctx 4096

PARAMETER temperature 0.1

PARAMETER num_predict 1200

Create it:

ollama create contract-reader -f Modelfile

---

# Contract Processor Environment

The local `.env` file is NOT committed to Git.

Example:

OBSIDIAN_VAULT="/Users/YOUR_USER/Documents/Obsidian Vault/SecondBrain"

CONTRACT_OUTPUT="20 Work/Contracts/Active"

  

OLLAMA_BASE_URL="http://127.0.0.1:11434"

OLLAMA_MODEL="contract-reader"

  

MAX_CONTEXT_CHARS="5000"

Then process one contract:

python3 process_contracts.py --folder Algolia/2024

Force regeneration:

python3 process_contracts.py --folder Algolia/2024 --force

---

# Contract Processor Behavior

The processor:

1. extracts PDF text locally using `pdftotext`
2. reduces the contract to important sections
3. sends only those excerpts to local Ollama
4. extracts commercial and renewal information
5. validates important renewal clauses against the actual PDF text
6. creates an Obsidian Markdown contract record

Nothing is intentionally sent to a cloud AI provider.

Important renewal fields include:

auto_renewal

renewal_term_months

customer_notice_days

vendor_notice_days

notice_deadline

renewal_increase_percent

renewal_pricing_rule

The generated note also contains source evidence from the PDF.

---

# Git Ignore

Recommended `.gitignore` entries:

# macOS

.DS_Store

  

# Obsidian machine-specific state

.obsidian/workspace.json

.obsidian/workspace-mobile.json

  

# PDFs should never be stored in the vault repository

*.pdf

The contract automation repository should additionally ignore:

.env

.venv/

logs/

token.json

credentials.json

*.pdf

---

# What Is NOT Backed Up By This Vault

The following must be restored separately:

- Ollama models
- MeetMic application/settings
- contract PDFs
- `~/Herd/scripts/obsidian-contracts` unless stored in its own private repository
- `.env`
- authentication tokens
- local application settings

---

# Recommended Recovery Strategy

Maintain two private Git repositories:

SecondBrain

└── Obsidian content, templates and structure

  

obsidian-automation

└── scripts, prompts, Modelfiles and setup documentation

Never commit:

- contracts
- PDFs
- secrets
- `.env`
- authentication tokens

---

# Recovery Checklist

After moving to a new computer:

- [ ]  Install Git
- [ ]  Clone SecondBrain from Gitea
- [ ]  Run `bootstrap-vault.sh`
- [ ]  Install Obsidian
- [ ]  Install Templater
- [ ]  Install Dataview
- [ ]  Install Obsidian Git
- [ ]  Configure MeetMic output
- [ ]  Install Python
- [ ]  Install Poppler
- [ ]  Install Ollama
- [ ]  Restore/create `contract-reader`
- [ ]  Clone/copy contract automation scripts
- [ ]  Recreate `.env`
- [ ]  Test contract extraction
- [ ]  Test Git pull/push