All cases
Automation and AI integration contractor

AI scoring for tenders and leads: from 80-120 postings a day to 3-5 in Telegram

Monitoring procurement and project boards across three sources: postings parsed, the brief scored 0-10 by an LLM, HOT and WARM sent to Telegram. Monitoring used to take 2-3 hours a day.

Scale
3 sources, automatic run every 6 hours
Stage
Running in production
Delivered
2026

TL;DR. Out of 80-120 postings a day, 3-5 were worth pursuing — and finding them took 2-3 hours every day. The system parses postings from three sources, a small language model scores the brief on a 10-point scale, and only relevant lots reach Telegram. Runs automatically, every 6 hours.

Situation: monitoring procurement eats the working day

Tender platforms and project boards publish dozens of lots a day. Out of 80-120 postings, 3-5 turn out to be a fit — but finding them means opening each one: reading the brief, working out what it is really about, matching it against your profile of work.

Keyword filtering on the platform side doesn't solve it: "automation" surfaces conveyor supply contracts, while a genuine computer vision project may be titled "upgrade of the CCTV system". The sorting falls on a human — 2-3 hours a day, every day.

Task

  1. Take the reading of postings off a human entirely.
  2. Score the brief on meaning, not on keyword matches.
  3. Send only what is worth opening, to the channel that is already open.
  4. Hold processing cost at a level where running it daily is not a discussion.

What we built

The system pulls postings from three sources: state procurement, a project board, and job vacancies as an indirect signal of demand for automation. Each source has its own adapter — API, RSS, or parsing procurement documents in PDF and DOCX.

The extracted brief goes to a language model, which scores the lot on a 10-point scale against the profile of work and assigns a status: HOT, WARM or COLD. HOT and WARM go to Telegram with a link and a short justification of the score. COLD stays in the log and the spreadsheet — checkable, but not distracting.

The run is scheduled every 6 hours through the system scheduler. Processed postings are marked in a local database, so the same lot never arrives twice.

Telegram: tender card with score, status and justification

Result

Key technical decisions

  1. Caching the system prompt between calls. The profile of work and the scoring criteria are identical for every lot in a run. Caching that part of the request removes the main cost line in bulk scoring.
  2. A small model for the bulk stage. First-pass filtering doesn't need a frontier model: the task is telling relevant from irrelevant, not writing an analysis. Matching model to task matters more here than the quality of the prose.
  3. Deduplication in a local database. A posting is marked processed by its identifier. Without that, a 6-hour cadence would deliver the same lot four times a day.
  4. Three sources, three adapters, one scorer. The platforms' data formats differ; the scoring criteria don't. Separating the collection layer from the scoring layer means a new platform can be added without touching the scoring logic.

FAQ

Why an LLM rather than a keyword filter?

Keywords produce both false positives and misses: a computer vision project may be titled "upgrade of the CCTV system" and contain none of the expected terms. The model scores the brief on meaning.

What does a daily run cost?

Cost is held down by caching the system prompt and using a small model for the bulk stage. That is a deliberate design decision: if scoring is expensive, the daily run is the first thing to get dropped.

Can another platform be added?

Yes. Collection and scoring are separate: a new platform means a new collection adapter, and the scoring criteria stay as they are.

What would come next

The natural continuation is a feedback loop on outcomes: marking which lots turned into contracts and tuning the scoring criteria against actual wins. After that, predicting win probability from the buyer's parameters and procurement history.

If sorting leads or tenders costs you hours a day, let's talk it through in 30 minutes.

Stack

  • Python
  • LLM API with prompt caching
  • SQLite
  • Telegram Bot API
  • launchd
  • Google Sheets

Same process in your company? Cortex IT writes a mini-audit in 2-3 days, free of charge.

Request a mini-audit