
I've been hearing "AI agent" everywhere and honestly for a long time I nodded along without really knowing what made something an agent versus just... a script that calls an API. They felt like the same thing to me.
Then I actually built one. And the difference clicked.
The thing I built
A daily digest that emails me one interesting engineering article every morning. Sounds simple. But here's what it actually does:
- Checks what it's already sent me (so it never repeats itself)
- Searches the internet for something genuinely interesting from the last week
- Decides if that thing is worth sending
- Emails it to me
- Remembers what it sent
Every day. On its own. No input from me.
So what's the difference?
Here's how I think about it now.
Think chicken shop.
An automation is two wings and chips every day after school. You walk in, same order, done. No one's thinking. No one's adapting. It just runs.
An agent is boss man who already knows you want two wings and chips — but today he clocks you and goes "you should try the fillet burger." He remembered your usual, decided you needed a change, made a suggestion, and waited to see how you reacted. That's the loop. Perceive, decide, act, observe.
Ha but basically..the real tell: if you can write it as a simple if/else flow, it's an automation. If the model needs to figure out what to do next based on what it finds, it's an agent.
The bit that made it click for me
My digest agent has a memory. A little memory.json file that tracks everything it's ever sent. Before it searches for anything, it checks that file. If it finds something good but already sent it last Tuesday, it searches again with a different angle.
That's the agent loop. Perceive → decide → act → observe → repeat.
An automation would just send whatever came back first and not even check.
What it's actually made of
Three things:
Claude — the brain. It decides what to search for, evaluates if the results are interesting, chooses what to send, and writes the email. I give it tools to use. It decides when and how to use them.
Tools — four of them: search the web (via Tavily), check memory, save to memory, send email (via Resend). Claude calls these in whatever order makes sense. I don't tell it the order. That's the point.
GitHub Actions — runs it every morning at 7am, no server needed. The memory file persists between runs via the Actions cache so it genuinely remembers across days.
The code is TypeScript. The SDK has a thing called toolRunner that handles the agent loop automatically — you give it the tools, it keeps calling Claude until Claude decides it's done. No manual while(true) loop needed.
Is it useful?
Yes, actually. I've gotten some genuinely good reads from it — things I wouldn't have found scrolling on my own.
But more than that, building it taught me something. The difference between an automation and an agent isn't about complexity or how many API calls it makes. It's about who is doing the reasoning. In an automation, that's you. In an agent, that's the model.
Once you see that distinction, you start noticing it everywhere — boss man suggesting the fillet burger, the Blank Street server clocking you're a regular and nudging you towards the new special. Someone or something perceived, decided, acted. That's the loop.
Where to start if you want to try this
You need three things:
- Claude API — free trial credits to start
- Tavily — search API built for LLMs, has a free tier
- Resend — email API, free for personal use
If you want to steal my starting prompt, here it is:
"I want to build a daily digest agent that emails me one interesting thing about [your topic]. It should remember what it's already sent and not repeat itself."
That's enough to get going. See what comes back.
Till next time xo