LinkedIn Viral Post Predictor
Betathink-reason-learn/linkedin-viral-post-predictorPredicts whether a LinkedIn post will be a hit or go viral, and explains what pulled the score up or down.
Scores a LinkedIn post draft (text, optionally with its image) for its chance to be a hit (top 5% of posts by reactions among authors with a similar following) or to go viral (top 1%).
Returns a level (bottom half / 50-75th / 75-90th / 90-98th / top 2%), the probability of a hit and of going viral next to the base rate, and the checks that pulled the score up or down. The reasons are written to feed straight back into a writing loop: draft → score → rewrite.
Built with ThinkReasonLearn: hundreds of plain-language checks answered by a language model, combined by a trained, auditable scorer. On authors it never saw in training it ranks viral posts at 0.79 AUC; its top 2% of posts go viral 10% of the time against 1% at random.
Send the post as the user message (plain text, or a JSON object with text, media, quote), with an optional image part. The reply is a JSON object.
Quality
- Viral AUC, unseen authors
- 0.79
- Viral rate in top 2%
- 10.1%
- vs 1.0% at random
Limits
Where the model was trained, and where to trust it less.
- Trained on posts by authors with 1k-20k followers about startups, AI and venture capital, July-October 2026. Outside that range the response carries a warning.
- Pulled up / pulled down are what the model noticed, not advice.
Input
| Field | Type | Description |
|---|---|---|
| textrequired | text | Post. Up to 3,000 characters. |
| media | select | Attachment. textimageimagesvideodocument |
| image | image | Image or video frame. |
| quote | checkbox | Quotes another post. |
Output
The output object of POST /v1/predict. Over chat completions, the same JSON is the reply content.
| Field | Type | Description |
|---|---|---|
| level | string | bottom half | 50-75th | 75-90th | 90-98th | top 2% |
| chance_hit | number | Probability of a hit: top 5% of posts by reactions among authors with a similar following. |
| chance_viral | number | Probability of going viral: top 1%. |
| base_chance_hit, base_chance_viral | number | The base rates, for comparison. |
| content_score | number | 0-1 score of the content alone. |
| pulled_up, pulled_down | array | Up to 5 checks each: {check, answer, effect}. What the model noticed, not advice. |
| image_reading | string | null | How the image was read. Send it back as image_reading to rescore edits without the image. |
| warnings | string[] | E.g. the author is outside the training range. |
Call it
POST /v1/predict with your API key, any OpenAI SDK pointed at our base URL, or OpenRouter under the same id.
curl https://api.thinkreasonlearn.com/v1/predict \
-H "Authorization: Bearer $TRL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "think-reason-learn/linkedin-viral-post-predictor",
"input": {
"text": "We almost ran out of money in month 9.\n\nHere'\''s the one decision that saved the company — and why I'\''d make it again:\n\nWe stopped selling to everyone and picked 1…"
}
}'