
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.
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.
From request to result
1
Text audit
We inspect the corpus and frequencies: which classes exist, which are rare, and what is even distinguishable from text.
2
Labeling schema
We agree on class definitions and a labeling guide before the work starts.
3
Training and evaluation
We train on the labeled sample, compute per-class metrics, and review the errors.
4
Embedding into the process
We connect the model to the stream and add operator labeling of ambiguous cases.
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.
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 the system is built
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.
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.
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.
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.
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.
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.
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
Languages
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
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
Related Services
Part of Solutions
Implementation Examples
< 1 hour
Time to reply to a review
Ready to discuss your task?
Leave a request – we'll get back with a proposal and a preliminary estimate.
Contact us