Building in public · Not selling yet

I'm building an AI engine that writes LinkedIn posts in your voice.

Not a startup. Not a SaaS. Just a developer building a tool to solve his own problem, documenting the process in public. This page is a build log — no sales pitch, no "limited time offer." Just honest updates on what's working and what's next.

Voice Profile Builder
Post Generator
Batch Runner
Scraper · next
Dashboard · planned
Why I'm Building This

I'm a developer who hates writing LinkedIn posts. So I automated it.

⏳ Writing takes too long

Good LinkedIn posts — with a hook, story, and CTA — take 30-60 minutes. Multiply by 5 days. That's hours I'd rather spend coding.

😶 I don't know what to write

"What do I even talk about?" is the #1 blocker. Most days I open the composer, stare at it, and close the tab.

🤖 Generic AI sounds fake

ChatGPT posts have that unmistakable robot tone. "In today's fast-paced world..." Nobody reads past that.

🔧 I know how to solve this

I build software. This is a software problem. So I'm building an engine that actually learns how I write — not a template mixer, not a ChatGPT wrapper.

Architecture

Four components. All working.

1

Input: Writing Samples

10-20 LinkedIn posts I've written. Real posts, real voice. The engine needs authentic material to learn from.

2

Voice Profile Builder

LLM analyzes sentence structure, vocabulary, hooks, tone, storytelling patterns. Outputs a structured JSON voice fingerprint.

3

Post Generator

Voice profile + topic + template (story, framework, contrarian, case study). LLM writes in the target voice. 6 content templates.

4

Batch Runner

One command: python batch.py. Generates Mon-Fri posts, each with different template and topic. Auto quality check.

What's Built

The engine. Component by component.

No marketing fluff. Here's exactly what each part does, how it's built, and the current status.

Done · May 2026

Voice Profile Builder

Feeds 10-20 writing samples through a custom prompt chain that analyzes 7 dimensions: sentence structure, vocabulary range, hook patterns, emotional tone, storytelling style, key phrases, and content DNA (topics, opinions, expertise signals).

Outputs structured JSON. Tested with real writing samples — captures ~80% of voice signature. Remaining 20% needs more refinement.

Done · May 2026

Post Generator

Injects the voice profile into a system prompt alongside a content template. 6 templates: personal story, contrarian take, framework/how-to, case study, data insight, engagement bait. Each with proven LinkedIn structure (hook → body → CTA).

Generates complete posts: headline, body, call-to-action, hashtags, and editor notes. No placeholder text. No generic filler.

Done · May 2026

Batch Runner

CLI tool. Single command generates a full week (Mon-Fri) of posts. Template rotation per day. Topic rotation per post. Built-in quality check catches placeholders, invented numbers, and generic phrases.

python batch.py --client name --topics "pricing, hiring, growth"
Outputs .json (metadata) + .md (readable preview).

Done · May 2026

Streaming Backend

Engine runs on my existing LLM proxy infrastructure. Uses streaming API for efficiency. No expensive API keys needed — runs on the same $1/mo proxy I already use for other projects.

Cost per 5-post batch: ~4000 tokens. Cost per month (20 posts): negligible. That's the advantage of building your own infra.

Next Up

LinkedIn Post Scraper

Auto-fetch recent posts from a LinkedIn profile instead of manual copy-paste. Removes onboarding friction. Needs to handle LinkedIn's bot protection.

ETA: 1-2 weeks. Browser automation or API-based approach TBD.

Next Up

Auto-Scheduled Pipeline

Cron-based weekly generation. Posts generated automatically every Monday, ready for review. Removes the "I forgot to run the script" problem.

ETA: 2-3 weeks. Simple cron + notification system.

Behind the Scenes

What I learned rebuilding
this from scratch.

Version 1 was a template mixer. Literally random.choice() from a list of hardcoded phrases with ~25 empty ___ placeholders. A friend called it "delusional." They were right. Sounded nothing like a real person.

Version 2 (current) uses real LLM voice profiling. The engine analyzes actual writing samples, extracts patterns across 7 dimensions, and uses that fingerprint to guide generation. It's not magic — it captures ~80% of voice signature. But that's enough to produce drafts that need minor editing instead of complete rewrites.

Key lessons from the rebuild:

1. Template-based generation will always sound fake. You need an LLM that actually understands voice, not just fills slots.

2. The prompt is the product. Getting the voice profile right took 6 iterations. The generator prompt took 4. Prompt engineering is real engineering.

3. Your own infra matters. Running on my $1/mo proxy instead of OpenAI API means the unit economics work even at low volume.

Current Limitations

No web interface yet. Everything runs from my terminal via CLI commands.

No auto-scraping yet. Posts need to be shared manually (copy-paste from LinkedIn or Google Doc). Fixing this next.

Voice cloning is good (~80%) but not perfect. Deep emotional tone and humor are the hardest to replicate. Working on refinement.

Single-user design right now. Multi-client architecture is on the roadmap but not built yet.

Not selling this yet. I'm building it for myself first. If I get it to a point where it genuinely saves me 5+ hours/week, then I'll think about offering it to others. This page is just me documenting the build.

Roadmap

What's next.

I build on weekends. These are honest estimates, not promises. Priorities change based on what I learn.

Done

Voice Profile Builder

LLM analyzes 10-20 posts → structured voice fingerprint. 7 dimensions. Working and tested with real samples.

Done

Post Generator (6 Templates)

Personal story, contrarian take, framework, case study, data insight, engagement bait. Each generates complete LinkedIn posts.

Done

Batch Runner + Quality Check

One command → full week of posts. Template rotation. Topic variation. Auto QC.

Done

Streaming Backend Integration

Migrated from non-streaming API to streaming. Works on my existing $1/mo proxy infrastructure.

In Progress

LinkedIn Post Scraper

Auto-fetch recent posts from any public LinkedIn profile. Removes the copy-paste step. ETA: 1-2 weeks.

In Progress

Scheduled Weekly Generation

Cron-based auto-generation. Every Monday, posts are ready without manual CLI interaction. ETA: 2-3 weeks.

Planned

Simple Web Dashboard

View generated posts, track history, manage voice profiles. Clean, minimal UI. ETA: 3-4 weeks.

Planned

Voice Refinement Loop

The engine learns from post approvals/rejections. Gets better at voice matching with every feedback cycle.

Planned

Decide: keep as personal tool or offer it

Once the pipeline is fully automated and the voice cloning is reliable, I'll decide if this becomes a product or stays as my personal content engine. No rush.