How I Actually Use AI For My Morning Briefing Now
I set up a personal morning briefing system about two years ago. What started as a half-hearted experiment because I was tired of checking five different news sites every morning has become the first thing I interact with before coffee. The core idea is simple enough. You feed multiple information sources into an AI pipeline, and it outputs a concise summary of what actually matters for your day. The trick isn't the idea itself. It's the execution, which turns out to be full of small failures most people don't anticipate. Here is how I got it working, and more importantly, what broke along the way.
The Morning Briefing How Artificial Intelligence Is Quietly Reshaping Daily Life In 2025
The concept is straightforward. An LLM ingests your curated list of RSS feeds, newsletters, and internal alerts, then returns a structured briefing. In practice, the value isn't in the automation. It's in what happens during the curation step. Most people skip that and just dump everything into a chatbot. That produces garbage after about a week because the signal-to-noise ratio collapses when you don't filter at the source. I built mine using a cron job that pulls my feeds at 5:45 AM, runs them through a lightweight model for initial triage and deduplication, then passes the surviving items to a larger model for synthesis. The output lands in my email inbox by 6:15 AM. Takes me about three minutes to read. One counter-intuitive thing I learned the hard way: bigger models are not always better for this task. I originally ran everything through one of the larger flagships and kept getting inflated summaries that padded three stories into five paragraphs of corporate-sounding prose. Switched to a smaller, more deterministic model for the synthesis step and the quality actually improved. The smaller model doesn't hallucinate filler. It also respects length constraints much better, which matters when you are trying to read this at 6:18 AM on a weekday.
What I Actually Feed It
My feed list is aggressively narrow. Maybe twelve sources total. Three tech newsletters, four industry-specific RSS feeds, two general news aggregators, and three internal Slack channels that get mirrored via webhook. That's it. If I see something important from a source outside that list, it usually makes it into the briefing because the model flags it as unusual for my context. Overfeeding is the most common mistake. People want completeness. Completeness is the enemy here. You want relevance, not coverage. For the initial triage step, I use a simple embedding-based deduplication pass. Items that are semantically similar to something already seen get dropped or merged. This prevents the briefing from containing five variations of the same story because five different outlets covered it. The deduplication catches roughly forty percent of raw input on busy days, which sounds like a lot until you realize it's mostly noise. The remaining sixty percent is what actually gets synthesized.
Get the Full Details

The Problem That Almost Broke Me
About six months in, I hit a wall. The briefing started including stale links from articles that had been updated or taken down. The RSS parser was pulling the original feed entry, which carried an old URL, and the AI wasn't validating whether the content was still live. I wasted three days chasing this before realizing the issue was entirely on the ingestion side. The fix was adding a simple HEAD request check in the pipeline. Any URL that returned a 404 or a redirect loop gets marked as dead and excluded from the final output. This alone improved perceived reliability significantly, even though it didn't change the format at all. Nothing fancy. I run this on a small VPS with Docker. The components are: The whole stack costs about twelve dollars a month to run. Not cheap for something that replaces a thirty-minute habit, but the time return is real once it is dialed in.
I went through probably fifteen versions of the prompt before landing on something stable. The final version is brutally plain. It tells the model exactly what to include, what to exclude, how many sections to produce, and gives hard token limits for each section. Here is the basic structure: Top priority items get one line. Everything else gets a bullet point or nothing. The model is told explicitly to omit anything that does not affect my work or direct interests. Vague instructions like "be concise" do nothing. Specific constraints like "maximum three lines for the technology section" actually change the output. I also include a hard exclusion list: no motivational content, no weather, no sports unless it directly relates to something in my industry. The prompt is about four hundred tokens long. It sounds like a lot but most of it is boundary definitions. The actual content instructions are maybe eighty tokens.
Where It Fails Completely
Let me be blunt about the things this system cannot do. It cannot replace deep reading. When a story matters, I open the original article. The briefing is a scanner, not a substitute. It also struggles with sarcasm, irony, and certain types of nuanced argumentation. If an article makes a subtle point that requires context from three paragraphs earlier, the summary will flatten it. I accept that. The system is designed for breadth, not depth. It also breaks occasionally when the LLM API has latency spikes. I have seen the briefing take twenty minutes to generate instead of thirty seconds, and once it completely failed to deliver for a full day because of a rate limit issue on the smaller triage model. I now have a fallback pipeline that queues failed briefings and retries with exponential backoff. That solved the reliability problem, though it added some complexity to the orchestration layer. Another failure mode is source fatigue. After about eight months, I noticed the briefing started feeling repetitive even though the sources were different. This happened because the model was finding structural similarities across stories. Two unrelated articles about AI regulation would get summarized with nearly identical framing. The workaround was adding a diversity instruction to the prompt that penalizes repeated narrative structures. It did not eliminate the problem but reduced it noticeably.

Alternative Approaches Worth Considering
If you do not want to run your own infrastructure, there are commercial alternatives. Services like Reclaim.ai and other AI-powered briefers exist. They are easier to set up but give you far less control over the curation pipeline. You are trusting their prompt engineering and their source selection, which is fine if you do not care about edge cases. For most people, that trade-off makes sense. I only built my own because the commercial products were dropping items I cared about while prioritizing things I did not. Another option is to use a simple RSS reader with AI summarization built in. Readwise Reader does this reasonably well for casual users. It is not as aggressive with deduplication or as customizable on the prompt side, but it handles the basics without requiring any server maintenance.
The Actual Value Proposition
After nearly two years of running this daily, the honest assessment is mixed. The time savings are real. I go from roughly twenty minutes of scattered news checking to three minutes of focused reading. That is a net positive. But the system also created a new dependency. When it breaks, I feel genuinely anxious. I did not expect that. There is also a mild awareness tax. You start noticing patterns in how information is framed across sources, and that can make traditional news consumption feel slower and more tedious by comparison. It is not a bad thing, exactly. Just worth knowing before you commit to it. The biggest insight I have gained is that the quality of a morning briefing depends almost entirely on the quality of the input curation, not on the sophistication of the model doing the summarizing. Most people over-index on the AI side and under-invest on the filtering side. Flip that and the whole thing works better with less effort.