{"slug": "i-built-my-own-rss-reader-in-an-afternoon-with-ai-doing-the-typing", "title": "I Built My Own RSS Reader in an Afternoon, With AI Doing the Typing", "summary": "A developer built LumenAI, a local-first RSS reader for macOS with AI summaries, in roughly an hour by acting as product owner and build verifier while an AI wrote all the code. The project used a phased spec with explicit non-goals and a human build check-in after each phase, since the AI's Linux sandbox couldn't compile a Mac app, yielding 38 Swift files, 27 tests and no runtime crashes. The AI layer centers on a single SummaryProvider protocol with six implementations, including Apple Intelligence on-device, Ollama, Claude, OpenAI and Gemini, with API keys stored in the macOS Keychain.", "body_md": "For years my RSS setup was a compromise. I never wanted to pay for a desktop reader, so I stayed on The Old Reader: a perfectly fine service, but it felt like visiting a website, because that's what it was. What I actually wanted was simple: a native Mac app, feeds stored locally, no account, no subscription, and fast enough to triage a hundred articles from the keyboard.\n\nSo I stopped wishing and built it. **LumenAI** is a local-first RSS reader for macOS with AI summaries, taken from an empty folder to a notarizable DMG in about an hour of wall-clock time, with me as product owner and build verifier while the AI wrote the code.\n\nMy pitch to the AI was one paragraph: a local RSS reader for Mac, a premium feel, and *treat it like a real engineering project, with clear phases, and ask me questions before making decisions*. That last sentence mattered most.\n\nInstead of a wall of code, it interviewed me: stack, what v1 includes, what it excludes, how refresh works, what \"premium\" means concretely. A few rounds of multiple-choice later we had a spec.\n\nWriting down the non-goals felt ceremonial. It wasn't: every time scope tried to creep, that list ended the discussion in one line.\n\nEvery choice optimised for native feel, local data, no servers.\n\n`.xcodeproj`.\nThe part I'm proudest of is the AI layer: one `SummaryProvider` protocol with six implementations (Apple Intelligence on-device, Ollama, Claude, OpenAI, Gemini, and Disabled). Swapping providers is a dropdown; keys live in the macOS Keychain.\n\n`for` loop.`<link>` tags, one canonical model for every feed format.`j`/` k`/space/` s`/` m` keyboard navigation.\nEvery phase went the same way: the AI proposed decisions and asked questions, wrote the code and tests, then stopped, because its sandbox is Linux and can't build a Mac app. So I was the build machine: ⌘U, ⌘R, report back.\n\nThat constraint turned into a feature. It forced a human checkpoint between phases instead of a firehose of unverified code. Of three failures in the whole project, my builds caught two and the AI caught one re-reading its own code. Final tally: **38 Swift files, 27 tests, zero runtime crashes encountered.**\n\nTreat it like an engineering project, not a magic trick. Phases, a non-goals list, tests, and a check-in after every phase are why this took an hour instead of unravelling over a weekend. The AI typed every line; the spec, the taste and the \"no, simpler\" calls were the human part, and the project needed both.\n\nThat's the whole idea behind what I write on [Curious Bit](https://curiousbit.netlify.app/): you learn a stack by shipping something real in it, not by watching a syllabus. If you'd rather learn infrastructure-side AI the same way, I've also put together [AICademy](https://ragentic.netlify.app/), built around doing the job rather than reading about it.\n\n**Full write-up with the screenshot gallery:** [I Built My Own RSS Reader in an Afternoon](https://curiousbit.netlify.app/i-built-my-own-rss-reader-in-an-afternoon-with-ai-doing-the-typing/)\n\n*Originally published on [Curious Bit](https://curiousbit.netlify.app/i-built-my-own-rss-reader-in-an-afternoon-with-ai-doing-the-typing/).*", "url": "https://wpnews.pro/news/i-built-my-own-rss-reader-in-an-afternoon-with-ai-doing-the-typing", "canonical_source": "https://dev.to/ajaywalia/i-built-my-own-rss-reader-in-an-afternoon-with-ai-doing-the-typing-4mi1", "published_at": "2026-11-11 22:08:53+00:00", "updated_at": "2026-11-11 22:22:10.364943+00:00", "lang": "en", "topics": ["ai-tools", "ai-products", "large-language-models", "developer-tools"], "entities": ["LumenAI", "Apple Intelligence", "Ollama", "Claude", "OpenAI", "Gemini", "Curious Bit", "AICademy"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/i-built-my-own-rss-reader-in-an-afternoon-with-ai-doing-the-typing", "markdown": "https://wpnews.pro/news/i-built-my-own-rss-reader-in-an-afternoon-with-ai-doing-the-typing.md", "text": "https://wpnews.pro/news/i-built-my-own-rss-reader-in-an-afternoon-with-ai-doing-the-typing.txt", "jsonld": "https://wpnews.pro/news/i-built-my-own-rss-reader-in-an-afternoon-with-ai-doing-the-typing.jsonld"}}