I've been using read it later apps since maybe 2010. RIP Pocket ✌️. The category went stale and lost steam until Readwise Reader spun up. It's the best version of that type of tool that I've ever tried. They have always leaned into AI tooling to make it even better. Being able to save a YouTube video and read its transcript has been a fantastic unlock for me. For some reason I've never been the type to spend hours watching YouTube videos.
My problem was saving is easy and reading is not. At the start of this project my Reader inbox had 864 unread items in it, sitting on top of a much bigger archive.
Listening to an episode of Intelligent Machines featuring Nicholas De Leon inspired a perfect use case for AI loops. One to finally get me some value out of the decade-plus use of read it later apps.
In the episode Nicholas talked about how he installed OpenClaw, the open-source agent everyone was talking about, mostly to see what he could do with it. The fruits of his experimentation became the Tucson Daily Brief. It pulls from a few dozen local news sources and public records, captures the audio of city and county meetings as they stream, transcribes it, and drafts news stories from it. Every morning it publishes an audio brief read in a clone of his voice, all for something like forty dollars a month. None of that information was secret. It was public, it just took more time to keep up with than anyone had. That sounded a lot like my reading library.
I still can't believe it took me so long to realize that I can plug Reader into Claude or ChatGPT through either Readwise's MCP server or CLI. Now I can offload managing my backlog of documents to an agent! The first thing I toyed with was having it go back through my backlog to tag stuff appropriately, which has been great. Then I realized that what I really wanted was to synthesize a bunch of different articles that share themes or ideas, which could be incredibly useful to me and interesting to read or listen to. I decided to try the Cowork scheduled task tooling.
After a little bit of prompting and experimentation I now have a workflow that pulls from my backlog of articles, tweets, and YouTube videos to figure out what might be interesting to compare. Then Claude will synthesize a daily brief. After listening to a couple of these, I realized other people might find value in them too. Anyone can have Claude do this, but not everyone has the same back catalog I do. And isn't that what matters now, the data you have access to, not the processing of it?
Finally, a newsletter
LINKWhat better way to share these briefs than a newsletter? I have been wanting to have a real newsletter for at least a decade. I used to have one that I would send to my friends: memes I found, webcomics I liked, interesting videos. Then at some point my interests moved on. Once I had kids I had no more time for that kind of stuff.
What I would spend my precious little time consuming was much more practical after kids.
- Learning everything I could about how to be the best dad for my kids.
- Growing my knowledge and expertise on being an effective and competent technical leader.
- Staying current on health trends that would have the highest impact on my ability to stay fit and healthy in the most chaotic time of my life.
So I reframed the workflow and DadLiftCode: the newsletter was born.
The best things come in threes
Pulling from my backlog a rotating lineup of interesting tidbits from what I'm learning about.
Rough edges
LINKThe first few runs of generating the content were very much written to me. Claude would talk to me directly, and even give me a hard time about how many articles I'd saved, or how many times I'd saved the same article, without reading any of it. Funny once. Not something to send to anyone. So I workshopped the prompt in a regular Claude chat.
Then I remembered the chat side of things has come a long way, and started applying some lessons I've learned using AI coding harnesses. I split the work across specialized agents, giving each a focused job and only the context it needed. The result was a virtual newsroom, run by an editor handing out jobs.
One automated run, three times a week. The editor made all the calls.
The first phase consisted of a scout skimming a bunch of docs to create summaries, and a team of proposers to pitch ideas in isolation. Then back to the editor to pick the theme. The next phase was a researcher scanning the library for the best sources, an analyst to deeply read the sources, and a critic to attack the premise. The editor took it from there to write up the actual issue. The final pass was a checker making sure there were no problems with links, quotes, or bibliography.
I also realized that to get the most out of this setup, I needed to open up the entire catalog including the RSS and email newsletter feeds. Not just things I saved and never read.
Escape from uncanny Valley
LINKI gave this setup a month to see if it was going to do what I wanted. At first it seemed like it did, but then it became blindingly obvious that something about it was getting the writing stuck in a predictable rut. Always two sources disagreeing, and they all sounded so clinical. Here's how an issue generated in September opened:
Ask two parenting experts how to raise a resilient child and they point in opposite directions. One says the danger is comfort: rescue a child from every failure and you raise an adult who cannot cope. The other says the danger is pressure: pile on hardship and expectation and you raise an anxious striver who measures himself by his last result.
I never asked for the debates. Several rules each nudged that way. Contradiction pairs were ranked as the strongest kind of issue, the critic went hunting for disagreement, and the editor was told to say which side had the better argument. So, time for a reset.
Your mission is to critically examine with fresh eyes everything to do with building this brief that exists right now. Then see what improvements can be made.
This has been an experiment so far and there have been no newsletters sent yet, so I'm considering resetting everything to free up what has been used so far for the newsletters to be retread with better models and a better prompt. Maybe splitting parts of the prompt and having subagents fetch their prompt from that to control the context of the main agent.
Be creative and think differently. The goal is to regularly produce compelling, fun, and informative newsletters. The more that can sound like me the better
After some back and forth I had a much more robust setup that will hopefully keep things interesting for a while. Instead of everything happening in one big run, there is a split, with me in the middle.
Sunday pitches, my pick, Monday writing. Fewer manufactured arguments, more editorial control.
Sunday pitch run: scout for the digest of promising material, proposers to pitch one issue with a format, and an editor to send me the pitches.
I can pick which I want in the scheduled run chat.
Goodbye debate club! There are now six formats, and the default is the Explainer: one idea taught from the best things I saved on it. The Showdown, two sources that disagree, is allowed at most once a month. The researcher also checks the web for updates and corrections now, which matters a lot when so much of my training archive dates from 2007 to 2016.
The prompt moved too, out of the scheduled task and into a special project this whole thing inspired 🤫. Each agent reads only its own brief, and I can change one line instead of replacing a whole prompt.
Then the Monday write run:
- Researcher - builds the source base and checks updates
- Analyst - deeply reads primary sources
- Critic - tests the main claim
- Editor - writes the issue.
- Checker - checks claims, quotes, links, and sources
- Line editor - only gets the finished draft and works on the prose
- Character critic - checks draft against the narrator’s voice
Finding a voice
LINKThose last two reviewers are there to make sure the text has a voice instead of being so bland. V2 is not meant to hide that it's AI writing, I want people to know that the text is all generated. I can still try to give it some personality modeled on mine: sincere, a bit nerdy, and calm dad energy.
My first attempt at a character, a persona called the Spotter with a catchphrase and a dad-joke quota, lasted exactly one issue that opened with:
Backlog: 864. It'll keep.
It closed with "That's the week. The backlog will be right here," and somewhere in there it called dependency updates "the dad jokes of software." Everything was awkward and forced. I described the character as a list of features instead of a way of talking.
Spotter: The one miss wonder
The rewrite describes how the narrator sounds and gives it example lines to live up to. Here's the same issue, same facts, after the change:
This week Rami highlighted a few lines from a podcast and tagged them for this newsletter, which is about as close to a request as I get. I'm glad he did. They get at something a lot of engineering teams are figuring out right now: where AI agents help most.
The second v2 pitch I picked was about kids and chores, and the researcher noticed on its own that a previous run from September had already covered the same ground. It went ahead with a new angle: checking a 2012 dad's guide to chores against what we know now. Here's how that one opens:
A toddler who wants to help is usually a toddler who slows everything down. The milk gets spilled, the towels get folded into lumps, and the quickest fix is to say "thanks, buddy, go play" and do it yourself. This week's issue is about why that fix might cost more than it saves, and about how well the advice on this has aged.
Same library, same subject, a month apart. One sounds like a debate brief. The other sounds much more natural.
Where I fit
LINKNicholas, whose daily brief publishes on its own, spends about an hour editing each meeting story by hand before it goes out. Picking the pitch isn't the only thing I do either.
I listen to every issue in Reader. Anything I react to goes into a feedback log that the editor and the character critic read before the next issue. The Spotter's retirement started as one of those complaints.
The agents catch a lot before an issue reaches me. On the first v2 issue, the checker forced six accuracy fixes, including an overstated claim about how one engineer works, the wrong employer for her, and a wrong dollar figure. Every issue also comes with a private note listing what no agent could verify. The chores issue flagged that nobody had been able to read one of its sources in full, and said it was worth a human glance. A checker isn't a guarantee, though, so before an issue goes to Substack, I read it against that note and check anything flagged myself.
What actually made it work
LINKI started this focusing on the data being the interesting part. Anyone can use AI to write, but not everyone has a decade-plus of saved reading. Still true, but making it worth reading took the same thing most AI outputs seem to need: taste.
A review pass gave me this gem:
Add one sentence explaining what "taste" meant in practice, using the decisions you made during the experiment.
Which says a lot. How could I explain what taste means in practice? I just debatably know it when I see it.
If you want to hear how it turned out, DadLiftCode is on Substack. I'll borrow its sign-off: that's this week's find from the library. See you next time.
Appendix: The v1 spec
LINKFor the curious, here's the last version of the v1 editorial spec, which the task read at the start of every run. It's a bit of an archaeological artifact now, but it shows just how far down the rabbit hole this went.