Inspiration

When Twitter turned into X and RSS faded, I lost the pipe that brought me the world. I kept saving articles anyway, and I kept noticing the same thing when I finally read them: the headline was about one thing, the article was about another, and the actual news was sitting in paragraph nine.

Every read-later app I tried was a better bucket. I didn't need a better bucket. I needed a research desk.

The Lede is that desk. You save an article from Safari and the desk reads it before you do: it unburies the lede, renames the piece by what it actually says (the original headline stays on the card as a receipt, labeled RAN AS), files it by beat, and writes the strongest honest case for the author's argument. Never a summary. A second move, Dig Deeper, researches the story across the live web and returns a cited dossier. You are the editor of your own magazine. The desk just does the reading.

How I built it

I'm a designer, twenty years in, and I built this solo over a summer with Claude Code running as my engineering team while I stayed the editor. The build mirrors the product thesis: AI does the heavy reading, the human makes the calls.

The client is native SwiftUI on iOS 26, SwiftData + CloudKit, Liquid Glass design language. Capture is a Share Extension that extracts the article in Safari's own page context, which means the app hosts no WebView and owns no cookie store. A capture physically cannot leak your session off the device.

The server is Node/Express on Railway with Neon Postgres for the AI cache and analytics. Every model call lives server-side against the Claude API; the app ships zero API keys. Push is APNs with device-scoped credentials, so a research result can only ever land on the device that asked for it.

Monetization is one tier: Membership, $9.99/month or $99.99/year with a 7-day trial. StoreKit 2 handles purchase, the server verifies the signed transaction, and entitlements and quotas are server-authoritative. The client only displays the meter; it never computes it. RevenueCat runs in observer mode on top for revenue analytics.

Challenges

Capture without owning a browser was the hardest design problem. The easy routes are all disreputable: spoofed user agents, archive mirrors, harvested sessions. I banned them outright. The desk reads what the reader can already read, in the reader's own session, and when a site closes every honest door (Reddit's app share, for one) the app says so plainly instead of cheating back.

Cost safety was the hardest systems problem. A read-later app with a model behind it is a denial-of-wallet target, so a fail-closed circuit breaker checks a monthly spend ceiling before every paid call and degrades gracefully instead of going dark. Availability fails open, cost fails closed. Different axes.

And cache correctness was the sneakiest. Briefs are cached with a finite TTL, keyed to a prompt version. Edit a prompt without bumping the version and you silently serve stale briefs for a week. Both prompts are now pinned by SHA-256 contract tests, so an unbumped edit fails CI instead of failing readers.

What I learned

I assumed the risk was death by success. Then I measured it: a brief averages $0.0086 and a Dig Deeper $0.0314, so at roughly $0.09 per active user, the $500 monthly cap binds at about 5,500 actives. The real risk migrated from cost to conversion, and the roadmap changed shape the day the math landed.

The bigger lesson: shipping is mostly the unglamorous parts. Server-side receipt validation, a privacy label that agrees with the privacy policy that agrees with the code, WCAG 2.2 AA as a launch gate, security passes that filed real findings. The AI wrote a lot of code fast. Deciding what was true, safe, and honest enough to ship stayed a human job, and it was most of the job.

The app is on TestFlight now and launches this month. I built it as patient zero. The bet is that a lot of people lost their pipe when Twitter and RSS died, and nobody handed them a desk.

Built With

Share this project:

Updates

Submission history