TL;DR
- Context: Since November 2023 I’ve run uxtygodnik.pl, a weekly Polish newsletter about UX.
- Problem: Reading, picking and formatting links by hand every week takes too much time to keep doing for years.
- What I did: I built my own pipeline: collecting, rating, assembling the issue and sending.
- Result: 118 issues sent to several hundred subscribers, all on the same pipeline.
Diagnosis
When you make a newsletter by hand, you repeat the same things every week: read, pick, rate, format. After a few months, what takes the most time isn’t the writing but all the fiddly work around it. So I treated uxtygodnik like a product and built a pipeline that assembles it. I save links the moment I come across them, from an RSS reader or with a shortcut on my phone. Both sources land in one spreadsheet. I rate and categorize them in my own app, which creates shortlinks right away. In a second app I assemble the issue from links that got at least 3 stars, and then I send it.
flowchart LR
A["RSS reader<br/>Miniflux"] --> E["Webhook<br/>n8n"]
B["Phone shortcut<br/>Safari"] --> E
E --> F["Google Sheets"]
F --> G["Rating in Retool<br/>stars, category, shortlink"]
G --> H["Assembly in Retool<br/>lists by category, min. 3 stars"]
H --> I["Mailerlite<br/>send, Monday 8:00"]
classDef neutral fill:#f0f0f1,stroke:none,color:#3f3f46,rx:14,ry:14
classDef info fill:#e9eff8,stroke:none,color:#1e3a5f,rx:14,ry:14
classDef accent fill:#27272a,stroke:#3f3f46,stroke-width:1px,color:#fafafa,rx:14,ry:14
class A,B,E,F info
class G,H neutral
class I accent
linkStyle default stroke:#a8a8b3,stroke-width:1.5px
What I did
- Collecting. I self-host an RSS reader (Miniflux) that I control from the keyboard. On top of that I have an Apple shortcut in Safari’s share menu. Both send articles through webhooks in n8n to a single Google Sheets spreadsheet.
- A rating app in Retool. It runs on that spreadsheet. In it I open an article, give it 1 to 5 stars, pick a category, write a description and mark with brackets which part should be the link. Shortlinks are generated automatically in Kutt, a link shortener running on my domain (links to medium.com were landing in spam).
- An app for assembling the issue, also in Retool. It groups links into lists by category and sorts them by rating. Everything below 3 stars is dropped.
- 118 issues. I’ve been sending them since November 2023, on Mondays at 8:00.
Results
- 118 issues since November 2023.
- Several hundred subscribers.
- Zero spent on tool subscriptions. The RSS reader and the link shortener run on my server, and the links point to my domain.
- 50–60 articles to rate every week. The app lets me get through them without digging around in the spreadsheet.
| Metric | Value |
|---|---|
| Issues sent | 118 (since November 2023) |
| Cadence | weekly, Monday 8:00 |
| Subscribers | several hundred |
| Articles to rate | 50–60 per week |
| Tool subscription cost | 0 PLN (self-hosted) |
The problem
Why does a newsletter need a pipeline?
Because manual work quickly eats up the enthusiasm. Every week you have to read dozens of articles, pick the ones worth attention, rate them, categorize them, describe them, format and send. After a few months, it’s exactly this repetitive part that wears you down. Miss one or two Mondays, and it’s easy to give up entirely.
Why isn’t an off-the-shelf newsletter tool enough?
Because those tools send emails, but they don’t help you choose what goes into them. Most of the work happens before sending: collecting, rating and formatting. That part has to fit how I read and choose, so I built it myself. I use an off-the-shelf tool (Mailerlite) only for the sending itself.
My role / scope
- I do everything myself. I designed and built the pipeline, I maintain it, and on top of that I read, pick and write every issue.
- I do here what I do in product work: I look for the step that slows the process down most and fix it. This time on my own newsletter.
Process
- I save right away. An article enters the system the moment I find it. In the RSS reader one key is enough; on the phone it’s Safari’s share menu. I don’t leave anything for later, because later usually doesn’t come.
- Once a week I rate in Retool. Out of 50–60 articles, I open, read, rate, categorize and describe each one, and get a shortlink for it.
- I assemble the issue in the second app. Links are grouped by category and sorted by rating; the ones with at least 3 stars stay.
- I paste it into Mailerlite and send it on Monday at 8:00. I do this last step by hand, and that’s how it’ll stay.
Key decisions & trade-offs
- A spreadsheet as the database. I keep everything in Google Sheets. It’s not a real database, but for a one-person newsletter it works well. I can edit it right away, there’s nothing to maintain, and the Retool apps run on it without trouble.
- Two ways of collecting. RSS and the phone shortcut both go through n8n into one spreadsheet. I have to maintain two paths, but thanks to that I catch an article the moment I see it.
- Rating in my own app. I built a separate screen in Retool for ratings, categories, descriptions and shortlinks. Building the app took time, but rating 50–60 articles a week directly in a spreadsheet is a pain.
- My own shortlinks on my own domain. Links to medium.com were landing in spam, so I set up Kutt on *.at.marekbrze.dev and generate links from Retool through its API. I have to maintain my own shortener, but the emails get delivered and the links point to my domain.
- I still do the last step by hand. I have to admit I thought about a CLI and Maizzle for HTML templates. For now I’ve dropped the idea, because pasting an issue takes a few minutes and I’d rather spend that time on something else.
How it turned out
Since November 2023 I’ve sent 118 issues to several hundred people. Not every Monday went out, because I did take breaks, and the longest one, in 2026, lasted over three months. After each one I came back to the same pipeline. The tools I host myself (Miniflux and Kutt) cost nothing in subscriptions. I left the last step, pasting the issue, manual, because it’s cheap.
What I took away
- It’s worth treating your own process like a product. Good tools help you not put work off, and newsletters most often die precisely because of “I’ll do it later”.
- Save right away. There’s no point counting on remembering an article later. The only reliable moment is the one when I see it.
- Simple tools are worth hosting yourself. An RSS reader and a link shortener are easy to run on your own, and they stay yours.
- Not every step needs automating. Pasting the issue by hand is a deliberate choice.