Back to projects

PostyAI

A LinkedIn post generator that scores the draft it just wrote, so the guess about engagement happens before you publish.

Role Solo, AI/ML and full-stack Year 2024 Stack Flask, LangChain, Groq, scikit-learn Source on GitHub
A generated post with its readout: 78 words, 0.4 min read, 8/10 predicted engagement, 2.26s to produce.

Every AI writing tool will hand you a post. None of them will tell you whether it is any good.

PostyAI writes the draft, then runs it back through a model trained on engagement outcomes.

That score is a Random Forest over 60 plus features: readability, sentiment, hook structure, emoji and hashtag density.

It was the best of nine candidates I trained. The other eight did not ship.

70%

Engagement-class accuracy, Random Forest

60+

Features extracted per post

2.4s

Average generation time, measured in-product

9

Models trained. One shipped.

The generation panel before a run. Topic, length, language, tone, and no free-text field.

Four inputs, and no prompt box

Dropping the free-text prompt was the decision that made the rest work.

A model cannot score a draft whose shape changes on every run, so constraining the input is what made it measurable.

Batch generation, three to five posts against one configuration.

Nobody writes one post

Content work arrives as a campaign, so batch generation produces a set against the same settings and scores each one.

You pick from five instead of regenerating until something lands.

70% accuracy means nothing without the baseline it beat, and that is the first thing I would publish.

The second is an explanation. The engagement score is a bare number, and a number you cannot interrogate is one you stop trusting.