Ten cases, no client names

What we have built and what we know how to build: self-hosted AI automation, with the problem, the system and the result for each. Search the text, or filter by technology.

Technology

Ready to build

Ad and content moderation on your own servers

Self-hosted models check ad creatives, screenshots, listings and landing pages against your rules; people only see the disputed cases.

  • vLLM
  • Qwen
  • MoE FP8
  • PaddleOCR
  • CLIP
  • RabbitMQ
  • RunPod
  • Model orchestrator
  • Postgres
  • Golden set

Problem

Every ad creative, landing page screenshot, listing and user upload has to pass the rules before it goes live: prohibited categories, misleading claims, text hidden in the image, brand and logo misuse, the wrong audience. Doing it by hand does not scale, and sending it all to a cloud API means every creative, every advertiser and every screenshot leaves your perimeter.

Solution

Self-hosted models classify everything that comes in and flag violations. OCR and CLIP are the cheap first stage: they pull the text and visual features off each image and hand them to the classifier as signals, so the heavy language model only sees what needs judgement, such as a claim that reads fine but is illegal in that market. Only the disputed cases reach a person. The rule set is yours and changes without a vendor ticket. The quality bar is measured on a golden set of your own creatives before anything goes live, not taken on the model's word.

Result

On one GPU the same open model reads an image in 1.2 s and sustains 64 parallel requests at $0.073 per million tokens, measured on our own bench. Quality is gated per rule on a frozen set: on our image tests the bare model passes 5 of 8, with our pipeline 6 of 8, and we publish the failures with the results. The card is brought up for the queue and shut down after it, so you pay per hour of work, not per month of idle hardware.

In production

Live transcription and translation

Speech in one language becomes readable text in another within seconds, on the client's own hardware.

  • faster-whisper
  • ASR
  • WebSocket streaming
  • vLLM
  • Qwen
  • Model router
  • FastAPI

Problem

Speech in one language has to be readable as text in another, right away: calls, meetings, support conversations that cannot be sent outside.

Solution

Self-hosted speech recognition and translation, streamed as it happens, with a latency target of a couple of seconds. Models are tuned to the client's domain and vocabulary and run on the client's hardware.

Result

Streaming output within seconds. The audio and the text never leave the perimeter.

In production

Search across an internal knowledge base

A private search that understands a plain-language question and answers with links to the source documents.

  • RAG
  • Qdrant
  • multilingual-e5
  • BM25
  • Cross-encoder reranker
  • Structured chunking
  • Postgres

Problem

Years of documents, matters, templates and correspondence that nobody can find at the moment they are needed.

Solution

A private search that understands a question in plain language and answers with links to the original document. Hybrid retrieval: vectors plus full text, then re-ranking. Everything stays inside the company, nothing is indexed outside.

Result

An answer with a link to the source in seconds, fully self-hosted.

In production

Self-hosted inference platform

A fleet of GPU servers that runs LLM and vision models cheaply and reliably, with no per-token bill from someone else's API.

  • vLLM
  • SGLang
  • Qwen
  • FP8
  • Model orchestrator
  • RunPod
  • Docker registry
  • DCGM
  • Prometheus

Problem

Running LLMs and vision models in production cheaply, reliably and on your own hardware, without paying per token to an outside API.

Solution

A fleet of GPU servers with request routing across pools, continuous batching, per-model metrics and cost accounting, on our own inference images. The controller that grows and shrinks the fleet is its own case below.

Result

8 GPU servers, 12B+ tokens and 4.5M+ requests per week, 99.9% uptime, roughly 2.4x cheaper than the equivalent on AWS.

In production

Data extraction from documents

A model reads invoices, statements and contracts, fills the fields, and a person only confirms.

  • Vision-language model
  • Qwen-VL
  • Structured output
  • PaddleOCR
  • Rule-based validation
  • Golden set

Problem

Invoices, bank statements, contracts and forms are typed into accounting and case systems by hand. It costs hours and produces errors.

Solution

Two tools with two jobs: OCR produces a fast, cheap text layer for the pipeline and the search index, and the vision-language model does the understanding: it pulls the fields out into a structure, parties, amounts, dates, terms, in any of the languages involved. A person confirms instead of retyping. The same engine checks a file for completeness: what is missing, what has expired.

Result

Manual entry becomes confirmation. Accuracy is held to a measured metric before release.

Ready to build

Catching unlogged time before the invoice closes

The system watches mail and documents per employee and flags work that was done but never logged or billed.

  • Microsoft 365
  • Exchange
  • LLM classification
  • Self-hosted inference
  • Draft-approve queue
  • Telegram alerts
  • Email alerts

Problem

People forget to log their hours. Work that was actually done never reaches the client's invoice, and the firm quietly loses money every month.

Solution

The system runs on the firm's own servers and looks only at work mailboxes and matter files, under the access policy the firm already has and with the team informed. It decides whether a service was delivered and raises an alert: work done, not logged, not billed. It keeps no message content, only the flag. It fires before the billing cycle closes, so the hours can still be recovered.

Result

Target: recovered billable hours. The metric is how much unlogged work the system found in a month.

Ready to build

Triage of incoming mail and requests

The shared inbox sorts itself: classified, routed to the right person, routine replies drafted for approval.

  • LLM classification
  • Information extraction
  • Structured output
  • Mail integration
  • Draft-approve queue

Problem

A shared inbox that someone has to sort by hand every morning.

Solution

The system classifies what came in, extracts the substance, routes it to the right person and drafts the routine replies. Nothing is sent without a person approving it.

Result

The morning sort is taken off a person's plate. The disputed cases stay with them.

Ready to build

Automating accounting data entry

Extracted document data becomes ledger entries: a posting-rules engine maps it to the firm's chart of accounts and writes into the accounting system after approval.

  • Posting rules engine
  • Chart of accounts mapping
  • Accounting system integration
  • Structured output
  • Validation
  • Approval queue

Problem

Invoices, statements and receipts are entered into the ledger by hand, under strict rules. That is exactly the kind of work automation is good at.

Solution

Reading the document is the same engine as in data extraction. The work here starts after that: a posting-rules engine maps each document to the firm's chart of accounts, VAT treatment and cost centres, checks the entry against the rules, and writes it into the accounting system through its API or import format. Nothing is posted without a person approving it. The rules are strict, so quality is easy to verify.

Result

Target: a share of manual entry disappears, with fewer errors than before.

In production

Voice synthesis on your own hardware

Speech synthesis and voice cloning without sending anything to an outside service.

  • Qwen3-TTS
  • GPU
  • Voice cloning
  • TTS service
  • ffmpeg

Problem

Speech synthesis and voice cloning without handing the data to an external service.

Solution

Text-to-speech models on the client's GPU, voice cloning, generation of segments for content or narration. Audio, voices and scripts stay on the client's hardware.

Result

Narration in several languages, entirely on the client's hardware.

In production

GPU orchestration and scale-to-zero

The desired-state controller behind the inference platform: it brings models up and down with the load, rents GPUs for the peaks and shuts idle pools down.

  • Model orchestrator
  • Desired-state controller
  • RunPod API
  • vLLM queue metrics
  • Prometheus
  • Lazy cooldown

Problem

GPUs are expensive. An idle card eats the whole economic case for owning hardware.

Solution

A controller brings models up and down with the load, mixes in rented GPUs at the peaks and shuts everything down when idle. Scale-to-zero is for batch and peak pools, where a minute of start-up is acceptable; latency-sensitive routes keep a warm minimum, and model weights stay cached on local disk, so a cold start is a planned minute on a rented card, not a timeout for the user. The state of the fleet is readable in one command.

Result

Owned hardware stays cheaper than an outside API thanks to high utilisation and no idle burn.

Your process could be the eleventh

Send us 20-50 documents for a free test, or book a 30-minute call. Either way you talk to an engineer.