

An AI content stack with no setup forgets you every session. You explain who you are again, and you repeat the same corrections. Three apps fix that: Obsidian, Wispr Flow and Claude Code, kept in git.
Together they form a harness, which is Claude plus the files it reads on startup. Those files hold your rules, your voice, your saved workflows and your progress.
TLDR
Obsidian stores every note as a plain file in a folder you own, so no company can take it away.
Wispr Flow turns speech into text about three times faster than typing.
Claude Code reads your rules and voice files before it writes, so a 20-prompt job becomes a 2-prompt job.
Give each extra tool one job and one written "never", then burn free-tier keys in order.
Keep the whole stack in git, so a lost laptop costs you one clone.

Take one 3-minute voice note and turn it into a LinkedIn post. In a bare chat, you paste your bio and your rules, then fix the tone by hand. The chat closes and the draft goes with it.
With the stack, you dictate the note into your vault and ask Claude Code for the post. It reads your voice files first and saves the draft as a file. That takes 2 prompts, and the draft is still there tomorrow.
App 1. Obsidian Keeps Every Note as a File You Own
What it does. Obsidian is a note app that stores every note as a plain Markdown file. Those files sit in a folder on your machine, called a vault.
Why it wins. If Obsidian folds tomorrow, the files stay where they are. Any tool can read them, and that includes Claude Code. People call a vault like this a second brain, which is a store of notes that does your remembering for you.
How to start. Install Obsidian and create one vault folder, for example notes. Write your first note in it today.
Tip: Put the vault in a private GitHub repo on day one. Git saves every version of a folder, so a bad edit costs you nothing.
App 2. Wispr Flow Turns Speech Into Text Three Times Faster Than Typing
What it does. Wispr Flow is a dictation app. Press a hotkey, talk, and clean text lands in whatever app is open.
Wispr Flow's own video shows spoken words landing as clean text inside other apps.
Why it wins. A 2016 study from Stanford, the University of Washington and Baidu tested speech input on phones. Speech ran about three times faster than typing. My own count passed 378,355 dictated words at 150 words per minute.
I still type almost nothing longer than a sentence. Wispr Flow sits in the Daily Driver Apps group of my tool directory, next to Granola for meeting notes.

How to start. Install Wispr Flow and dictate your first brain dump into a new note in the vault.
Watch out: Check the recording indicator before a long session. Ten minutes spoken with the recorder off are gone, because the app holds no buffer.
App 3. Claude Code Reads Your Files Before It Writes a Word
What it does. Claude Code is Anthropic's coding agent. It runs in a terminal, the text window where you type commands, and it reads files from the folder you open it in.
Why it wins. Claude Code reads your rules, your voice files and your saved workflows every time it starts. GitHub Copilot reads only the note you select, so you paste context by hand. With Claude Code, the context lives in your files, so you can swap the model and lose nothing.
Matt Gray records voice memos on a walk, Claude transcribes them, and his team turns them into posts.
The same pattern scales to large folders. Copilot still works well inside an editor, and my Copilot setup guide covers that case.
Lenny Rachitsky gave Claude Cowork a folder of 320 podcast transcripts and asked for the main themes.
How to start. Install Claude Code, open a terminal in the vault folder, and type claude. The three steps below give it something to read.
Step 1. Build the Vault and a Digital Twin Folder
A digital twin is a set of files that describes how you think and speak, so a model can write like you.
Create a folder inside the vault called
digital-twin.Write three files there:
about.md,voice.mdandaudience.md.Add
goals.md,experience.mdandprinciples.mdwhen you need them.

Keep each skill generic and keep your personality in these files. A skill that says "turn this note into five posts" then sounds like you, because Claude reads your voice file with it.
Step 2. Give Claude Code a Startup File and Save Every Draft
Create
CLAUDE.mdat the vault root. Claude Code reads this file on startup.Write five lines in it: who you are, where
digital-twinlives, and the three rules you repeat most.Turn one prompt you repeat every week into a skill. A skill is a folder with a
SKILL.mdfile that holds the prompt, when to use it and what the output looks like.Add one line to
CLAUDE.mdthat sends every draft to adraftsfolder.
A good skill also interviews you. A skill that sends a Slack message asks for the message, then the channel, then a confirmation. It cannot reach step 2 without step 1, so a lazy prompt still gets a complete job.
Drafts go to files because a chat window holds nothing after the session closes. Long sessions also compress older messages, so a draft from an hour ago can already be a summary. Copying good drafts out of the chat works for one draft and fails at ten, because the batch you skipped is gone.
A file survives the session, and git keeps its history. You can open twenty drafts side by side the next morning, so review the drafts folder once a day.
Step 3. Push the Vault to a Private Repo so It Survives a Lost Laptop
A stack you own still dies with your laptop if it lives only on the laptop. Git saves every version of a folder, and GitHub keeps a copy online.
Commit the vault, the
CLAUDE.mdfiles, the skills and a.env.examplefile that lists your key names with fake values.Leave
.env, every key and every credentials file out of git. Sign in again on the new machine.Keep your global Claude config in its own repo with a restore script. On a new machine, clone that repo and run the script.
The full backup and restore guide is in The 5 Files That Give Claude Code Permanent Memory.
One Install Line Shows a Tool Is Ready for Daily Use
Most stacks grow to 12 apps one trial at a time. I run one test before a tool gets a place in mine.
A mature tool ships a one-line install for Claude. If setup needs a chain of installs and a server you start by hand, the tool breaks on the next machine, and you rebuild it. These tools passed the test and fill the gaps around the core three:
Granola takes meeting notes without a bot in the call.
Composio connects Claude to other apps, with 20,000 free calls a month. It cannot send LinkedIn DMs.
Firecrawl scrapes, crawls and watches web pages.
Apify runs actors, which are ready-made scraper programs on the Apify platform.
Add one only when a job you do every week needs it.
A Cloud Connector Shares Its Access With Everyone on the Account
Claude can reach your other apps two ways, and the two differ on privacy.
A cloud connector is an app link you add in the Connections tab of your Claude account. Anyone who uses that account can use the connector and read what it reaches.
A local MCP server belongs to your machine. MCP, short for Model Context Protocol, is the standard way to give Claude a tool. A config file on your computer registers the server, so it goes where that config goes.
Put your personal inbox and personal files behind local MCP servers. Use cloud connectors only on an account that you alone sign in to.
The same split applies to your files. Keep a second brain and a company brain in two repos. A company brain is a repo of company skills, company voice and a README an agent can read. A good one lets a new joiner point Claude at it with zero context.
Advanced Users Give Each Job One Owner and Burn Keys in Order
Once the stack works, the next failure is overlap. Three tools that can each search the web will each get used for it, and you pay three times.
One owner per job. I run five tools for research, outreach and publishing, and each job has exactly one owner. The owners sit in my global CLAUDE.md, the startup file Claude Code reads in every project, so Claude reads them before it picks a tool.

A workflow can chain the five. Each step still has one owner, and the owner is the cheapest tool that passed a test. My GTM Toolbelt skill writes this owner list and runs the jobs at the lowest cost.

Burn keys in order. Free tiers are small. Firecrawl gives 1,000 credits a month per account, and Apify gives $5 a month per account. I keep numbered key slots per provider in one .env file, which holds secret keys on your machine and stays out of git.

Use slot 1 until it is empty, then slot 2. Round robin empties every slot at the same rate, so they all run out on the same day. A short script checks the credits in each slot and points the tool at the first slot with credits. Run it the moment a scrape fails with Insufficient credits.
Reinstall everything with one script. One setup script reinstalls every command-line tool and its MCP server. A new machine then takes one command, and so does a broken tool.
Know your load order. The load order is the sequence of files Claude reads before your prompt. It runs from the system prompt to the global CLAUDE.md, the project CLAUDE.md, the skills and the MCP tools. My harness load order post measures what each layer costs.
Each Rule Lives in One File, and Every Copy Is Generated From It
Startup files multiply. Your voice rules end up in CLAUDE.md, in three skills and in a project prompt on the Claude website. Then you fix one rule in one place.
Two hand-kept copies disagree within weeks. The agent obeys whichever copy it read last, so your fix looks like it failed. You can try to edit every copy by hand, but you will skip one the first time you edit in a hurry.
Rule of thumb: Give each rule one source file. A short script generates every other copy, and a check fails the moment a copy differs from its source.
Rented Storage Expires, so Keep the Master Copy Where You Own It
Every tool in the stack keeps something of yours on its own terms. A chat app keeps your history until you clear it or lose the account. One scheduling tool I use deletes an uploaded image after 7 days unless a post uses it.
Trusting the tool's storage fails on the tool's schedule. A plan change, a ban or a cleanup job removes the only copy, and you find out on the day you need the file. So keep the master copy in a git repo before you hand the file to any tool. Treat the tool's copy as a cache, which is a spare copy you can lose without harm.
The Three Apps Compound Because Each One Feeds the Next
Obsidian gives every note a home. Wispr Flow fills that home three times faster than typing. Claude Code reads the growing pile and writes drafts back into it, so each saved draft becomes context for the next.

Start with Step 1 today. Write about.md in your own words, then let the rest of the stack grow around it.
Five Questions New Users Ask Before They Switch
Do I need all three apps on day one? Start with Obsidian and Claude Code, because those two give you files and a model that reads them. Add Wispr Flow once you write every day.
Why Claude Code over GitHub Copilot? Copilot reads the note you select. Claude Code reads your startup files and skills on every run, so you stop pasting context.
What happens if Obsidian shuts down? Nothing happens to your notes. They are plain Markdown files in your folder, and any editor opens them.
Is a cloud connector safe for my inbox? Only on an account that you alone use. Everyone on a shared account can read what the connector reaches.
How many tools should the stack hold? Hold the core three, plus one tool per weekly job. Each extra tool must pass the one-install-line test.
Appendix. Starter Files You Can Copy Today
A five-line CLAUDE.md for the vault root:
# Who I am
I write about <your topic> for <your reader>. My voice and rules live in digital-twin/.
Read digital-twin/voice.md and digital-twin/audience.md before any writing task.
Save every draft as a file in drafts/. Never leave a draft only in the chat.
Rules I repeat most: <rule 1>. <rule 2>. <rule 3>.A .gitignore that keeps secrets out of the repo:
.env
*.credentials.json
.obsidian/workspace.jsonA .env.example that lists key names with fake values:
FIRECRAWL_API_KEY_1=your-key-here
FIRECRAWL_API_KEY_2=your-key-here
APIFY_API_KEY_1=your-key-here
APIFY_API_KEY_2=your-key-here






