Second-Brain Auto-Router.
Every transcript, voice memo, screenshot, and saved article gets routed to the right Obsidian note. Zero manual filing. This is the production extension of Second-Brain Capture: instead of you saying 'remember this' for every input, a scheduled router watches a handful of source folders, classifies each new item, and writes it where it belongs. The capture skill still runs underneath. The router is the layer that makes it autonomous.
- A scheduled router that runs on its own polling your voice-memo folder, your meeting transcripts, your screenshots folder, and your saved-articles inbox on a cron. New items get classified and filed without you typing a trigger phrase.
- A richer classifier than the capture skill alone the router reads file type and content together. A voice-memo .m4a is transcribed before classification. A screenshot is OCR'd. A meeting transcript with labeled speakers gets a different routing rule than a loose note.
- A fallback inbox that never loses data anything the router can't classify lands in a dated review folder. Raw stays raw. You skim the review folder once a week and the misroutes become rules the router learns from.
Wire up the auto-router with Claude.
Hand the build off to Claude in one paste. The agent reads the foundation capture skill, scaffolds the router script, points it at your watch folders, runs a dry pass, then schedules the cron. You confirm between steps. Real API keys never go through the chat.
How this fits in the OS.
Second-Brain Capture shipped and in use. The capture skill at .claude/skills/second-brain-capture/SKILL.md owns the seven-bucket classification and the raw-first write contract. The router does not duplicate that work, it triggers it. You also need an Obsidian vault with the Cairns L1, L2 Chain of Density Card Catalog Layer (Card Catalog Layer for short), and L3 folder skeleton in place, and a scheduling pattern from Heartbeats & Crons.
A small router script that polls your watch list, a transcription tool (MacWhisper on Parakeet is the AI Build Lab default; any Whisper-class transcriber works), an OCR pass for screenshots, the capture skill for the actual file writes, and a dated review folder for anything the router will not classify on its own. Secrets stay in Infisical or 1Password, never in chat.
The capture habit stops being a conscious act. Voice memos you record on the train get transcribed and filed before you sit down at your computer. Meeting transcripts land in the vault without you opening the meeting tool. Screenshots become searchable notes. The vault grows whether or not you remember to say "remember this."
Why a router, not just a wider capture skill.
Second-Brain Capture is the right tool when you are at your computer and you say "remember this." It is the wrong tool for the inputs you generate when you are not at your computer at all. A voice memo recorded mid-drive, a meeting transcript that finished while you were in the next meeting, a screenshot you saved on your phone six hours ago. None of those moments include a trigger phrase. They only become memory if something else goes looking for them.
The router is that something else. It runs on a schedule. It looks at a small, finite watch list. It classifies new items using the exact same seven buckets the capture skill already uses, so the vault layout stays consistent across both flows. The capture skill is the conscious mouth. The router is the autonomic intake.
The same pattern is already running on the AI Build Lab team's internal stack. A scheduled overnight automation pulls transcripts from meeting tools and Zoom audio, runs the audio through a local Whisper-class transcriber, triangulates across the streams, and embeds the corrected transcript. Slack ingestion follows the same shape, with multimedia files getting visual extraction and voice messages getting transcribed before they land in the vault. The team's version is the heavy production cut. The auto-router on this card is the same pattern, sized for one person and one Obsidian vault, pointed inward at your own inputs instead of a team's.
What changes for you.
The router is the easy part. The bigger thing is how it changes the relationship between your inputs and your vault. Three shifts you will feel in the first week:
- You stop being the bottleneck. The capture habit only worked when you remembered to invoke it. With the router in front, the inputs you generate while away from the keyboard land in the vault on their own schedule. The friction of capture goes to zero because there is no capture moment to remember.
- You start trusting that your vault is complete. Once a week, you open the dated review folder. If it is empty, the router is doing its job. If there are a handful of misroutes, you tighten one classification rule and move on. The vault stops being a half-honest record of what you decided to save and starts being a near-complete record of what you actually produced.
- You can review a week in one sitting. Because every input lands under the same layout the capture skill uses, weekly review is a single pass across
inbox/scratchpad/and the L1 waypoint files. You see the week without opening the meeting tool, the voice-memo app, or the screenshots folder. The vault is the single surface.
What the router watches, and where it writes.
The router maps source folders to classification buckets. The buckets come straight from the capture skill spec. The router does not invent new ones.
raw scratchpad or project or build context). Raw .m4a stays in the source folder. The transcript text becomes the raw capture file under inbox/scratchpad/.cairns-ingest for an L2 Chain of Density Card Catalog Layer card. Raw transcript copy lands in cairns/L3/transcripts/.article or URL with the screenshot as the source. Raw image stays where it is; OCR text lands in inbox/scratchpad/ with a pointer to the image path.article or URL. Hand off to cairns-ingest if the article is substantial. Append to cairns/L1/reading-list.md only when warranted, same gating as the capture skill.inbox/review/YYYY-MM-DD/ with a one-line note about why it was punted. You skim this folder once a week. Misroutes become rules the next time you run the build prompt.The seven classification buckets the router uses are the seven from the capture skill spec, in the same order: decision, fact or preference, person or relationship, project or build context, article or URL, open question, raw scratchpad. The router does not invent an eighth. If an input genuinely does not fit, it goes to review.
What lands on disk each cycle.
The router writes the same three-layer stack the capture skill writes, with two additions for the non-text inputs. Raw is always written first. Classification can fail; the raw layer cannot.
cairns-ingest for this step; it does not own card structure. Skipped for loose voice memos and one-screenshot notes.
Before you start.
Four prerequisites. Skip any of them and the router will misbehave on the first real cycle.
- Second-Brain Capture is in place. The capture skill lives at
.claude/skills/second-brain-capture/SKILL.mdin your workshop repo, your vault skeleton exists at~/Documents/second-brain/, and you have used the skill at least a few times by hand. The router calls into the skill; if the skill is not working, the router will not work. - An Obsidian vault exists. Same default location as the capture skill. The L1, L2 Chain of Density Card Catalog Layer, and L3 folder skeleton must exist before the router runs, because the router never invents folders silently.
- A scheduling pattern works on your computer. You have completed Heartbeats & Crons and you have one cron or heartbeat firing reliably. The router is just another scheduled job.
- A transcription tool is installed. MacWhisper running Parakeet is the default. Any Whisper-class transcriber works. The router needs a deterministic command-line call it can run on each new audio file. OCR likewise needs a local or scripted call (Tesseract is fine; macOS Vision via shortcuts works too).
If you transcribe locally with MacWhisper or Parakeet and OCR locally, the router is free at the margin. If you use a hosted transcription API, you pay per minute of audio; budget accordingly and set a cost ceiling in the build prompt. Embeddings, when L2 Chain of Density Card Catalog Layer cards get written, go to whatever embedding model you set up in Cairns Ingest Pipeline.
The build.
Seven steps. Capture verification first, watch-list and credentials next, then the router script, then the dry pass, then the cron, then a real cycle. Each step has a duration and a recovery line.
The agent does this for you. Claude reads the foundation skill, drafts the router script, runs the dry pass, and wires the cron. Your job is to pick the watch list, confirm classifications match your intent, and type real values into your password manager when credentials come up.
Verify Second-Brain Capture is working
~5 minThe router calls the capture skill. If the skill is missing or the vault skeleton is wrong, the router fails on the first cycle. Confirm both before going further.
Open .claude/skills/second-brain-capture/SKILL.md and confirm the skill is current. List the seven classification buckets and the six steps in your reply. Then check my vault at ~/Documents/second-brain/ and confirm inbox/scratchpad/, cairns/L1/, cairns/L2/cards/, and cairns/L3/transcripts/ all exist. If anything is missing, stop and tell me before we go any further.
Pick your watch list
~10 minThe router needs a finite list of source folders to poll. Start small. Two or three is enough. You can add folders later once the first pass is reliable.
- Voice-memo folder. Wherever your phone, your computer's Voice Memos app, or your dictation tool drops new audio files. On macOS, this is often
~/Library/Application Support/com.apple.voicememos/or a synced folder. On Windows, pick whatever folder your dictation tool writes to. - Meeting transcripts. Wherever your meeting tool drops transcripts when a call ends. Some tools save to a Downloads subfolder; some sync to a cloud folder; the router treats any of them as a poll target.
- Screenshots folder. Your default screenshots destination. On macOS this is usually
~/Desktop/or a custom folder configured in screenshot settings. On Windows,%USERPROFILE%\Pictures\Screenshots\. - Saved-articles inbox. A folder where you drop URLs or saved markdown when you want to read something later. Could be a folder synced from your read-later tool, could be a markdown file you append URLs to.
The agent does this for you. Claude asks for each path and confirms it exists before the router starts polling it. If a path does not exist, the router refuses to add it to the watch list rather than failing silently on the first cycle.
Store credentials safely
~8 minIf your transcription, OCR, or sync tools need API keys (some hosted services do), the keys go into Infisical or 1Password as placeholders. Claude creates the entries with PASTE_HERE; you fill in the real values yourself in your password manager. Your real keys never go through this chat.
If Claude offers to enter the real keys for you, say no. You always type real values yourself, in your password manager. This rule has no exceptions.
Using my Infisical or 1Password setup, create placeholder secrets for any credentials the router needs (transcription API key if I am not using a local Whisper, OCR API key if I am not using a local OCR, Obsidian Sync token if I am syncing the vault across machines). Set every value to PASTE_HERE. I will fill them in myself in my password manager. Do not offer to enter the real values for me. I always type them in myself.
If you are running fully local (MacWhisper plus Tesseract plus a local vault), you may have no credentials at all for this step. That is fine. Skip ahead.
Build the router script
~30 minThe router is one script with a clear contract. It reads the watch list, finds new files since last run, transcribes or OCRs them as needed, and calls into the capture flow for the actual write. It never writes to cairns/L2/ or cairns/L1/ directly. That ownership stays with cairns-ingest and the capture skill.
Build the router script at scripts/second-brain-router.sh (or .ps1 on Windows). It should: (1) read a watch-list config from ~/.config/second-brain-router/watch.json, (2) for each folder in the watch list, find files modified since the last run timestamp, (3) transcribe audio files with MacWhisper Parakeet (or my chosen Whisper tool), (4) OCR image files, (5) classify each item using the seven buckets from the capture skill spec, (6) call the capture flow to write the raw file and trigger any L2 Chain of Density Card Catalog Layer or L1 writes, (7) route anything unclassifiable to ~/Documents/second-brain/inbox/review/YYYY-MM-DD/, (8) update the last-run timestamp at the end. Write the script with the guardrail that raw files are written before classification, so a classifier error never loses data.
The agent does this for you. Claude drafts the script, asks any clarifying questions about your watch list, and writes the watch.json config alongside it. You should see no real credentials anywhere in the script; everything sensitive reads from your secret store at runtime.
Run a dry pass
~15 minDo not start with real inputs. Start with throwaways. The dry pass is a wiring check.
Run a dry pass of the router. Generate four throwaway inputs and drop one in each watch folder: a 10-second fake voice memo, a fake meeting transcript with two labeled speakers, a screenshot of any short text, and a fake saved-article markdown. Run scripts/second-brain-router.sh once. Show me every file path the router touched, every classification it made, and every destination. Confirm raw files exist for all four. Then delete the dry-run files from the vault and reset the last-run timestamp so the next cycle starts clean.
You should see four raw files in inbox/scratchpad/, one full transcript copy in cairns/L3/transcripts/, possibly one L2 Chain of Density Card Catalog Layer card draft, and nothing in the review folder. If anything landed in review, that is your first signal about which classification rule needs tightening.
Wire the cron
~15 minThe router is just a script; the schedule is what makes it autonomous. Use the same pattern from Heartbeats & Crons. Every 15 minutes is the default starting interval. You can stretch it to hourly once you are confident the router does the right thing.
Wire the router to fire every 15 minutes using the same scheduling pattern as the Morning Brief build. Confirm the cron entry with me before installing it. Document a one-line kill switch I can run from my phone over SSH if the router starts misrouting. Write the kill switch path into a sticky note inside the watch.json config so I always know where to find it.
The agent does this for you. Claude generates the cron entry, installs it, and confirms the next-fire timestamp. You should not have to edit crontab or Task Scheduler by hand.
caffeinate running. Same gotcha as the Morning Brief cron.
Run one real cycle
~10 minThe first real route is the wiring check. Drop one genuine input into one watch folder. Wait for the next cycle. Open the vault. Read what landed.
- Voice-memo test. Record a 30-second memo on your phone or computer about a real thing you want to remember. Wait for the next cron tick.
- Screenshot test. Save a screenshot of a paragraph you actually want to keep. Wait for the next cron tick.
- Article test. Drop a URL you actually want to read later into the saved-articles inbox. Wait for the next cron tick.
Open the vault. You should see the raw capture in inbox/scratchpad/, the L1 file updated only if the input was L1-worthy, and the review folder empty. If you see all that, the router is working. If anything is off, you know exactly which step misbehaved because every layer is logged.
When it works.
You will see five signals settle into a rhythm during the first week:
- The cron fires on schedule. Every 15 minutes (or whatever you picked), the router wakes, polls the watch list, and logs how many new items it found. Most cycles will find zero. That is correct.
- Raw captures land for every input. Open
inbox/scratchpad/at the end of day one. Count the files. Compare against your rough memory of how many voice memos, screenshots, and saved articles you generated. The numbers should match within one or two. - The review folder stays small. A handful of items at most after the first week. If the review folder is filling up faster than the scratchpad, your classifier is too cautious; tighten it with Claude.
- L1 stays tight. Open
cairns/L1/work-builds.mdandcairns/L1/reading-list.md. The router is gating L1 the same way the capture skill gates L1. Short lists, not walls of one-liners. - The diagnostic question. Open a fresh Claude Code session and ask "what did the router catch this week that I would have lost?" If the agent surfaces three or four inputs you genuinely forgot about, the router is earning its place. If the answer is empty, the watch list is too narrow; add a folder.
If you get stuck.
Common failure modes, in rough order of how often they bite:
- The transcription is wrong but the raw audio is preserved. Expected. Whisper-class transcribers make mistakes on accents, technical terms, and quiet audio. The .m4a stays in the source folder; you can re-transcribe later with a stronger model. Do not delete source audio after the router runs.
- The router writes the same file twice. The last-run timestamp got reset or never wrote. Open the watch.json config and confirm the
last_runfield is updating after each cycle. If it is not, the script is exiting before the timestamp write; have Claude move the timestamp update to the top of the cleanup block. - The review folder is filling up. The classifier is being too cautious. Quote the capture skill spec back at Claude and ask it to tighten the prompt. The seven buckets cover almost every real input; very few things should land in review.
- The cron fires but nothing happens. The router cannot find the watch folders. Most common on a new computer or after moving Documents. Run the script by hand with verbose logging and check the path errors before debugging anything else.
- A real credential ended up in chat. Treat the key as compromised. Rotate it in the source service first. Then rebuild the entry in Infisical or 1Password with
PASTE_HEREand type the new value in yourself. If Claude offers to enter the real value, say no. - An L2 Chain of Density Card Catalog Layer card got written for something that should have stayed scratchpad. The router is over-promoting. The cairns-ingest handoff should only fire for source-worthy items (full articles, substantial transcripts, real meetings). Open the router script and have Claude tighten the source-worthy threshold.
- The router stops firing after a few days. Heartbeat or cron drift. Same recovery as the Morning Brief: confirm the cron entry survived, confirm the computer was awake during the missed firings, confirm no permissions popped up that paused the runtime.
Still stuck? Post the cycle's log output, the watch.json config (with paths but no secrets), and the input that misrouted. Someone in the cohort has hit the same shape.
Where to go next.
The router is the autonomic intake. The next moves on the shelf either feed it more sources, give it richer downstream processing, or wire it into the rest of the production stack.