LinkedIn Viral Post Predictor

Beta
think-reason-learn/linkedin-viral-post-predictor

Predicts 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

FieldTypeDescription
textrequiredtextPost. Up to 3,000 characters.
mediaselectAttachment. textimageimagesvideodocument
imageimageImage or video frame.
quotecheckboxQuotes another post.

Output

The output object of POST /v1/predict. Over chat completions, the same JSON is the reply content.

FieldTypeDescription
levelstringbottom half | 50-75th | 75-90th | 90-98th | top 2%
chance_hitnumberProbability of a hit: top 5% of posts by reactions among authors with a similar following.
chance_viralnumberProbability of going viral: top 1%.
base_chance_hit, base_chance_viralnumberThe base rates, for comparison.
content_scorenumber0-1 score of the content alone.
pulled_up, pulled_downarrayUp to 5 checks each: {check, answer, effect}. What the model noticed, not advice.
image_readingstring | nullHow the image was read. Send it back as image_reading to rescore edits without the image.
warningsstring[]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…"
  }
}'