← All use cases
CASE STUDY / BUILT WITH BASAL

SemanticHub: a local article filter for thematic targets, such as “Medical websites”

SemanticHub

English translation of a contributor’s story. Read the Polish original →

In SemanticHub, we match articles to thematic targets — for example, “Medical websites” — to select material suitable for a particular website or campaign. Previously, we used a Jev cascade, costing around USD 1.42 per 100,000 assessments, and API models including Gemini 3.1 Flash Lite. BASAL lets us assess Polish texts locally on modest hardware.

Model role: BASAL is a binary classifier. We supply the article text and target criteria; the model returns the probability of a match. We compare that score with a decision threshold to include or exclude the article from the selected target.

Test: 370 articles, including 105 matching “Medical websites”. The same questions as in the earlier Jev test. The 1.5B and 4.5B models ran on a Mac with 16 GB RAM through a fork supporting MLX; the 4.5B version used 8-bit weights.

Results:
- BASAL 4.5B, threshold 0.5: found 102 of 105 matching articles, the same as Gemini 3.1 Flash Lite, but also accepted 28 non-matching ones (Gemini: 12).
- BASAL 4.5B, threshold 0.67: F1 of 0.917 — 12 false positives and 6 false negatives, close to the Jev cascade.
- BASAL 1.5B: F1 of 0.726, insufficient for our filter.

SemanticHub implementation: BASAL 4.5B as a local assessment stage in the content-matching pipeline, with a threshold calibrated per target.

Effect: local calls do not incur API provider charges; hardware and electricity costs remain, and data stays within our infrastructure. The 4.5B version offers quality comparable to API solutions and supports further deployment for processing Polish articles on our own modest hardware.

Submitted by a model user and published after moderation.

How do you use basal?

Share your use case