Behind the scenes, Stocklake has always leaned hard on AI to read a stock or an idea and hand back a judgment. For a long time, that judgment came out as small, separate 0-10 numbers with names like confidence, conviction, flag_score, and risk_score — set by whichever model or pipeline stage happened to be looking at that particular piece of data. News got its own flag number. Insider activity got its own. Signals got three at once. None of them were on the same scale, and worse, none of them meant quite the same thing twice.
We spent the last couple of weeks doing something we'd been putting off: retiring all of it in favor of two numbers, computed the same way everywhere they apply, that actually mean what they say. This post is about what those two numbers are, roughly how they're built, and why it took this long to get here.
The first thing worth being precise about: AI Score and Signal Score are not the same number wearing two names. They answer two different questions, for two different kinds of thing.
You'll see both on the same stock at the same time and they can legitimately disagree. A stock can carry a strong AI Score (solid fundamentals, healthy technicals, nothing alarming) while a specific short-term signal against it scores low on Signal Score (a screener's call that, on inspection, isn't backed by much this time). They're not competing opinions about the same thing — they're answers to two different questions that both happen to be useful.
Before either of these existed, the raw ingredients were already there — they just never got combined. Every AI call in the pipeline was trained to hand back its judgment as one or more small numbers on a 0-10 scale: how confident it was, how strong its conviction was, whether the finding deserved a flag, sometimes a separate risk read on top. A news article got scored. An insider-trading snapshot got scored. An idea got scored on three axes at once. Each of those numbers was real signal — the problem was never that the AI's judgment was bad, it's that a 10-point scale has exactly 10 places to land, and a model asked for a number often enough doesn't spread evenly across those 10 — it clusters hard on a small handful of round values. An 8 from one place and an 8 from another routinely meant very different things.
None of those old fields disappear entirely on the backend — the AI still forms an initial judgment the same way it always did. What changed is what happens next: instead of that first number being the final answer, it's now one input among several that get blended into a single, wider score.
We're deliberately not publishing the exact formula — the weights move as we keep re-checking each piece against real outcomes, and pinning the recipe down in public would make it stale the next time we tune it. But the shape of it is simple, and roughly the same for both scores: a handful of independently-meaningful pieces, none of them a mystery on their own, combined into one number.
An AI model is genuinely load-bearing in every one of those pieces — there's no version of either score where a human hand-set the number, and there's no version where it's pure arithmetic with the AI cut out. What changed is that its judgment is now one voice in a small committee instead of the entire decision.
The other half of the fix was consistency. Once we had a real 0-100 blend that worked for signals, the obvious next question was: why not the same idea for everything else that used to carry its own one-off flag number? So the same underlying approach now backs the score wherever a stock, a news article, or an insider/institutional snapshot needs one — each still tuned to what that specific kind of data actually looks like, but all landing on the identical 0-100 scale with the same four-band reading.
| Where it shows up | Before | Now |
|---|---|---|
| A stock, overall | Scattered verdict/confidence fields | ai_score (0-100) |
| A signal | conviction / confidence / flag_score | signal_score (0-100) |
| A news article | ai_flag_score / ai_confidence | signal_score (0-100) |
| Insider & institutional activity | flag_score / confidence | signal_score (0-100) |
Every one of those reads on the same 0-100 scale and buckets into the same four bands — Weak, Moderate, Strong, Very Strong — so once you know how to read one of them, you know how to read all of them. That consistency was really the whole point: before this, understanding what a number meant required knowing which pipeline produced it. Now it doesn't.
Both scores are live today on the member dashboard and on individual stock pages, and both are available through the API — on get_stock/get_stocks, the signals feed, news, insider activity, market movers, the deep-dive research tool, all of it. As you'd expect by now, the real 0-100 number and its band are a Pro-tier feature; the free and guest tiers see the underlying data itself, just not this particular verdict layered on top of it.
We know the natural next question is "okay, but which of these scores actually calls it right more often" — some notion of a track record, a backtest, a proven-vs-unproven split. We had an earlier version of the signal history view that tried to answer that on the page itself, and it wasn't earning its keep yet: the labels were doing more explaining than the underlying evidence could support this early. We pulled that back out. A real, honest answer to "does this score actually predict anything" is its own project, with its own evidence bar to clear, and it's coming — just not bundled into this one. For now, read a high score as "unusually well-evidenced by everything we can check," not as a promise.
Both scores are still fundamentally shaped by an AI model's own read of the situation, checked against what we can verify — not a guarantee of anything, and not investment advice. Treat them the way you'd treat a well-informed second opinion: useful context, not the whole decision.
ai_score is attached to a stock and answers "how strong is the overall AI read on this company right now" — fundamentals, technicals, sentiment, blended into one number. signal_score is attached to one specific idea (a screener's "short this now" call, a news article, an insider snapshot) and answers "how much real evidence backs this particular claim." Same 0-100 scale, different questions.
Yes, and that's expected rather than a bug. A stock can carry a strong ai_score from solid fundamentals and healthy technicals while a specific short-term signal against it scores low on signal_score because, on inspection, that particular call isn't backed by much this time.
No, deliberately. The weights move as we keep re-checking each component against real outcomes, and publishing a fixed recipe would just go stale the next time it's retuned. What's documented here is the shape of the blend — an AI read, a track-record comparison, a verified fact, context, and a plainer sentiment floor — not the exact coefficients.
Yes. Free and guest tiers still return the underlying stock, news, and insider data — just not the ai_score/signal_score verdict layered on top of it. Both are live on get_stock/get_stocks, the signals feed, news, insider activity, and the research tool for Pro keys.