Beta · speedy inference for text analysis

One context. Hundreds of questions, answered.

See every document from hundreds of perspectives, at the price of reading it once. spinf answers hundreds or thousands of questions about your content in a single pass, so every extra question costs almost nothing. Built for trading-grade analysis and already running in production.

Explore use cases

$0.09 per million input tokens · first 50M tokens free · only input is billed · public beta

Success story

The right direction on 9 in 10 big crude moves

Thinking Text scored five years of news on spinf to build daily oil and equity indexes. Across the big 20-day moves of crude since 2023, the move implied by the news pointed the right way 92% of the time. A read that explains the market, not a forecast.

Read the story
15M
news articles scored
five years of news
~1T
tokens processed
across research iterations
92%
of big crude moves
direction read right from the news
Why spinf

Look at the same content from every angle — and afford it

Most LLM pipelines ask one question per prompt. When you need a hundred perspectives on a million documents, that multiplies cost and latency. spinf is an inference engine built for the opposite shape: few documents in, many questions out.

Many questions, one read

Send the content once with as many questions as you need. Our engine reads the content a single time and answers every question from that read — no re-sending the article for each prompt.

Near-zero cost per extra question

You pay for the content plus the words of each question, nothing else. Going from 10 to 500 questions adds only the question tokens, not 490 more copies of the article.

Trading-grade rigour

Designed from the ground up for quantitative research: deterministic scoring, per-question probabilities and calibration signals. Already used in production for daily market indexes.

Scores you can calibrate

Every question returns a probability, a residual and an empty-content floor, so scores can be normalized and compared across questions, sources and time.

How it works

One article, many questions, one call

Write a question as a template that ends where the answer goes, and list the answers to score. spinf returns the probability of each answer for this content — plus two numbers that make the scores comparable.

Content

OPEC+ agreed on Sunday to extend its voluntary output cuts through the first quarter, while Saudi Arabia signaled it could deepen reductions if prices keep sliding. Analysts noted that US crude inventories fell for a third straight week as refinery runs reached a seasonal high.

Content tokens50Question tokens (4 questions)49Empty-floor tokens49Processed tokens148Billed (minimum 1,000 per call)1,000Cost$0.000090
Questions → answers scored
QuestionAnswerp · floor tickpfloorresidual
Will crude oil prices rise or fall next month?rise
0.650.470.91
Will natural gas prices rise or fall next month?rise
0.440.610.79
Does the article report a cut in oil supply?yes
0.830.440.31
The article is mainly about …oil
0.990.820.94
The article is mainly about …natural gas
0.010.060.94

Live scores from spinf-12b (Gemma 4 12B). The tick marks the empty floor: the same question scored with no content. The distance between the bar and the tick is what the content says. A template with placeholders asks many questions at once (crude oil, natural gas). The residual is the probability left to other words, mostly set by the template: compare it across contents, not across questions.

Token efficient

The article is read once, not once per question

You are billed for the content plus the words of your questions — nothing else: no system prompt, no repeated context, no output tokens. The more questions you ask, the larger the saving.

Questions per article

100

Articles

1M

Input tokensCost
One prompt per question 12B model · $0.15/M
67.2B
$10,080
spinf, one read $0.09/M
1.8B
$162
You save

$9,918

98% less than one prompt per question

37× fewer tokens

65.4B tokens not sent

600-token articles, 12-token questions, 60-token instruction per conventional prompt; spinf bills at least 1,000 tokens per call. Compared with a 12B model at an average $0.15 per million input tokens; its output tokens are not counted, so the real saving is larger.

What you get back

Numbers built for calibration

Scores are free: you only pay for input tokens. Each question comes back with three numbers, designed to be aggregated over thousands of documents and calibrated against a baseline.

p
Probability

The probability of each answer you listed, read from the model’s next-word distribution at the end of your template — not a generated sentence to parse.

residual
Residual

The probability that went to none of your answers. Mostly set by the template and the words you chose, so compare it across contents under the same question: a residual that jumps for one content flags a question that does not fit it.

floor_p
Empty floor

The same answer scored with empty content: the question’s built-in bias. Measure the content against it (p − floor_p), and questions become comparable.

200 OK · response
{
  "id": "req_01M3B14ABQ0S81CBK2WQ5HPNX9",
  "object": "score",
  "created": 1790297909,
  "model": "spinf-12b",
  "system_fingerprint": "fp_87dd99dbf6",
  "results": [
    {
      "input_id": "0",
      "queries": [
        {
          "id": "direction",
          "combinations": [
            {
              "values": {
                "commodity": "crude oil"
              },
              "options": [
                {
                  "text": " rise",
                  "logprob": -2.813903,
                  "p": 0.654929,
                  "floor_p": 0.473377
                },
                {
                  "text": " fall",
                  "logprob": -3.454679,
                  "p": 0.345071,
                  "floor_p": 0.526623
                }
              ],
              "residual": 0.908432,
              "floor_residual": 0.936882
            },
            {
              "values": {
                "commodity": "natural gas"
              },
              "options": [
                {
                  "text": " rise",
                  "logprob": -2.390459,
                  "p": 0.444475,
                  "floor_p": 0.605271
                },
                {
                  "text": " fall",
                  "logprob": -2.167439,
                  "p": 0.555525,
                  "floor_p": 0.394729
                }
              ],
              "residual": 0.793942,
              "floor_residual": 0.911571
            }
          ]
        },
        {
          "id": "supply_cut",
          "combinations": [
            {
              "values": {},
              "options": [
                {
                  "text": " yes",
                  "logprob": -0.552571,
                  "p": 0.834359,
                  "floor_p": 0.435885
                },
                {
                  "text": " no",
                  "logprob": -2.169414,
                  "p": 0.165641,
                  "floor_p": 0.564115
                }
              ],
              "residual": 0.310287,
              "floor_residual": 0.323976
            }
          ]
        },
        {
          "id": "topic",
          "combinations": [
            {
              "values": {},
              "options": [
                {
                  "text": " oil",
                  "logprob": -2.843978,
                  "p": 0.990817,
                  "floor_p": 0.815715
                },
                {
                  "text": " natural gas",
                  "logprob": -7.552238,
                  "p": 0.008938,
                  "floor_p": 0.064336
                },
                {
                  "text": " coal",
                  "logprob": -11.14758,
                  "p": 0.000245,
                  "floor_p": 0.119949
                }
              ],
              "residual": 0.941267,
              "floor_residual": 0.999882
            }
          ]
        }
      ]
    }
  ],
  "warnings": [],
  "usage": {
    "prompt_tokens": 148,
    "completion_tokens": 0,
    "total_tokens": 148,
    "prompt_tokens_details": {
      "content_tokens": 50,
      "query_tokens": 49,
      "floor_tokens": 49
    },
    "billed_tokens": 1000
  }
}
Success story · news indexes

15M news articles, turned into a market signal

Our partner Thinking Text built its oil and equity news indexes on spinf. Every article is scored against hundreds of prompts, and the answers are aggregated into daily indexes with their own hit rates.

  • 15 million news articles over 5 years, read under thousands of perspectives

  • Close to 1 trillion tokens processed across the research iterations

  • A daily oil read that tracks the crude price level: correlation up to 0.85 in a year, 0.80 over the whole period

  • In production today: published every day, with a public score card

Read the full story

Oil news read vs WTI crude

Since mid-2022 · correlation 0.80 on 1064 market days

The spinf read (six fundamental questions, averaged over ~1,000 articles a day) against the log price minus its trailing 60-day median. Both series scaled by their own standard deviation. Data: Thinking Text OIL-F6, live.

Pricing

One price, per million input tokens

No seats, no tiers, no output charge. Pay for what you send, keep the savings of reading once. Large projects and on-prem deployments are priced separately.

Pricing and limits
spinf 12B · launch model

$0.09

/ 1M input tokens

  • $4.50 of free credit to start: 50M tokens
  • Only the tokens processed are billed: content, questions and answers
  • Scores (the output) are free
  • Up to 10,000 questions per content
  • Content up to 4,096 tokens, questions up to 256 tokens
FAQ

Questions, answered

The on-demand API is built for throughput, not real time: it runs on elastic capacity, so the first request after a quiet period may take a few seconds while capacity warms up, and after that we typically process around 10,000 tokens per second. For real-time decisions (live triage, moderation before publishing, agents) we reserve an endpoint for you: always warm and sized to your traffic.

Leading open-weights language models, optimized by us for scoring at scale on our own inference engine. The launch model is Google DeepMind’s Gemma 4 12B (API id spinf-12b, or its standard name google/gemma-4-12B); Gemma 4 31B is available on request.

As a template that ends where the answer goes — “Will {commodity} prices rise or fall next month? Answer:” — with the answers to score (“rise”, “fall”). spinf returns the probability of each answer for your content. Placeholders like {commodity} ask many questions at once, and you can send many contents in one call.

Input tokens only: your content once, your questions and answers, and the empty-content check of each question (computed once per call), with a minimum of 1,000 tokens per call. There is no system prompt overhead and no charge for the scores that come back.

The engine already powers daily production indexes. The public service is in beta: we are still tuning the models and configuration to support a wider range of use cases, and limits may change.

spinf is based in San Francisco, CA.
Public beta

Every question, at the price of one read

Our mission is to put the full power of the leading open-weights language models to work at hyperscale: we optimize them for your use cases, so analyses that used to be too slow or too expensive to run become routine. spinf is in beta: we are still tuning models and configuration to support wider use cases, and we would love to hear what you want to measure.