Article · · 8 min read

How I built an AI news radar with Claude Code

An AI news radar tuned to your own interests is an AI workflow automation you can build without a team or a big budget. I built mine with Claude Code over three weeks in September, fine-tuning it as I went. Today it costs me €6.64 a month for the server and about $8 for the model. Below you'll find what it's made of, where I stumbled and how to build your own.

What the radar does

On the tram, instead of the news portal, I read my own radar - news that interests me and moves me forward.

I unlock my phone and there are at most twenty cards waiting for me, from people with thought-provoking ideas. In Czech. No ads.

Every morning at seven, the radar fetches what's new from the people I follow in my field - blogs, podcasts, tweets and so on. A model sorts it and translates anything in English into Czech. I give it a thumbs up or down and write one sentence on why. Five minutes.

AI news radar dashboard on a phone: new items split into Change management, Leadership and AI
My radar dashboard on my phone: new items sorted into three areas.

What it's made of

The radar has three main parts: collection, a filter and the page where I read.

Collection runs every morning in three waves. At 7:00 it pulls new posts from blogs and podcasts via RSS. At 7:15 it searches the web for people who don't have RSS. At 7:30 it fetches tweets from the people I follow. If one wave fails, the others keep going.

The filter is a small language model. It reads what came in and decides whether to show it to me at all. It follows rules that grew out of my own rejections. Whatever it throws out, it stores together with the reason.

The page where I read is an ordinary web page behind a password. For every item I give a thumbs up or down and write one sentence on why. Those sentences then become the rules for the filter. The items I want to keep working with are picked up by my Claude in Obsidian.

The whole thing runs on a small rented server. Not for performance. I want to go through the news whenever I like, not only when my computer is on with Claude running. On the server, the radar keeps collecting while I sleep, and I open it on my phone on the tram just as easily as on my laptop.

What the radar looks like

The radar has four tabs.

Dashboard is what I open in the morning on the tram. New items are split into the three areas I follow: change management, leadership and AI news. At the top I see status messages: how much came in today from articles and how much from X, whether any morning run failed, and how much of the monthly cap I've used. I don't have to look for anything. If something isn't working, the radar tells me itself.

When I open an item, I decide. Thumbs down and one sentence on why. Thumbs up has two options: "just a good source" or "I want to keep working on this". The second one sends the item, with my note, to Obsidian, where my Claude picks it up the next time I work.

Sources are the people, websites and topics I follow. For each one I can add an RSS feed or an X account right away, and I can see when the radar last checked it. I enter topics in both English and Czech so the radar finds both. When I want to follow a new area, I add it here.

Archive holds everything I've ever rated, thumbs up and down. I can search it and filter it by how I decided. If I realise I rejected something for no good reason, one click puts it back among the new items. It also lets me look up information on whatever topic I'm interested in at the moment.

AI news radar archive: rated items filtered by verdict, with the reason for rejection and a button to restore them
Archive: everything I have rated, including why it was dropped.

Statistics show me what share of items is relevant to me and how that number changes week by week. Plus a breakdown by area, by format (article, podcast, tweet), by website, and my favourite sources. What I watch most is the weekly trend. When the curve goes up, the radar is learning. When it goes down, like in the last week in the screenshot, it's my signal to take a look at the rules and the sources.

AI news radar statistics: overall relevance of items and its weekly trend
Statistics: how many items are relevant to me and how it changes week by week.

How to build it, step by step

This is how I would build the radar today, with everything I learned in three weeks of building and months of running it.

1. Write down the people and topics you want to know about

You need specific names, blogs, podcasts and the questions you care about.

2. Build with an AI assistant that writes the code for you

I built the radar with Claude Code. I describe what I want, it writes the code, I try it out, and when something isn't right, I send it back. My job was to say what the radar should do and what it must not do.

3. Rent a small server and secure it

With a server you can read the news any time, even when your computer is off and Claude isn't running. If you don't have a Mac Mini running at home, you can do what I did and rent one from Hetzner in Helsinki for €6.64 a month. On my iPhone the radar wouldn't open without an encrypted connection. An encrypted connection needs an address with a name, not just the server's number. sslip.io gives me one for free, and Let's Encrypt issues the certificate for it, also for free. I didn't want a subdomain of my website. The radar is just for me, and an address without my name doesn't link me to it.

I sat down to deal with security properly after a message in a community I belong to, where someone described seeing in their server logs how somebody was systematically searching for a file with keys. It wasn't about them personally - this is tried across the board on everything visible on the internet. Since then:

  • the page is behind a password, and after three wrong attempts the address is locked out for an hour,
  • I log in to the server with a key only,
  • the firewall lets through only the website and my login,
  • the app doesn't run as the server administrator but under its own restricted user,
  • security updates install themselves.

And I regularly have a stronger model, such as Fable 5, independently review the code and the security.

4. Collect as cheaply as you can

  • RSS is free and needs no model. Anyone with a blog or a podcast usually has RSS too. Start here.
  • Web search is done by the Claude model with a search tool. It's the most expensive part - you pay for every query. That's why mine only searches for people who don't have RSS, and they take turns: each one comes up once every five days.
  • Tweets come through twitterapi.io, without an X account. You register by email; I prepaid $10 of credit and it lasts a very long time.

With tweets I didn't get it right the first time. I asked for each person's last twenty tweets separately and paid even for people who hadn't posted anything that day. Now I ask in a single query: what did they post in the last 24 hours? Only what they actually posted comes back. It works out roughly fifteen times cheaper.

5. Set a spending cap before you switch the radar on

Your cost estimate will be off. Mine was, several times. So the radar counts every model call and has a monthly cap. When it goes over, it stops itself and lets me know. The second safeguard is a spending limit directly in my Anthropic account, with automatic credit top-ups switched off.

6. Before you let AI throw anything out, teach it with examples

This is where I would do things differently today.

I only taught the filter once it was already running. The rules grew out of the sentences I wrote for rejected items. It works, but at first things slipped through the cracks without me knowing.

It's better to start beforehand. Before you let the filter run for real, put together a set of real examples. For each one, write yes, no or maybe - and above all why. Then go through the set with the model. Let it judge each example on its own while you comment on and correct its decisions. Only let it loose on new data once it gets them right.

My filter now decides in exactly those three levels. A yes goes on my reading list. A no is thrown out together with the reason. And a maybe sits separately, so I can see where the model hesitated and review it later.

7. Store what the AI threw out, along with the reason

When you let a model filter things out, you create a new risk: you don't know what disappeared. In my radar, every rejected item is stored with a sentence on why it was dropped, and I can pull it back for fourteen days. I go through it regularly to check whether the filter is throwing out something I'd want to see and work with.

Watch out for overload too. The first time I pulled in tweets without a filter, I got more than a hundred in a single day. That's not how I want to work with information, so there are never more than 20 unread items waiting for me across all areas.

8. Teach the radar in your own words

For every rejected item I write one sentence on why. For example "event invitations don't interest me" or "the latest Claude Code update is irrelevant to me". Every now and then those sentences are read together and turned into rules the filter uses next time. I keep the rules in my own Obsidian and send them to the server. If the server disappeared, I'd still have the rules.

9. Let the radar speak up when something breaks

Every morning at 8:30 the server checks itself and only speaks up when something is wrong: a service isn't running, a certificate is about to expire, a library has a known security flaw. When everything is fine, it stays quiet. Alerts reach me through ntfy and, to be safe, as a pop-up window on my Mac.

What it costs and what's free

ItemPer monthNote
Server (Hetzner)€6.64runs non-stop
Model (Claude): search, filter, translationabout $8$10 cap, then the radar stops
Tweets (twitterapi.io)about $0.13prepaid credit

Web search is the most expensive part. It eats almost four fifths of the spend and brings in one or two finds a day. At the start the radar cost me $2.25 a day. Then I swapped the large model for a small one and cut out the places where the model was thinking for no reason. The cost dropped to a fraction.

Where I stumbled

In the first seven days I burned through $19.40 without knowing it. I found out from my account balance. There were 57 cents left. Coming from Haná in Moravia, I have no desire to burn money on a tool mindlessly. That's why the cap is there now.

When the model made the decisions, the radar found nothing. In the first version I let the model judge what was good enough to show me. First run: nothing. Second: nothing. Third: nothing either. We had set the bar too high. I took the filter out of collection, and for blogs and search I decide. For tweets I brought it back later.

On the first day with Twitter, 137 tweets poured in. I had capped the money, but not the inflow. I went through 24 of them, rejected three out of four and then gave up. That's how the tweet filter and the cap of twenty unread items came about - also as a defence against information overload.

The model silently skipped ten tweets out of eleven. It happened in September during translation. It reported nothing; the log just said "translated 1 of 11". I only noticed because of the English cards. Today the radar catches up on untranslated items and reports every such failure to me.

My AI assistant printed both of my API keys into the chat. Keys are the passwords the radar uses to access the model and the tweet service, and to pay for them. While building, Claude Code listed the running processes, and the keys were part of a command. And yet the rule "never put a key in the chat" was built into it. Both keys had to be replaced. AI mistakes happen sometimes, even when you've got things covered. Unfortunately. You have to keep it in mind. A key must never be part of a command.

Does it work?

In the first two weeks I went through 79 items and kept 32 - that's 41%. For tweets, the share of relevant items rose with the filter from a quarter to 42%. I now treat tweets as my main information stream.

Frequently asked questions

Do I need to know how to code?

No. The AI assistant writes the code; you tell it what the tool should do and what it must not do. Patience helps, though: trying things out, reading error messages and sending back to the assistant whatever doesn't work.

How much does an AI news radar cost?

Mine costs €6.64 a month for the server, about $8 for the model and a few cents for tweets. Web search is the most expensive part. If RSS is enough for you, you'll pay a fraction of that.

How do I teach AI what interests me and what doesn't?

Ideally beforehand, with a set of yes / no / maybe examples, each with a reason. Then as you go: one sentence on why for every rejected item. Those sentences turn into new rules, and the radar keeps bringing you more and more relevant information.

Can I do it without a server?

Yes, if you have a computer that runs all the time, such as a Mac Mini. I wanted a server (I don't have a Mac Mini) so I could go through the news any time, not only when Claude is running. That way the radar collects even when my laptop is closed, and I can browse the information any time, anywhere, even on my phone.

Which tools do I need (not just AI)?

I use Claude Code for building, Claude Haiku 4.5 for search and filtering, Claude Sonnet 5 for translation, twitterapi.io for tweets, Obsidian for the rules and ntfy for alerts. Plus a small server.

Can I build it for free?

Partly. RSS, the sslip.io address and the Let's Encrypt certificate are free. You pay for the server and the model. If RSS and a computer running at home are enough for you, you'll pay almost nothing.

Is it an AI agent?

Not quite. An agent decides on its own which steps to take. My radar is an AI automation - technically a workflow: the process is fixed and the model sorts, searches and translates within it. It only behaves like an agent when searching the web, where it chooses what to look for. If you want to build an agent, start the same way: with a list of what you want to know and a spending cap.

What if an article hides an instruction for the AI?

That's called prompt injection, and it can't be prevented one hundred percent. So my main concern is what the model could do if it obeyed. The models on my server can only return a verdict or a translation, nothing more.