
Score every news article for sentiment toward each company it names, and for the events you track
Ask each article fixed questions (“Is this good or bad news for {company}?”, “Does it report a supply problem?”, “A guidance change?”) and get probabilities you can aggregate into daily indicators. One read of the article answers every question for every company.
1M articles for about $117
On spinf-12b, our optimized Gemma 4 12B, only input is billed, at $0.09 per million tokens: the content once per call, each question's own tokens, and one empty floor per question. The scores are free.
Combine use cases in the same call
Ask sentiment, events and topics together, and add adverse-media questions (fraud, sanctions, litigation) for the names you screen: the article is read once, and each extra question adds only its own tokens.
Assumes 800-token articles, 20 questions of about 25 tokens each. The first 50M tokens are free. Gemma is a trademark of Google LLC.
$0.09 per million input tokens · the scores are free
Calibrated answers for news analysis, at any scale
Many questions, one read
Sentiment toward each company, the expected impact, the topic, the events reported: all answered in one pass over the article. Placeholders ask the same question for every entity.
Calibrated, comparable scores
Every answer comes with its empty-content floor, which removes the question’s own bias, so scores from different questions can be compared, and ranked against your own history.
Priced for archives
Backfill years of news for the price of a few model calls elsewhere: only the input is billed, and each question costs only its own tokens.
One article, three kinds of questions
Sentiment per company with a placeholder, and two yes/no event questions. The bars show p; the tick shows the floor, the same question asked with no article.
Northwind Motors shares fell 8% on Tuesday after the carmaker cut its full-year delivery target, citing a shortage of battery cells at its Nevada plant. Its cell supplier, Voltra, said it expects to restore full output by the end of the quarter.
For {company}, this news is (positive, neutral, or negative):
positive
0.19
neutral
0.44
negative
0.36
positive
0.41
neutral
0.43
negative
0.17
Does the article report a production or supply problem?
yes
0.85
no
0.15
Does the article report a change in guidance or targets?
yes
0.93
no
0.07
import os
import requests
resp = requests.post(
"https://api.spinf.com/v1/score",
headers={"Authorization": f"Bearer {os.environ['SPINF_API_KEY']}"},
json={
"model": "spinf-12b",
"messages": [
{
"role": "user",
"content": "Northwind Motors shares fell 8% on Tuesday after the carmaker cut its full-year delivery target, citing a shortage of battery cells at its Nevada plant. Its cell supplier, Voltra, said it expects to restore full output by the end of the quarter."
}
],
"scoring": {
"queries": [
{
"id": "sentiment",
"template": "\n\nFor {company}, this news is (positive, neutral, or negative):{?}",
"options": [
" positive",
" neutral",
" negative"
],
"combinations": [
{
"company": "Northwind Motors"
},
{
"company": "Voltra"
}
]
},
{
"id": "supply_problem",
"template": "\n\nDoes the article report a production or supply problem?\nAnswer:{?}",
"options": [
" yes",
" no"
]
},
{
"id": "guidance_change",
"template": "\n\nDoes the article report a change in guidance or targets?\nAnswer:{?}",
"options": [
" yes",
" no"
]
}
]
}
},
)
for query in resp.json()["results"][0]["queries"]:
for combo in query["combinations"]:
print(query["id"], combo["values"], [(o["text"], o["p"], o["floor_p"]) for o in combo["options"]])Read the lift over the floor, not only the largest bar: for Northwind, "negative" is the answer the article raises most above the floor, while the largest raw bar, "neutral", is lifted less. Simple yes/no questions about events give the clearest reads.
The API call behind this example, the docs and the benchmark code are easier to read on a larger screen. Start free now, and pick it up on your laptop.
Daily oil and equity indexes built on these reads
Thinking Text asks about five hundred fixed questions of every oil article and aggregates the answers into a daily read of the press. Not a forecast: a measured read of what the news says.
news articles
tokens processed
correlation with crude
of big 20-day moves
Figures from the Thinking Text oil index, published daily with its score card.
Read the Thinking Text storySentiment per company and events, measured
Measured on 108 synthetic news articles about fictional companies (255 company mentions), labelled by a language model and checked blind by a second model, with no examples and with 4 or 8 labelled example articles placed in the prompt.
correct sentiment per company
correct · supply problem?
correct · guidance change?
correct main topic (5)
Synthetic articles are cleaner than real news. On public financial-news posts (short and informal, 300 items), sentiment accuracy was 69% with spinf-12b and 82% with the larger spinf-31b (Gemma 4 31B, on request), with the same 8 examples in the prompt: test on a sample of your own sources.
Test sets, questions and code on GitHub: reproduce it with your own keyThe questions matter: iterate on yours
As with any language model, the wording of the questions and a few labelled examples change the results a lot. With spinf that is cheap to get right: try a few wordings and example sets on a few hundred of your own items for cents, and keep the best. How to write questions
From questions to numbers
Self-serve on the on-demand API: sign up, create a key and send your first batch in minutes.
1
Write the questions
Plain-language templates with the answers you want scored: sentiment toward {company}, impact, topic, the events you track. Test them on a few hundred articles.
2
Backfill the archive
Send articles in batches with many inputs per call. Years of news run on the on-demand API; for the largest projects we also take files in bulk.
3
Aggregate into signals
Remove the floor, place each score on its own history, and combine per day, per entity and per source. Then compare with prices, flows or outcomes.
News analysis: questions, answered
More in the docs and the guides: entity-level sentiment for news and probabilities from a language model, or .
Same engine, other questions
The first 50M tokens are on us
Sign up, create a key and score your first batch in minutes.