Skip to content

Newsscore

Pulls financial news from configurable sources, scores every article with Jev on a -1 to +1 scale with confidence and relevance weighting, and aggregates one number per symbol, from Python, sync or async, or the CLI.

Stars
0
Language
Python
License
MIT
Published by
Community
Author
mahynotch
Last verified
Oct 2026

mahynotch/newsscore

User repository on GitHub

View on GitHub

One number per ticker from the week's news. Async Python library + CLI, pluggable scorer, Jev by default.

Forks
0
Last pushed
Updated Sep 2026

Repo stats from the GitHub API, cached Oct 2026.

About this project

News sentiment scoring for stocks, powered by TypeSafe Jev by default. Mainstream financial news APIs go in, a pluggable scoring function (TypeSafe's Jev by default) scores every article, and one aggregate number per symbol comes out. Use it from Python (sync or async) or from the newsscore command line. Or with uv: uv add "newsscore[jev]", or uv tool install "newsscore[jev]" for the CLI only. The latest unreleased code is on GitHub, and a clone is the way to hack on it:

Quoted from the project's README. Read the full README.

Highlights

  • Identical questions reach Jev either directly or through OpenRouter's Decisions API, so only the credential, the dependency and who bills you change.
  • Scoring is pluggable: pass your own score_fn returning a number, a dict or an ArticleScore per article, and the CLI still works.
  • The sample run scored 310 articles in about 15 s and under 2 s from cache, with relevance weighting pushing an off-topic story toward zero.
  • The provider is part of the cache fingerprint, so scores fetched through one route are never silently reused for the other.

Watch out

Two fallbacks and one alpha endpoint are worth knowing about. NewsScorer() uses Jev only when the SDK is importable and TYPESAFE_API_KEY is set, and otherwise drops to a keyword lexicon scorer with a log line; the README calls that a test double and not a trading signal, and newsscore doctor reports which one you have. OpenRouter's Decisions endpoint is alpha and can change without a deprecation period. The agreement measurement, 310 AAPL articles scored down both routes with 97.1 percent impact-label agreement at kappa 0.934, 97.7 percent category agreement and a 0.095 maximum absolute sentiment difference, is offered as evidence that the provider gap is no wider than the model's own run-to-run variation, and the README correctly calls that evidence rather than a guarantee, since OpenRouter resolves typesafe/jev-1.13 to a dated build it is free to move later. Two caching consequences: switching provider means rescoring, and asking for a floating alias such as ~typesafe/jev-latest switches caching off entirely instead of filing answers under a name that may mean something else tomorrow. Aggregation weight is the product of confidence and relevance, and the headline confidence figure in the sample output is 1.000, so treat it as a normalization rather than a signal. Copy reviewed against the repository README on 2026-10-04, not from running it.

Questions about this entry

Short answers drawn from the linked project or page.

More Jev resources like this

30GitHub stars
Forkable weekday radar that asks Jev one yes-or-no question per interest over each new arXiv announcement and publishes a page plus RSS feed.
Jev Tools & CLIs#community#jevbest#catalog-import
38GitHub stars
Async supervisory layer for Hermes Agent that locks Definitions of Done, proves mechanical criteria locally, and calls Jev only for unresolved semantic checks under a token budget.
Jev Tools & CLIs#community#jevbest#catalog-import
44GitHub stars
Mac app that turns one short English or Japanese sentence into Ableton Live mixer, transport, clip, note, device, and track edits from a pop-up bar.
Jev Tools & CLIs#community#jevbest#catalog-import
547GitHub stars
Live SEO audit that crawls a site from one homepage URL, checks 52 rules tied to Google Search Central, and asks Jev typed questions about every page to rank fixes.
Jev Tools & CLIs#community#jevbest#catalog-import
27GitHub stars
Pi extension that replaces many small tool calls with one typed TypeScript execute_tools call, type-checked before running in a sandbox.
Jev Tools & CLIs#community#jevbest#catalog-import
27GitHub stars
Local-first trading journal and review harness that is read-only over markets, captures runs into frozen envelopes and evidence packs, and requires explicit human promotion before any rule returns.
Jev Tools & CLIs#community#jevbest#catalog-import

From the Jev guides

Original write-ups on what this entry is for.

The request shape barely changes across surfaces; the surrounding contract does. When to call the API directly and when a gateway, a Worker binding, or a router entry earns its extra hop.
Jev Tools & CLIs#gateway#vercel#cloudflare
Read article
Taking a decision checkpoint out of Python: what the GGUF and browser WebGPU exports preserve, what they change, and the parity evidence the model cards publish.
Jev Tools & CLIs#open-models#local#onnx
Read article
Jev labels a record that already exists. Code moves, flags, or holds it. How the document, mail, and transfer tools keep the action out of the model.
Jev Tools & CLIs#classification#email#security
Read article
Back to all resources

From the Jev community

Posts from builders shipping with Jev right now.

Follow @typesafeai