My Second Brain So I Don't Lose My First One
How I built an aggressively automated knowledge system — Microsoft Graph API, Jira, Asana, and an LLM — to survive the information hellscape of running a regional technology organization.
![[second-brain.webp]] There’s an old Russian saying: “One head is good, but attached to a torso is better but two is better.”
The original is about collaboration and getting multiple perspectives. My version? “One brain is good, but a second one that doesn’t forget things at 11 PM when you need them most is even better.”
So that my fellow techie readers don’t stop here, I’ll begin opening up pieces of the source code for this one and other pet projects of mine: https://github.com/ComandanteShche/
Let’s be honest: part of a manager’s job description should just read “professional information hoarder and occasional disseminator.” The volumes we’re dealing with aren’t just leading to email fatigue – they’re an express train to Burnoutville, with scenic stops at Anxiety Junction and Psychosomatic Station.
As a regional CIO, I’m processing massive volumes of information about projects, incidents, fires (literal and metaphorical), and the daily WTF moments that make corporate life so… character-building. Sure, I have a nearly eidetic memory, but even Superman had kryptonite, and mine is apparently aging like a normal human. Rude.
Without this system, I’d be the CIO equivalent of a browser with 847 open tabs, each one screaming ‘REMEMBER ME!’ while I quietly weep into my coffee.
Enter: The Second Brain
Not the sci-fi implant kind (though I’m open to it). This is a system to offload information processing from my increasingly grumpy analog brain to something that doesn’t need coffee to function at 6 AM.
Think of it this way: your biological brain is brilliant at making connections, having insights, and creative problem-solving. What it’s terrible at? Being a filing cabinet. That’s where the Second Brain comes in – an external system that captures, processes, and resurfaces information exactly when you need it, without you having to remember that it exists.
I didn’t set out to build a “Second Brain” per se. I built this system years ago out of sheer survival instinct, long before I knew Tiago Forte had given it a fancy name and a framework (https://fortelabs.com/blog/basboverview/). Mine is just more… let’s call it “aggressively automated.”
The Information Hellscape I Navigate Daily:
- Emails (the gift that keeps on giving)
- Teams chats (where context goes to die in real-time)
- Meeting transcripts (protip: the ‘Follow’ option in Teams is absolute gold – I decline meetings where my presence is purely theatrical, but still harvest the intel like a corporate spy)
- Jira tickets (because suffering loves company)
- Asana projects (different flavor, same chaos)
- My barely readable notes in Remarkable (https://remarkable.com/, future me consistently hates past me’s handwriting) Each of these is a firehose of information. Some critical. Some noise. Most are somewhere in between. I learned this the hard way – much like the time a powerful river decided my raft looked better upside down. The challenge isn’t just collecting it – any digital packrat can do that. The challenge is making sense of it without losing your mind or your evenings.
The Automation: Where the Magic Actually Happens
Here’s where it gets interesting. I built a Python console app that automatically pulls data from all these sources. Yes, this could probably be done with Copilot Studio now, but it didn’t exist when I built mine. And honestly? This way, I get all the fun and suffering of doing it myself.
- Microsoft Graph API handles the O365 ecosystem (emails, Teams, transcripts)
- Jira and Asana have their own APIs (bless them for that)
- Everything gets collected, timestamped, and dumped into a structured format But raw data is just… raw. A 47-page meeting transcript doesn’t help me when I need to remember “wait, what did we decide about the BBVA integration?” three weeks later at 11 PM.
This is where the LLM comes in.
Every piece of collected information runs through a language model that extracts:
- Executive Summary of Accomplishments – What actually got done? Did we ship something? Fix something? Not set something on fire?
- Things in Motion – Active projects, ongoing initiatives, wheels that are currently turning (hopefully in the right direction)
- Potential Challenges and Risks – The “future problems for future me” category. Early warning systems are underrated.
- Improvement Ideas – Suggestions, optimizations, random shower thoughts that people mentioned in passing but might actually be brilliant The system doesn’t just archive – it distills. Instead of searching through 50 emails to remember what happened in that meeting, I get a clean summary that tells me exactly what I need to know.
The result?
I can ask my Second Brain: “What’s the status of the Kafka integration between Salesforce and Protheus?” and get an answer synthesized from emails, Jira tickets, meeting notes, and Asana updates – all in one place, all summarized, all making sense.
Or: “What risks came up this week?” Boom. Aggregated list from every source, deduplicated, prioritized.
It’s like having a chief of staff who never sleeps, never forgets, and doesn’t judge me for asking the same question twice.
The Human Bit That Still Matters
Here’s the thing though – automation isn’t about replacing thinking. It’s about creating space for thinking.
My Second Brain handles the “what was said” so my actual brain can focus on “what does this mean” and “what should we do about it.” The system captures the trees so I can see the forest. Or the fire in the forest. Usually the fire.
It’s the difference between spending your evening searching through email threads versus spending it actually solving problems. Or, you know, with your family. Novel concept.
The Bottom Line
Could I survive without this system? Probably. Would I want to? Absolutely not.
My sanity remains theoretical, but at least now it’s organized theoretical insanity.
THE TECHNICAL RABBIT HOLE (For the Masochists)
Now, if you actually want to build something similar, here’s where it gets spicy.
Microsoft’s metered API for pulling meeting transcripts ({userId}/onlineMeetings/{online-meeting-id}/transcripts/{transcript-id}/content) will eventually slap you with a “PaymentRequired” error. Cool. Fine. Whatever.
The real plot twist? Buried in their documentation’s “known limitations” (https://learn.microsoft.com/en-us/graph/metered-api-setup): “The target application must be a confidential client application (web application, web API, or daemon/service). Public client applications (desktop and mobile applications) aren’t supported.”
Translation: “You can’t do what you’re trying to do from a console app, peasant.”
My response: We don’t take no for an answer.
After several months of increasingly philosophical conversations with Microsoft support (sample exchange: “But why?” / “Because.” / “But…” / “No.”; love those folks, by the way – they tried their best), this beautiful *gambiarra *was born:
https://github.com/ComandanteShche/comandanteshche-second-brain/blob/main/auth.py
It lets you make those API calls from a console app anyway. If there’s an easier way, please enlighten me in the comments. I need the therapy.
Note: I’m not posting the full source code for data collection and LLM processing – any competent vibe coder can handle that part these days. The real value here is the workaround for Microsoft’s API restrictions. That said, if anyone needs more details or wants to discuss implementation specifics, drop a comment and I’d be happy to help.
GitHub repo: https://github.com/ComandanteShche/comandanteshche-second-brain