Building natural language processing systems

We build NLP systems on your texts: request classification, entity extraction, sentiment, and summarization. Models are trained and measured on a labeled sample.

We extract meaning from text: sentiment, entities, classification, and summarization.

Pricing

from ₽2,000,000

per project

This is the lower bound of a project. We scope the exact quote after a brief: it depends on volume and the number of integrations.

What's included

Capabilities

Request classification

We route the stream by topic and priority instead of keywords.

Entity extraction

We pull dates, amounts, addresses, and part numbers out of text into structured fields.

Sentiment with a threshold

The model returns a probability, not a binary label, and the threshold is calibrated to the task.

Summarization

We compress long threads into a short brief that keeps the facts.

How we work

From request to result

  1. 1

    Text audit

    We inspect the corpus and frequencies: which classes exist, which are rare, and what is even distinguishable from text.

  2. 2

    Labeling schema

    We agree on class definitions and a labeling guide before the work starts.

  3. 3

    Training and evaluation

    We train on the labeled sample, compute per-class metrics, and review the errors.

  4. 4

    Embedding into the process

    We connect the model to the stream and add operator labeling of ambiguous cases.

Who it fits

Check if it fits you

Good fit

  • A labeled sample exists

    A few hundred labeled examples per class give a starting point.

  • A uniform text stream

    Requests, reviews, or tickets are similar in structure: the model catches the pattern.

Not a fit

  • Absolute accuracy required

    Language is ambiguous: no model reaches 100% on real texts.

  • No class definitions

    Without agreed classes the labeling is contradictory, and the model learns noise.

Track record

What you get

82%

topic classification accuracy

The classifier routed requests by topic, and sentiment with a threshold separated ambiguous cases from clear ones.

82%

Accuracy per class

Accuracy is computed per class on a held-out sample, so a rare class stays visible to the team.

40 ms

Inference at stream speed

One short text goes through inference in 40 ms, so the pipeline keeps pace with the incoming stream.

2%

Manual review of the tail

An operator sees only ambiguous texts below the confidence threshold, so manual review covers a small slice of the stream.

How it works

How the system is built

  1. Class definitions are agreed before labeling

    Class definitions are agreed before labeling starts: two specialists read a topic the same way, so the model trains on consistent examples and separates close classes with confidence.

  2. Sentiment returns a probability

    Sentiment returns a probability for each class, so the threshold is calibrated to the task: the team chooses which texts to close automatically and which to send for manual review.

  3. Metrics are computed per class

    Metrics are computed per class on a held-out sample, so a rare but important class stays visible and gets its own share of attention.

  4. Summarization is checked against facts

    Summarization is checked against facts: the brief keeps amounts, deadlines, and names, so a short summary stays good for team decisions and for handing over.

Limitations and cost

Where the solution pushes back

  • 01

    Irony stays a weak spot

    The model reads "Awful, how fast" as negative, so irony and sarcasm stay a weak spot. We label such cases by hand and add them as examples.

  • 02

    New topics outpace labeling

    The classifier knows only the classes present in training, while new topics outpace labeling. We add new classes as examples accumulate.

  • 03

    Moving to another domain

    A model trained on reviews loses accuracy on legal texts, so moving to another domain needs fine-tuning. The domain and the text style set the data requirements.

  • 04

    Language shifts

    Slang and new product names require periodic labeling updates. Language shifts, and we refresh the class dictionary on a schedule.

Where it applies

Where it applies

The classifier routes support requests by topic and priority, so the queue reaches the right team.

Entity extraction pulls dates, amounts, and parties from contracts, and the details go to the accounting system.

Sentiment with a threshold flags negative marketplace reviews, and the operator sees them first.

How the loop is built

How the loop is built

Texts arrive as a stream, pass normalization and part-of-speech tagging, and then reach the model.

The model returns a probability per class, and a threshold separates automatic handling from manual review.

Cases labeled by an operator return to training, and the next model version builds on them.

Stack

Technologies

The technologies we use in our work and their role in a project.

Texts and models

Texts are stored in Elasticsearch, features and labels in PostgreSQL, models train on PyTorch, and inference runs on vLLM.

Text search and storage: it finds similar requests and assembles a sample for labeling.Stores labels and model probabilities: accuracy per class is computed from them.Trains and fine-tunes models on your texts, rare classes included.Fast inference for generative tasks: summarization and parsing of long threads.
Budget estimate

Cost calculator

This is an indicative range, not a quote. We scope the exact estimate after a brief: it depends on volume and the number of integrations.

NLP tasks

4

Languages

2

Complexity

Add-ons

Support

Year one: updates and monitoring, a reply within 2 business days.

Service

Building natural language processing systems

The estimate covers our team's work. Hardware, third-party service licences and travel are added on request.

Estimated cost

₽2.55M

Timeline

6 wk

Questions

Frequently asked questions

How many examples are needed?

From a few hundred per class for typical topics; rare classes need more or a separate strategy.

Who labels?

Your specialists by an agreed guide. We measure annotator agreement and resolve conflicts before training.

What about new topics?

The classifier does not know a class it never saw. New topics go to a manual queue first, then to labeling.

How is quality checked?

Metrics are computed on a held-out sample per class, not as a single average.

What teams add to this service

Ready to discuss your task?

Leave a request – we'll get back with a proposal and a preliminary estimate.

Contact us