from the log
5/10/2026 · 8 min read
— Ali Buğatekin
As a developer there's a list I have to keep up with: new releases, model updates, tooling shifts, news specific to my domain. Going through it manually each day eats about an hour — and that hour is mostly spent on "might be useful one day" rather than "useful right now."
My instinct was always the same: hand this off to a tool I build for myself. Write it once, let it run forever. Six months ago I did that. I built a "tech-scraper" — daily tech-news summaries for the team. It worked, but it never really left me alone.
In this post I'll explain why I retired that system last month, what I built in its place, and why the topic was never really "news" — it was always about my reading routine.
What I built was technically simple. It statically scraped a list of news sources I'd hand-picked (Hacker News, TechCrunch, The Verge's tech section, a few blogs); cleaned the HTML; sent the content to the OpenAI API with a cleanup + summarization prompt; pushed the result into the company's Slack channel.
My intentions were good — I wanted news to live in one place so the team could keep up. And for a while it worked; people genuinely read it. But I was living with five distinct frictions.
**First, I picked the sources.** The system didn't know which sites to crawl — I wrote the list. If a new source emerged and I didn't notice, it didn't exist. So it wasn't a tool that "discovered news" — it was one that scanned the list I gave it.
**Second, sites that block bots.** Some sources (especially the more enterprise ones) blocked simple scrapers. I couldn't pull from them. I tried workarounds — proxies, header spoofing, you name it — and the maintenance overhead grew absurd.
**Third, $20 a month.** Every summarization call to the OpenAI API cost money. 30-50 daily summaries = ~$20/month at the end of the month. Not huge on its own, but I was always aware it wasn't free.
**Fourth, deduplication.** To avoid pushing the same story twice, I had to stand up Redis and keep a record of every URL ever pushed. A whole separate piece of infrastructure for one feature — boring to maintain.
**Fifth, every feature was a new deploy.** "Let me add a filter for this" meant: code change, deploy. For a tool this small, going through the build pipeline every time was always a drag.
Bottom line: it wasn't as stable as I wanted. The team kept reading, but I was burning a couple of hours a week on maintenance.
Because I follow tech news closely, new features in tools like Claude Code, Cursor, Codex, and friends always catch my eye. One day I noticed Claude Code's **scheduled tasks** feature. The first thing that crossed my mind when I tried it was:
Wait a second — I made this way more complicated than it had to be.
Because that one feature offered everything I'd built over six months (and a bit more) out of the box. It triggers on whatever schedule I want (cron-style, but spinning up Claude Code's own agent). It can browse the web — and reach sites that block bots (it has its own browser). It can write its output to a file or page through MCP connectors like Notion. Deduplication lives in context + Notion — no extra infrastructure (Redis or otherwise) needed. Adding a new "feature" means creating a new scheduled task or updating a prompt — no deploy.
Within two hours I'd rebuilt what tech-scraper had been trying to do — as three separate scheduled tasks. The old system is still standing but no longer running — just sitting there waiting to be turned off.
I have three separate scheduled tasks. They all fire daily at 16:00 and write their output, via the Notion MCP connector I've wired into Claude Code, to separate parent pages in my Notion workspace — a fresh sub-page per day, titled `📅 [date] — [day]`.
**1. New features in AI agents and coding assistants.** Tracked products: OpenAI (ChatGPT/Codex/API), Google Gemini, Anthropic (Claude Code, Claude.ai, Agent SDK), Cursor, Windsurf, GitHub Copilot. The filter is sharp: real new features only (new model launches, new commands, new MCP/connector support, new IDE integrations, new API endpoints). Marketing pieces, "why X is amazing" articles, rehashed old news, tutorials with no new feature — all out.
**2. Security and payroll.** Two halves bundled into one routine. First half *security*: CVEs and supply-chain attacks (npm/PyPI/Maven Central/crates), framework security patches (Spring, Node.js, Next.js, Keycloak), DevOps infrastructure security (Jenkins, Docker, Kubernetes, GitHub Actions). Second half *payroll tech*: in Turkey, SGK digital updates, KVKK changes, e-payroll regulations; globally, product launches and major-market regulatory shifts from Deel, Rippling, Gusto, Workday and the like. The first half guards the stack I work in; the second tracks the sector.
**3. General tech news.** AI/ML, web development, the startup ecosystem, hardware, cybersecurity, product launches. Anything scoring 6/10 or higher in importance. The "what's happening" radar that sits outside the other two.
I keep all three separate because I read each in a different mode — mixing them means I have to mentally re-sort everything later.
Whether a routine works comes down less to the model and more to the prompt. The deduplication problem I used to solve with Redis in tech-scraper, I now solve with a few lines in the prompt. Every routine starts with logic like:
Before writing a new page, read the last 7 daily pages under the parent. By URL, by title, by event — if anything's already covered, skip it. If you're not sure whether something is a duplicate, SKIP it. Under-reporting a duplicate is far better than repeating one.
I tackle the "hallucination" problem in the prompt the same way: "Absolutely don't invent CVE IDs, version numbers, or severity scores. If you can't verify a detail, skip it." If it finds nothing at all, there's a fallback: a header that reads "Nothing significant today, so here's lower-priority items" with a hard ceiling of 5 entries — never more.
I used to write rules like these as code. Each one a branch, a helper function, a config file. Now they live as bullet points in the prompt — when I want to change one I don't open the editor; I just edit the prompt and save, and the next 16:00 runs with the new version.
A side-by-side of the old and the new:
Even the numbers tell a story — but the real point isn't in the table.
Old setup, news went to the team. That was good, but for me "news" meant "a Slack channel" — a stream that turned into notifications I never quite picked the right moment to look at.
Now every evening, at the time I picked, the day's summaries are sitting in Notion ready for me. Three separate pages, categorized, not mixed in with what I've already read. I sit down with a coffee and read through them in 15-20 minutes. The end is clear; there's no "did I miss something?" anxiety.
It looks like a small habit change but for me it became **the source of professional sharpness**. Because I don't check news during the day, my focus doesn't fragment. What I read in the evening is structured, not a single chaotic feed. When I don't understand something, I can ask Claude Code right there. There's no weekend "what did I miss?" panic — the pages are all sitting there.
The system I wrote six months ago wasn't wrong — I was doing the best I knew at the time. But as the "routine work that floats around" layer of AI products matures, many of the small scripts we've written for ourselves really do become unnecessary. Custom code is still valuable — but not everything we write has to be custom code.
When I feel a new need now, my first question is: "Can I solve this with a ready-made routine?" If the answer is yes, I'm not the one writing it.
That's a quiet but deep shift in my development reflexes.
I won't call tech-scraper my enemy — it taught me something: the same job can be solved at different layers at different times. First you write it yourself, then the product matures, then you retire what you wrote. The whole point is keeping the question "what should I do myself, what should I leave to the tool?" current.
We started this post with "a news system," but the topic was never really news. The topic was how little effort I could spend staying up to date. As that effort drops, the mental space left for the actual work goes up.
Where I am today, I can comfortably say this: if I were still running my own news system and burning $20 a month, I'd still be missing most of what I now follow.
share if you found this useful