← All work
Dense raw source material refined through processing lines into an evenly spaced publishing rhythm of amber blocks.

LinkedIn Content Engine · Personal · 2026

A LinkedIn content pipeline with two quality-control gates

A system that publishes less than I could by hand, but never drops below a quality floor willpower can't hold. It filters slop; it doesn't produce it.

Surface topics

research layer

Gate 1 · taste

kill cheap, zero tokens

Gate 2 · execution

kill precise, draft visible

Publish

3-4x a week

Two filtering gates, not one. Slop dies before it ships.
3-4/wk
posts, consistent (was ~1)
10 min
review per session
6 hrs/wk
hand production, eliminated

01 · Problem

The hard part isn't throughput. It's the slop bar.

I post on LinkedIn because that’s where the work I want comes from. But posting happened when I felt like it: once a week on a good week, nothing for two weeks on a bad one. And LinkedIn is already saturated with AI posts that read like LinkedIn posts. Build a system that generates more of that shape faster and you’ve solved the wrong problem.

The volume play

Ghostwriters, one-shot prompts, n8n templates. More of the same shape, faster. Louder, not better.

What I needed

A system that publishes less than I could by hand, but never below a quality floor willpower can't hold.

02 · Solution

Reject the volume play: two filtering gates, not one

Gate 1 lives at the research layer. Before any drafting, the system surfaces candidate topics. I kill topics here, when the cost is one tap and zero generation tokens. Bad topic, dead topic. No draft ever gets written. This is the cheap filter.

Gate 2 lives at the draft layer.Drafts that survive get generated, reviewed in Telegram, and approved, edited, or killed. More expensive, since tokens are already spent, but it catches the topics that looked promising until the draft revealed they weren’t.

Two gates, two cost profiles. The first is for taste. The second is for execution. They filter different failure modes.

03 · How I built it

Boring stack, deliberate gate placement

Research

search API surfaces topics

Draft

LLM, only past Gate 1

Review

Telegram, in the cracks of a day

Publish

on a rhythm

A staged pipeline with a contract between each step.

Python, an LLM SDK for drafting, a research API for surfacing, serverless with cron, flat-file JSON for persistence. Boring stack. The interesting part is where the gates sit. The Telegram bot is the review interface on purpose: slop-checking should happen in a queue at lunch or between meetings, not at a desk.

04 · The point

The human gate isn't a 'for now.' It's the feature.

Most content automations build a fully autonomous pipeline, then apologize for the human gate as a temporary measure until the prompts get good enough. I built the opposite. The gates are permanent. The whole pipeline exists to route my taste through more posts a week than my willpower can.

The real tradeoff is volume. Two gates cap me at what I can review, roughly four posts a week. A pure throughput system could push fifteen. I don’t want fifteen.

05 · Proof

The unlock was consistency, not post count

Before

1 post on a good week, two-week gaps on bad ones, no system for capturing post seeds.

After

3-4 posts a week, consistent, reviewed in 10 minutes a session, two or three times a week.

The volume metric isn’t the interesting one. LinkedIn rewards showing up on a rhythm the algorithm can predict. I went from irregular to systematic, and that’s the actual unlock. No post that ships sounds like slop, because I killed it at Gate 1 or Gate 2 before it got there.

06 · What's next

Stateful taste: a system that learns what I kill

Today the gates are stateless: every topic judged in isolation, every draft against my mood that day. The next layer wires shipped and killed drafts into a second-brain setup, so the system learns my taste over time by watching what I kill, approve, and edit.

The build was always the easy part. The taste capture is the work.

Want the code, or a version tuned for your team? The build is on request.

Request the code

raph@raphaelmercado.devlinkedin.com/in/raphmercadogithub.com/raphaelmercado-coder