This is where it all started. A full walkthrough of the JFDI system, the AI executive assistant I built for myself using Claude Code.
I cover what the system does, how it’s organized, and why I built it the way I did. Relationship tracking, meeting prep, email drafting with safety protocols, knowledge management, and the philosophy behind keeping the human in the loop on every decision that matters.
If you’re curious what a “personal AI system” actually looks like in practice: a live system I use every day to run multiple businesses, this is the one to start with.
Full Transcript
Basically, every project management tool or knowledge management tool I’ve ever used had the same problem for me, which has got nothing to do with the features it has, but what it expects from me. I’m the worst at going in and keeping them current and up-to-date and clean and gardened and organized. I know there are folks who love to spend time on that, and it’s relaxing for them to go in and curate their Notion or their Obsidian. And there are people who will get a ton of satisfaction from checking the done box on their tasks and things like that, but for me it’s so much more functional, and therefore if it doesn’t get done, I don’t get the benefits of it.
So I’ve been playing with stuff like Claude Code for much of the year, really just to help me build internal tools and solve problems around Indie Hall. And it’s been amazing. I would say with confidence there would be parts of this year that I don’t know we would have been able to solve the problems we solved as quickly or as effectively as we did without this one tool, Claude Code, which is kind of wild.
But I’ve been working on something else that I’m excited to show you. And Claude Code lives inside of it. So Claude Code will make an appearance again in just a second, but it’s going to look pretty different pretty quickly. And that is - I want to introduce you to the JFDI system.
This is a piece of custom software that I’ve been working on. I could say all the way back to October when I started building the underlying systems in Claude Code, and then what is now December 13th. So less than three weeks of actual development building the tool that you see on my screen, that lives on top of and around and also deeply interconnected with Claude Code, which I’ll get to show you in just a second.
So this is a very new tool, but it has already had a materially positive impact on my life, my productivity, my happiness. I think most importantly, my executive function, where open loops really are a challenge for me. I struggle to delegate or just get things out of my head, because if I’m waiting on something to come back, my brain keeps coming back to it. And it’s because I don’t have a system that I trust to make sure that if the ball gets dropped somewhere else, it doesn’t make my life difficult. And that’s what I set out to build with the JFDI system.
For those of you who aren’t familiar with the JFDI thing, that’s me. That’s mine. I got the tattoo first. This could not be more deeply personal, but I’m excited to share it with anyone who might find it exciting and inspirational for how you might be able to solve your own problems as well.
So let me take you for a spin through what this tool is, how it works, and how Claude Code comes into the mix besides actually using Claude Code to build the tool. And that starts with what you see on my screen here.
I get this dashboard auto-generated for me every weekday, Monday through Friday. I might build a custom weekend dashboard now that it’s so integrated into my day-to-day, but for now it’s just a really workday-oriented thing. I get my overview where it’s taking a look at all of my systems, my calendar, my inbox, my to-dos, my tasks, my projects, relationships, meetings, things that I’m working on.
This system is able to look at all of that stuff, and using a Claude Code workflow, a slash command, and a little army of agents that I built, it goes and at 8:30 every morning generates this report for me. Initially this was just a markdown file and a little summary that I would get in Discord. Now this gets automatically saved to the system as all the data that’s needed to produce this report, and the report is even interactive now where I can check things off.
This is giving me my priorities, my recommendations for what to do and in what order. Remember what I said about the executive function part? This is helping me make those decisions. I can ignore these all I want, but it’s helping me do what I said I wanted to do without having to figure that out first thing every morning. It kind of helps bring me back to where I need to be.
It looks at my calendar, what’s coming up, what blocks of time I have to slot in work where I’m not in meetings or other commitments and things like that. I’ve got a little bit of a glimpse ahead, a snapshot of what my email looks like, not all my email, my email that needs work. I have it set up to pull anything that is time-sensitive and action-necessary first thing in the morning.
I keep a pretty tidy inbox. This tool helps do a lot of that under the hood for me now, with my custom rules. It works in tandem with Gmail’s filters to make sure that stuff that isn’t work doesn’t end up in my inbox at all, but it does end up in my life when I want it and need it.
My whole relationship system, we’re going to come back to that in just a minute. But this is like my dream CRM, built to the way that I want to actually show up in the relationships that I care about, both personal and professional.
My reminder system is a pretty straightforward reminder system, just with some ergonomics to the way I like to be reminded and the way that I typically think about the difference between a reminder and a task that’s part of a project.
And then this goal alignment is probably one of my favorite parts of the system. I spent some time early on having it interview me about what my goals were for the current period of time. I think we did a 60 to 90-day window, and it helped me determine a proportional ratio, because you can’t have everything be your top priority. So we decided: through the end of the year, 40% of my effort going into growing Indie Hall, 35% into building partnerships, and 25% into strengthening existing relationships.
Every day it looks at all of my systems that it can see. It can’t see everything, so this is not 100% holistic, but it’s like 85% holistic. And it says, “How you doing?” related to those goals. What’s cool is often I can come in here and see a bunch of overdue reminders that look scary, but this tells me, hey, those reminders you can do tomorrow to stay on track. This is what you really need to be doing.
And that, from the dream of an assistant who you wake up in the morning and your day is prepared for you, that’s what this is. And it’s been a game changer for me. That happens fully automatically thanks to Claude Code slash commands and a bunch of agents, and then everything gets saved to a database and printed out every day for me automatically. I also get a Discord message still with a summary of this so I can glance at it quickly, but then it links me directly to here.
The next part of the system related to that is reminders. I didn’t set out to build a reminders tool, but as I started building these systems connected to each other, I realized I was not already in a reminders tool. I had to go elsewhere to get one. Starting to fold some of these things in was not because I thought I could necessarily do it better. I think what I have here is a nice version of a pretty standard thing. The difference is it is directly integrated into wherever I already am. Because this app is open for me often all day, every day, my reminders are always one click away. I don’t have to open a separate tool, but also I get the opportunity to most deeply integrate this into the rest of the system however I want.
My version, again, pretty straightforward. I’ve got my anytime reminders, reminders that I know I need to do but don’t have a date on them. And then I’ve got overdue, today, next three days, and so on. It’s really easy to just add a new one based on how far out. I can add a reminder for an hour from now, or next Monday, or a custom time. Very, very easy.
You can’t see it because I’m screen sharing on my computer, but this is all mobile-first. On mobile, these panels, if you swipe them to the right, it autocompletes them. You swipe them to the left, it opens up the detail panel where you can either complete the thing or snooze it to another day. This snooze workflow is one that is deep in my life. It helps me resurface things that need doing but don’t have a particular due date, where the urgency is up to me in the moment. That’s how I use snooze quite a bit.
Again, I did not set out to build project management software, but once again I was not in love with any project management tool. Every tool I’ve ever used, I felt like failed me because it expected me to do things that software should be able to do. And it never worked for the way that I work. I work in a kind of weird way, to be fair. I know I’m not the weirdest in the world, but I’ve got multiple businesses that overlap in some interesting and unusual ways. There are some recurring collaborators in different systems. Sometimes I’ve got project management tools for two different businesses, and never mind the money waste, they don’t talk to each other. That’s very confusing and kind of a challenge.
And then also, none of these tools really help me figure out what to do next. They’re great at making me feel overwhelmed, but they’re never great at making me feel like I know what I should be doing next. So that’s what I set out to build here, and I’m going to go through this in depth in just a minute.
The calendar system is very bespoke for Indie Hall. I’m not going to spend a lot of time on it, but what I can tell you is that this centralizes events related to the events that we host, that our community partners host, as well as other things happening at the Indie Hall Clubhouse. There’s been a struggle because we have all of these calendars in different systems because they need to do different things. Keeping them in sync was a nightmare of Zapier integrations that worked some of the time, which meant I was always thinking about whether it’s working, whether it’s not, what did I forget. This solves all of those problems.
Not the least of which is one where, in order for an event in our system to be visible to the public, it needs to be on our Luma account, which is the event management tool that we use. This keeps track of that and lets me see it. Basically, if an event is green, we’re good to go. And the system is going to bubble up information and next actions for me as we go. You’ll see more of that in a second.
But if I look into January, you can see I’ve got a bunch of events that we know are coming up or committed, but are not on the public calendar yet. This is unambiguous. December, we’re good. I’ve got work to do for January, which is normal, but this is such mental balm to know exactly what’s going on here.
And then in any of these events, I can click in and get my details. Some of these are built out a little bit more, so for instance, this one tells me Neil is my collaborator. And it even keeps track of the difference between the actual event time and the time for prep and breakdown, and links to projects, which we’ll come back to in just a second.
The relationship manager part of the tool is maybe a personal favorite. What I really wanted, I’ve always wanted a CRM that was not about sales but about actual relationship building, more focused on depth than closing. And so this doesn’t look anything like that. This is really the output of the system, because the system should be largely invisible.
The system of a relationship manager is keeping track of the people who are or might be the relationships in your life, and the points of contact you have with them, so that you know if there’s a bunch of activity and you’re working together, you’re communicating, and then things fall off, that is a normal thing if you want it to be. But I don’t want to lose track of a relationship just because we’re not actively working together. And so this thing can sort of bubble things up but be smart about who it’s bubbling up in different ways, because not every relationship is the same.
There are the people that I work very closely with, the people that I work with more peripherally, the people that I work with more casually, the people I’m not working with but those are my actual friends, my partner, and they’re all intermixed. So a CRM never made sense, and a personal CRM never made sense. These are just people in my life. And this lets me view and work with all of that.
There’s not a lot to show you here other than a pretty nice file browsing view. What’s unique is it lets me sort by last contact, which is helpful in a number of ways. But I can also sort by priority, alphabetically, and it’s searchable. The cool thing about the search here, just from a data perspective, I’m not going to search here because I don’t know exactly what it’s going to turn up, since it’s not just searching names. I can search any keyword, anything across all the relationships, and it’ll filter based on those.
But the real key is that this is tied into everything else. The dashboard lets me view the rising and falling of relationships and things that might need a little more nurturing, versus opportunities and connections that it can help surface. This does all of that automatically. And the relationships database here is really largely the heart of what’s happening in the JFDI system.
The meeting system is a similar view, although the data that’s in it is very different. Relationships is basically just a pile of markdown files. The difference is that I’ve got a system now where, I’ve never been much of a note-taker except for when it matters. And the trouble is I don’t always know that it matters until after the fact. I wanted a more proactive approach to note-taking, and meetings are high value for me.
What this system currently does, and you’re not seeing the system, you’re seeing the results of the system at work. The system is invisible and therefore kind of feels like magic. What this does is it looks at my personal Google calendar, looks for upcoming events, looks at the relationships of the people that I’m in that meeting with, makes decisions about what kind of notes and how deep of a note-taking I might want to do, and creates a prep sheet. It tells me who’s in the meeting, what we’re talking about, when was the last time we met, what have we talked about, what pre-existing relationships between those people might exist.
It helps me go in with a snapshot where I can show up fully present, knowing what we’re there to talk about and not having to draw purely on memory every time I sit down, which is getting harder and harder. Not only as I’m getting older, that’s absolutely a thing, but also just my network is bigger and often I know I can picture a face but forget a name or something along those lines. And this fills in all those gaps for me.
But the more important part is that after the meeting, I press a button, more specifically, it presents a button that I can choose to press, and say, “Hey, do you have any notes on that meeting?” I can either go into voice mode and brain dump what I remember, or if I got permission to record that meeting on Zoom or with a voice memo, I can just drop that transcript in and it automatically processes the meeting that we had against the plan for the meeting that I prepped with.
The file comes out at the end with the three most important takeaways, decisions that we made, outputs that were created, commitments that were made, and so on. In my case, it automatically generates tasks and reminders in the right places for things that I committed to. It creates reminders for me to follow up on what other people committed to. Does it all automatically, all I have to do is click a button. It’s amazing.
The knowledge system here is one that was one of the first parts of the system that I built. Let me actually see if I can pull up one of the actual first notes that I made. I grabbed a podcast link, it was the Trap podcast, one of my favorite business podcasts about the music industry for the most part. And there was a quote from the guest that I thought was really cool and I was not going to write it down. So I grabbed the link later and I dropped it in the system and I said, “The guest on this podcast had a really cool decision-making framework of some kind. Can you find that and help me remember what that was?” And it pulled out exactly what it was, along with all of these awesome examples of the framework, better notes than I would have taken for myself. Pretty amazing.
The knowledge system here is kind of like your standard second brain type stuff. The difference is it doesn’t require all the human labor of figuring out where to put things, where to retrieve things. That all happens completely automatically because of the Claude Code rule set that I have built. This gets managed and curated. It’s both part of the filing and the retrieval process. Connections get made between them.
A really cool thing that happens because of the relationships database is when I drop a link, it’ll also comb through the connections that I have in my relationships and potentially identify people who I may want to flag the article for, and say, “Hey, that would be really interesting to these one to three people. Do you want to send it to them?” And it does not send it to them, it creates reminders for me. Helps me be a good friend, helps me be a good collaborator by surfacing those things and sharing them. And that all happens as a byproduct of saving a thing for myself.
The last thing, similar and kind of related to knowledge, is a spark file. Spark file is a thing that I’ve been doing for a very long time, borrowed from a book called “Where Good Ideas Come From” by Steven Johnson, one of my favorite books. The idea is that you jot down all these kind of half-baked notes and thoughts and ideas and questions, sometimes it’s somebody else’s thing, sometimes it’s your own, whatever it is. The point is more that you get the habit of writing it down. And then once in a while you go through and reread all of them, and you start noticing patterns in the things that you think to write down. That’s what it’s really about.
As I started building out this system, I was like, well, I want to move my spark file in here, because not only am I living in here so it’s always one click away, but also I can maybe start building some tools to help me increase the depth of what I can learn from my spark file about myself. That’s already starting to happen. It’s pretty cool.
So those are the main working areas. I want to go back to the project system. But before we do, I want to show you the real star of this show, and it is this little chat button. That’s it.
Let me start a new chat here real quick. This is basically one click away all the time, whether in a browser, on my computer, I have a shortcut on my phone. This is all mobile-friendly. And this is the ergonomic chat UI that I built on top of Claude Code. So everything I type in here goes to Claude Code the same way it normally would, and then it spits out its answer and it gets presented back here. On the surface, this is a pretty wrapper for Claude Code. But there’s so much more going on under the hood.
You can see I can move it into sidebar mode here as well, which I find to be pretty helpful. I might actually just go back to the homepage so it’s a little less busy. And so I can do anything that I would do from Claude Code, but remember that Claude Code instance has access to everything that we just looked at.
So back to the most basic example of knowledge management: I’ve got a link to this webinar that I got from one of my contacts at the Philadelphia Revenue Department, some stuff they’re doing to help small businesses, and I want to remember to both attend this and send this out to other folks. You notice I paste this in, it is suggesting commands. There’s not only the standard slash command autocomplete, but I have a more ergonomic autocomplete that ranks it based on the most used slash commands. I have most recently used slash commands as well as some fuzzy keyword searching. So I don’t even have to type slash, I can just type a few letters for common commands and it will automatically execute them faster.
I could say I want to attend this and remind others too.
In some cases, I would just drop a link and it would figure out what to do with it. In this case, I do have a specific thing that I want to do besides file it. And you can see that it is processing. I don’t have it saying, the little adverbs or verbs, Amy is going to kill me for getting that wrong, but the little terminology that they kind of cycle through in Claude Code, I don’t have anything that goofy, but it does show tool uses. Tool uses get rolled up in these little containers. If you’re someone who doesn’t want as much noise about the tool use, you can also collapse that.
But you can see it read the page. It looks at all the details. Four free webinars, registration link, set up reminder for the first session, and to share with others. I’ll say just remind me about the next one on Monday at 10:00 AM.
And depending on where I am, if I’m on my mobile and I’m not around other people, I use voice mode for this a lot. You can see there is actually a built-in voice mode that I have, that again has a handful of little cleanup ergonomics and things like that that I’m going to have to do a little more work on to make it work the way I want it to. But in some cases it’s better than the built-in iOS one. In other cases it’s worse, experimenting. But you can see it created my reminder and that’s it.
So it is an LLM and does still occasionally make mistakes, and I will tell you the most common mistakes it makes are around dates and times. If I do something outside of a slash command, that’s where it’s most likely to happen. If we’re talking about multiple dates, you have to be a little more specific with it. Truth is, I don’t think this is any more or less specific than you’d be with a human, where they could accidentally guess the wrong month or go backwards or forwards, those kinds of things. The difference is as I catch these cases, I can build in rules to make sure it doesn’t. So in this case, I’m going to say, “No, I mean a reminder this upcoming Monday, please.”
And it’ll go ahead and fix that.
That being said, the vast majority of what I’m doing in the chat these days is less free-form unless I am brainstorming with it, which is something that I’m doing fairly often. I will brain dump what I’m thinking, maybe for an article or a newsletter, or I need to plan a project, and instead of trying to get it all out of my head in order, I will just kind of brain dump into it and have it reorganize it for me. That is the most majority of the free-form work that I do in here.
Most of what I do that is not that is powered by slash commands. Again, a very common thing I’m doing is creating agreements for our community partners, or I’m setting up new projects. The book room command is a fun one. If I type book room and say, “Next hour,” I can either be specific about what room I want to book, or I can let it pick from my pre-registered priorities. This automatically connects to the Indie Hall room booking system and logs in as me and takes care of all of that for me.
Planning an event is a good example of one where I run a slash command and it will basically ask me for the next step based on context clues. In this particular case: is it a new event or an existing event? And I could say this is an existing event.
What it’s going to do then is hopefully go look at the database and pull a list of potential events that we could be talking about that are in progress, and I may want to pick up where we left off. Our entire event management workflow is set up like that. It’s a workflow, a set of things that usually happen in a certain order, but things have prerequisites. And so if I give it an example of an event that is in progress, it can figure out where we left off and pick up from there automatically.
Another very common one that I’m using is our newsletter. This might get goofed up because normally I don’t run a bunch of slash commands in one session. That’s one of the things that can confuse it. Sometimes I need to create a clean session just so it’s not going out of its way to interpolate facts from previous things that we did that might not actually be related.
Actually, it’s pointing out that hey, you might want to finish this. So that’s actually pretty great. We’ll start a new chat and do the newsletter command, because this is a pretty cool one and it’s one that I happen to know is in progress.
Folks may have noticed that the Indie Hall newsletter has really gotten a bit more awesome, that’s the note that I’ve been hearing in the last couple of months. That is not because this thing is writing our newsletters. This thing is helping us write our newsletters. I’ve turned our newsletter production into a workflow where once again it is doing the annoying flow plus process of looking at all of our calendars and making sure that the upcoming events for the current week, as well as the ability to look forward, are in there. If we’ve described them in the past, it can reuse the language that we used rather than generate weird garbage on its own. It follows the template.
What’s cool about using an LLM for this is, you could use a form to put in this information too. But not every newsletter is identical. They’re mostly the same, 90%, 95% the same. But the last 10% is where we’d waste a bunch of time trying to reshape the template or update the formatting, and that introduces errors. What’s cool here is I think of this process almost like one of those Play-Doh factories. You push the Play-Doh through the extruder and it comes out in a funny shape. Or maybe a less silly version: like a pasta die. My templates and my data structures are like the die, the shape that it needs to come out in. The data itself gets squished into it. And the LLM is remarkably good at making sure that all the pieces fit where they’re supposed to, without losing what was there.
That’s taken some time to make sure that it knows what not to let go of and what needs to be preserved, but it’s remarkably good at it once I got that under control. Things like event preparation, generating agreements and contracts where the vast majority of the contract doesn’t change every time but the places where it changes really matters, it’s been amazing at that sort of thing.
So you can see here where it picked up my newsletter workflow. It figured out for this upcoming Monday’s workflow, everything is done except for the essay and the subject line. And so if I was sitting down to prep for that, which I’ll do probably tomorrow or Monday morning, I will do that. There’s even some subsets of the workflow to help me gather up from a list of our content strategy ideas, the things that we want to highlight and how, and the stories that we want to tell. Basically, instead of sitting down with a blank page every week and saying, “What am I supposed to write this week?” I know what we’re supposed to write, and this thing helps me stay on track as well as figure out where it all fits in.
This chat tool, whether it’s for these pre-built workflows that are there to make us more consistent, that are keeping us from wasting time on copying and pasting or copying and then having to adapt it so I can paste it into a different system, this is not just shaving time off, and it absolutely is that. It’s making things easier and more consistent, filling in gaps, helping us not drop balls. Truly a game-changer. And again, the ability to go from newsletter mode to events, or events into reminders, and all these things being, not just technically data-connected but because the AI systems are kind of wrapped through all of them, the ability for any one to affect the others with the very specific intention that I provided is pretty amazing.
Before we move on, I want to show you just a couple of the fun ergonomic things that I built into this chat. Because this is a wrapper on Claude Code, and Claude Code is under the hood, everything that goes into the chat, every system that I’ve mentioned, I am not hitting Anthropic’s API directly for anything. Everything is going through Claude Code using Claude Code headless mode. Shout out to the Claude Code team: that is a tremendously cool and I think massively underutilized piece of the technology that you built.
The fact that I can run a single command and it’ll just go, or in this particular case I can send my request in Claude Code, get my response back, but also get back a session ID and then just keep looping, basically the next time I call it, include the session ID and it picks up where I left off. Amazing. That’s enabled so much power in my system. I’m grateful for that.
So some of the things that I really like from Claude Code, and some of the things that I was like, I can add a little bit of my own sugar on top: the to-do list manager is such a, not just cool, but smart and useful feature. Wrapping my ability to see that. You’ve already seen all the tool calls here happening. I get visibility there.
I shared this with Amy, my partner. She’s like, “This is kind of chatty.” And I was like, yeah, you can just close the tool call, and I might set a preference where those close automatically. You just see the spinner and the count while it’s going. I talked about slash commands.
Image uploads is something you can do in Claude Code. What you can’t do in Claude Code usually is see what images you have uploaded. So I get my little preview strip here. I can load in up to four images in this current moment. And it’s also something that you can drag in, that works too. It’s just niceness, quality of life stuff.
I also have this bar that pops up that lets me open preview. This is actually a thing I built for the email newsletter stuff, and that lets me see in real time while I chat with the bot to make changes that I want to make or do my rewrites.
Remind me about this chat is a thing that I feel like Claude Code should implement. Often I’m in a chat and I want to come back to it later, but I’ve got to go work on something else. Just the ability to click this and say remind me about it later today, tomorrow, next week, or custom.
Pause is a feature that I built, it’s really just a slash command that I’ve been using since I’ve been using Claude Code. It’s sort of like compact-lite, where it uses a combination of git and git commits to create a handoff to the next agent, or in this case just a clean session. It’s not taking all of the context. It’s just: how much do you need in order to pick up where we left off? Often it can be done in closer to five or six seconds instead of the sometimes 30 seconds to a minute or more for a compact to happen. I can be even faster, quick versus full. Quick Spark is my spark file entry. Again, that is basically always just a tab or two away.
And then the other things down here at the bottom that are handy: I’ve got my view of my model. This whole thing is git-backed, so any changes that are being made to text files, this lets me know what branch we’re on and so on.
One of the things I’m most proud of is, I know that context management is one of the weirder, harder parts of working with these systems and a lot to get your head around. Having a counter of how many tokens out of the token window for Claude Code sessions is useful. But being able to open it up and see what is contributing to it, Claude Code has their version of this, but you have to leave the screen to do it. This I can leave open and keep an eye on while long-running things are happening. This auto-refreshes every 10 or 15 seconds. These numbers are estimated based on token output from the actual Claude Code session logs. So it’s not perfect, and it does recalibrate periodically. But for a general glance of what’s going on, and also sometimes debugging things, like why is this chewing through tokens so quickly, this is sometimes a first point of review for me.
And then a few other little handy ergonomic things here. I’ve got this little dropdown that gives me access to my last eight or ten sessions, sorted by whatever the first thing I posted and the most recent thing is. Another nice little thing is I actually set it up where if I click this little sparkly line, it uses the Haiku model to write a better description. So this one says, instead of the first sentence of what it was, it says “change chat UI from close button to minimize”, which is this up here, because what that actually does is minimize it down to there. You can also rename those chat sessions manually, create new ones, and so on.
There are a handful of other things that are fun, nice-to-have quality of life stuff that I’ve built, and we’ll come back to that in a second. But the last thing I really wanted to show you is how this tool, and the combination of custom software integrated with a chat tool that I’m also using to build the system itself, resulted in the project management tool.
Like I said, I did not set out to build a project management tool. But once I was in here, I was like, well, rather than try and have it wrap around another tool that is not actually ideal for my world, which is again a little bit weird, what would a basic but maximally useful project management tool look like? So I built my dream project management tool. I’ve been working on this for about a week.
The quick overview is that it’s broken down into three main categories. There’s life, the 30,000-foot view. Project, the 10,000-foot view. And the now view, which is on the ground, and this is one of my favorites.
If we start from the top, the life view, these are my spaces. Andy is the underlying AI systems that power JFDI. Indie Hall is all the project-related work. Stacking the Bricks is my business with Amy. 10,000 Independence Project, right now we’re doing some important advocacy work. And of course, personal projects as well. Those are pretty straightforward, very easy to add new ones. And ultimately I probably won’t be adding a lot of new ones because these are really the containers for most of what I’m working on in my life. I might close one down and open up another one, but this feels like a good starting point.
The work streams section down here is a way for me to thread through projects and tasks and people across spaces. Because sometimes I’m working on things that are both Indie Hall and 10K, or Stacking the Bricks and 10K, or all three, or Indie Hall and Andy. Being able to have those connected in one unified system where there are recurring people and collaborators, there are recurring tasks, having those isolated just into projects or even spaces is limiting in the way that I work. Work streams basically solves that for me.
The project section is really the overview of all the things that I’m working on, broken down by active focus, on deck, growing, and then on hold as well as completed projects. This just lets me at a glance skim, search, and sort.
By default, and this is one of my favorite things, I’m sure it has to exist somewhere but I’ve never seen it, by default this sorts projects by the next action. So it’s looking not at what has the most tasks, but at the next task that needs to be done in that project and its due date, and sorting that to the top. Because that’s really what you’re normally looking for. Most often I’m looking for what needs to happen next, and anything else beyond that is probably just beyond that horizon and sorts appropriately. But if there’s another specific way I want to sort, alphabetical, based on the full project deadline, how recently it was touched, whether it’s overloaded, there are little algorithms in here for each of those variations that I worked on with Claude Code. Come up with the rule set and then build it in. It’s fast switching between them. Sometimes I’ll just switch between them to see what the world looks like from a different filter view.
You can see obviously I’ve got the project itself, the space that it’s based in, whether or not it needs attention and health, we’ll come back to that in just a second, what percentage of the tasks inside of it are done, my little count, and if the project itself has a due date, that will show as well.
I found myself going back and forth between a project and its tasks, and while you can see it’s pretty fast, so fast that there are some render glitches that I need to figure out how to compensate for, I don’t want to have to go back and forth just to do that. So what I have it doing is showing a little stack of the tasks in that project with the first one peeking out, just so at a glance I can see. But if I click it, I get the full list coming out. We’ll talk about what these little colors are in just a second. Click again makes that close, or I can click on another one and they expand between them. It’s really handy for having a sense of what I’m supposed to be doing next, that’s really how I think about where we’re headed in this project.
Going into the details real quick, again, you’ve got a lot of the same stuff from that top view at the top here, as well as things like planning notes and then the tasks themselves. I mentioned those little colored dots. Those are related to these dropdowns, which are an energy type. These energy types are currently being guessed by the system using Haiku. It’s doing a pretty good job of bucketing these.
Where this becomes useful you’re going to see in a second, but I find it a really useful layer on top of the usual priorities, although that is in there as well, and then of course the due dates, which you can clear, kick out 7 days, or choose a manual date just the same.
Other projects, this is pretty straightforward, like a catch-all bucket for Indie Hall related tasks. But if I come into something that’s a little more sophisticated, like this advocacy project that I’m working on, that is not just buckets but actually has things broken out into phases. Inside of here I’ve got my notes and all of those kinds of things.
The other thing that’s really cool in here is that event projects are tied to our events. For instance, if I come into this project that I just set up for this series, we’re going to be continuing working with our friend Maris. This shows a link between the project and the event, because not every event in our system has a partner. But if an event does have work to be done around it, we view ourselves not as a “here you pay for a date” situation. We see ourselves as active collaborators making sure that event is successful, and ideally growing the event, its impact, and its community together. And so this becomes the place for that work, and it gets broken down into phases and all of those kinds of things.
For events, we’ve got that entire event production workflow deeply integrated so that every event gets set up not identically but correctly for the kind of event or event series that it is. Super helpful.
And if I come into some of our others, you can see for instance in this one the agreement stage we’re in, I sent out an agreement, the agreement is sent, and in fact I happen to know that the agreement here was paid but I have not built the system to automatically update that yet. That is in the works.
So that’s the overview of how this works. Again, it’s projects and tasks. Tasks can be broken down into phases, and even within them you can reorder them. I can come into any of these tasks and move a task to a different phase. All that is there and super useful. If I wanted to change this from active focus down into one of the other stages, I could do that manually.
You get the drift. What all this is building towards is my now screen. And this is really where I go to get work done when I’ve cleared the deck of all the things to react to and it’s time to pick the next thing to work on. This helps me do that.
Now shows, for each active project, anything that is overdue or due today, followed by up to three undated tasks that I can pick from. I found that showing just one, I’d feel kind of pigeonholed and be like, well, what else is there? But up to three, any one of those, because they’re ordered, would be good to do next.
What’s really cool about this is not only does it zero in on what you need to be doing right next, I can approach this based on my mood and energy. If I’m feeling unmotivated but I’ve got to get something done, I’ll sort by quick win and look for things that I can do there. If I’m feeling super creative, I can look at what I can point that at right now. If I’ve just completed some deep work and maybe want to do a little bit more, I come in here and grab that. It lets me approach the work that needs doing intentionally. That’s how work gets done.
This is already starting to really reform how I map out my day. My day used to be very reactive to my energy. This is now allowing me to be proactive while using my energy as a tool rather than as a constraint. It’s been next level. It’s so cool.
There’s a bunch of other cool stuff under the hood that I can show you real quickly. In the account settings, this system does have a light mode. I happen to find myself using it in dark mode, but I even built in a little auto mode so it’ll automatically switch into dark mode if you’re in light mode as the sun goes down. It’s tied to actual location data.
There is some audio feedback both for the voice mode as well as when the agent is done. Often I’ll have multiple sessions going on in the background. A cool little quality of life thing that I have is it will make a very subtle sound, which I can also turn off, when the agent is done and ready with the next action. And it flashes a little thumbs up emoji in the tab navigation for the tab that is ready for next action. So even if I’ve got 10 tabs with JFDI doing stuff, I can see who’s got a thumbs up, that agent is ready for my next action.
You may have noticed in the background of the chat these squiggly little lines. If you don’t like them, you can make them go away. You can change them to dots or crosshatch, whatever it is. This is a fun little quality of life thing, and so on and so forth.
If that wasn’t enough, I got a little nuts with my admin too, because I was spending more time in here and finding myself being annoyed whenever I had to go into a command line, especially if I’m on my phone, just to see what’s going on in the system or maybe debug things. And I still can and I still do, but it’s less and less because of the tool set that I’ve built out here.
This includes, at the overview here, a little health snapshot of all the systems that are working automatically under the hood. There’s a bunch of jobs that are synchronizing data from outside systems. I’m not going to click into that because I don’t necessarily want to share exactly what I’m syncing with, but those are monitored in there. A whole job queuing system. My MCP server health and management happens inside of here. Stuff is containerized and that gets monitored, health and all those kinds of things, super helpful too.
Memory: I was playing with Claude mem and I liked it, but I’m pretty sure I’m going to build out my own memory system that is based on the way I work versus something fairly generic. That’s going to live in there.
Claude sessions: I actually clean up the JSONL files that Claude uses to manage all of its sessions every week, but I backfill them directly into the same database that the rest of the system works in, so that I can do some analysis and search across them and surface useful patterns. That is actually the first layer of a memory system that I’m not tapping into quite as much as I know I can.
If I come into this, it can show me, currently there’s only one Claude Code app instance that is still holding memory and stuff like that. That’s handy. This lets me search across all my sessions. It breaks them down automatically by these types, which is all automatically done by Claude Code. That data was just in there. This is more for debugging, but I want it to be part of the memory system going forward.
About a week ago, I got to the point where I was kind of losing track of my token usage, and I had my first like thousand-dollar week of Claude Code Max overages. And I was like, that’s fine, it was worth every penny of what I was spending it on, but it would be useful to know what’s going on. I went and found some open source tools, learned from how they work, and built my own way of analyzing the token usage.
Now keep in mind, a lot of these cost numbers are not accurate because I’m on a Claude Pro Max plan. I’m pretty sure this estimate is not 100% correct based on a number of other factors. But even if it is, that’s not coming out of my pocket, it’s included in my Claude Pro Max account based on my weekly and daily usage. But this lets me get a sense of what includes are adding up to that token usage, what tools are adding up to that token usage, what some of the most expensive sessions are. And so as I am looking to trim down token utilization, this will be one of the first places that I go to do it. Being able to find sessions that used more tokens than usual, how many more tokens and why, that’s a fun one.
And then I mentioned that slash command system earlier. This is where all the slash commands get registered, but also it keeps track of them so I can see the actual slash command itself. You can see my morning overview command, the one that generates my home view, my dashboard. This is the whole thing. I’m going to scroll by really quickly, but you get the sense. And you can see since I installed this, it has been used 18 times, last on the 12th, which was yesterday. I can sort these by most used, most recently used, and all of those kinds of things, which is proving itself useful in making me fast in the system.
That I think in just under an hour is a tour of one of the coolest things I’ve ever made for myself. And I think that’s the key, I made something that I never thought I could make. These tools enabled me to make it and have materially changed how I feel about my work and how I move through my day. And pretty soon I’ll be able to invite some of my teammates and collaborators into parts of this app as well.
The reason I’m sharing this is because when I see all of the conversations about AI stuff on the internet, it’s a lot of hard lines. This is good, this is bad, this is not useful, this is useful. There’s a lot of hype, there’s a lot of hyperbole. I just wanted to share my own experience, because I get the sense that in some ways it’s unique, but in other ways it might be the thing that makes people take a different look at some of this stuff.
Because I’m not in this to build software. The fact that I used to build software gave me a set of understanding and skills and tools, but I hadn’t used them in 15 years. And Claude Code kind of gave me a renewed, not just ability, but excitement, to use those skills again in new ways. To build something that I’m really proud of and excited to use every day. And I can’t remember anything, at least not in a long time, that has given me that before.
So I’m going to keep working on this because I’m using it every single day and I’m looking for ways to make it better. I’m looking for ways to integrate it into more parts of my work in ways that it doesn’t do, like it doesn’t do the work for me, but it helps me do the work better, faster, and more consistently. It helps me show up for people better and more consistently. It helps me have better ideas of my own rather than feeling like I need to rely on it for ideas. It just helps me stay organized and on game. And that is what I think a great executive assistant does, in addition to being there as a real person.
I still would like to have a person like that in my professional life, but I also have great collaborators in other ways. So maybe I don’t need that. I’m not sure.
One of the good news parts is like, almost everything of meaning that this system does is basically a giant SOP or collection of SOPs. I found that it’s very good at writing instructions better than I’ve ever been. So if I get to a point where I do actually hire an executive assistant, I will hope that they will want to use this tool because it will help them be better at whatever it is they’re doing for me. But also, I can use this tool and its SOPs to teach someone else how to manage my work and my life, which I think is a big part of the challenge I had in the previous attempts I’ve made at trying to hire an assistant.
So this has been a learning experience for me across the board. It’s been fun to get back into software engineering. Been fun to learn new tools. It’s been fun to solve my real world, everyday problems. Some of these problems that are solved in this system, I will say I didn’t just solve them, I super-solved them. And they’re problems that I’ve been complaining about for like 20 years, looking for a tool to do X. Now I not only have a tool that does that, I have it doing it in exactly the way that I want it to, and not in isolation of all the other things that I do and need to do and work with.
So ask me questions and let me know what you think. Thanks for watching and I hope you have a great day.