Every weekday morning, before I'm properly awake, something goes through my Apple Reminders, my calendar, two email accounts, Slack, iMessage and WhatsApp. It looks for four things: direct asks aimed at me, promises I made and never followed up on, action items from meetings, and conversations I left hanging. It scores each one by who owns it, whether it's blocking someone else, and how long it's been sitting there. Then it writes my day into a list called Today.
I built that because I kept dropping things. Not big things. The "I'll send that over tonight" kind of thing, said on a Tuesday and remembered on a Friday when someone else brings it up.

For most of my life, automation meant something much narrower than this. A cron job. A Zapier rule. If this, then that. You had to know the trigger in advance, know the action in advance, and accept that anything requiring a decision was off the table. Which ruled out almost everything I actually wanted automated, because the annoying parts of my week were never the mechanical parts. They were the judgment parts. Which of these forty messages needs a reply today. Is this email an ask or just noise.
That constraint is gone now, and I don't think most people have updated for it yet.
What I've built
The morning triage is the one I use most. It has a counterpart that runs on Monday mornings and looks backwards instead. It reads the same sources for the previous week, plus my own chat history, and works out what I actually did. Not what I planned. Replies sent, promises kept, meetings held, college work handed in. It counts reminders finished against reminders created and promises kept against promises made, gives the week a score out of ten with its reasoning, and tells me whether that's up or down on the week before. Then it publishes the whole thing as a page and emails me the link.
I built the retro because the triage told me what to do every day and by Friday I still couldn't say whether any of it had happened. The two together close a loop. One decides, the other checks.

The others are smaller and harder to make sound impressive, which turns out to be the point.
A publishing pipeline that takes any HTML page I generate, gives it a slug and puts it on my own domain, so I can send a link instead of a screenshot. A generator for the permission letters my college wants in a fixed format, which saves me twenty minutes of fighting with margins each time.
At work I've done the same thing at a slightly larger scale. Reporting that used to mean scrolling back through Slack on a weekend now assembles itself. A pile of sales research that would have been a miserable month by hand went through a pipeline over a weekend instead.
There is very little cleverness in any of this. No agent loops, barely any reasoning. Per hour spent building, they're worth more to me than anything else I've written.
None of them are products. That's the point. They're the software equivalent of a shelf you built because the room needed a shelf that shape.


What I actually learned
Access is the hard part, not intelligence
The model is not the bottleneck and hasn't been for a while. Getting at my own data is. Gmail has a clean connector. Apple Mail does not, so I drive it through osascript. WhatsApp has no personal API worth using, so I go through a CLI wrapper. Every one of these projects spent most of its build time on plumbing, and almost none on the part everyone finds impressive.
Automation you can't trust gets switched off within a week
My morning triage had a bug early on where a task I'd already completed would come back the next day. Once that happens twice, you stop reading the list, and a list you don't read is worse than no list because you think you're covered. Fixing it meant persisting completion state properly. Boring, unglamorous, and the single change that made the difference between using it and abandoning it.
The retro has the same problem in a different shape. If the score is generous, I stop believing it. So it has to show its working, and the working has to survive me disagreeing with it. A number I can't argue with is a number I won't look at.
Taste has to be written down
The triage scores every candidate task on four things: whether I own it, whether it's blocking someone, how old it is, and whether it has a deadline. Before I wrote those down I would have told you I triage by feel. Writing them out was uncomfortable, because "feel" turned out to be a small set of rules I'd never articulated, and a couple of them were wrong. But feel doesn't transfer to a machine. Rules do. I think this is going to be true of most personal automation. You will get out roughly as much as you were willing to make explicit.
Consistency beats cleverness
The tools I keep using are the ones whose output is identical every time. None of them are smart about the input. They're boringly right about the output, which is what lets me stop checking the result.
Where I think this goes
Personal automation is moving from "when X happens, do Y" to "here is my context, use judgment." That's a much bigger change than it looks like from the outside, because judgment was the reason almost nothing in a normal person's life could be automated.
Two things follow from that.
The first is that the unit of automation is becoming a written instruction rather than a script. Every tool I described above is a folder with a markdown file and maybe a small script, portable between my laptop and my phone and whatever I use next year. I write far more English than code now, and the English is still engineering. It gets versioned, it gets debugged, it fails in ways you have to reason about.
The second is that the fight ahead is about access, not capability. I can describe my weekly grocery order perfectly well. I cannot have it placed for me, because no shopping account I own offers an interface for granting a program limited authority. So the options are a browser agent pretending to be me, or nothing. That gap between what these systems can decide and what they're permitted to touch is where the next few years get decided, and I don't think it gets solved by better models. It gets solved by companies deciding whether personal software is allowed to act on your behalf.
I'm less interested in whether agents get smarter. They will. I'm interested in whether I'll ever be able to give one a scoped, revocable key to my own life the way I give one to a Postgres database.
The test I use now
Before building anything, I ask whether I'd notice if it stopped working.
For the smaller tools, I'd notice within a month and mildly resent it. For the work ones, someone else would notice, which is a better signal. For the retro, I'd notice on the second Monday, when someone asked how last week went and I had nothing. For the morning triage, I'd notice inside a day, and I'd feel it as a specific kind of low-grade dread that I've forgotten something.
That last one is the reason I keep building these. Not the time saved, which is real but modest. It's that a category of anxiety went away. I stopped holding the list in my head, because something else is holding it now, and I checked its work enough times to believe it.