linkedin-agent
linkedin-agent generates post candidates on a schedule, ranks them, and sends a winner to WhatsApp for approval before anything is published. Publishing requires a draft in the awaiting_approval state, so nothing reaches LinkedIn without a reply. A hard requirement is that no topic, angle or hook ever repeats.
- Started
- 2026
- Stack
- TypeScript, n8n, OpenAI-compatible API, WhatsApp
- Kind
- Pet
- Source
- Private
Why I built it
Automating LinkedIn posting risks publishing unreviewed or repetitive content, since a language model has no memory between calls to avoid repeating itself.
What it does
- Generates N candidates via an OpenAI-compatible API and ranks them deterministically
- Rejects a winner whose topic or hook is a near-duplicate of stored posts
- Sends the draft to WhatsApp and publishes only on an approve reply
- Supports revision replies that loop a sharper draft back for approval
How it is built
A TypeScript service triggered by an n8n schedule, with deterministic ranking in src/rank.ts, a database of past topics for dedup, and WhatsApp delivery through wa-bridge.
How it evolved
- 2026Scoped
Automating LinkedIn posting risks publishing unreviewed or repetitive content, since a language model has no memory between calls to avoid repeating itself.
- 2026Built
A TypeScript service triggered by an n8n schedule, with deterministic ranking in src/rank.ts, a database of past topics for dedup, and WhatsApp delivery through wa-bridge.
- 2026Live
Shipped and still improving it.
Built by Syed Tasavour. More at syedtasavour.com.