Skip to content
SwankyForge
SwankyForge
All case studies
ASRNLPPipelines3 months

Jet Tracker

Analysts spent their shifts typing up radio traffic. Now they interpret it instead.

Segments processed / day

24,000

ASR + NLP with human-in-the-loop

Was

640

Manual transcription and tagging

In plain terms

What this actually was.

No jargon in this section. The technical write-up is further down.

What was going wrong

The useful information arrived as hours of radio audio and loose text. Analysts listened and typed it up themselves, which capped how much could ever be covered and meant quality depended on who happened to be on shift.

What we built

We built a pipeline that transcribes the audio automatically, pulls out the names and numbers that matter, and passes only the genuinely uncertain cases to a person.

What changed

Coverage went from 640 to 24,000 segments a day without hiring anyone, it runs around the clock, and the results are consistent enough for reporting to depend on. Analysts moved from typing to judgement.

Architecture

How it fits together.

Scroll through the stages. Anything marked as added is a component that did not exist before this project.

TEXTLOW CONFHIGH CONFAudio intakeSEGMENTSASRFINE-TUNEDNLP layerNER + CLASSConfidence gateROUTINGHuman review9% VOLUMEWarehouseSTRUCTURED
  1. Audio intake

    segments

    feeds
    ASR
  2. ASR

    fine-tuned

    We added this
    receives from
    Audio intake
    feeds
    NLP layertext
  3. NLP layer

    ner + class

    We added this
    receives from
    ASRtext
    feeds
    Confidence gate
  4. Confidence gate

    routing

    We added this
    receives from
    NLP layer
    feeds
    Human reviewlow conf · Warehousehigh conf
  5. Human review

    9% volume

    receives from
    Confidence gatelow conf
  6. Warehouse

    structured

    receives from
    Confidence gatehigh conf
The write-up

How it was actually built.

Dataset, approach, measured results and the stack. Written for whoever has to review it.

ASRNLPPipelines3 months

Jet Tracker

Public ATC audio to tail numbers, ownership inference, and destination likelihood for market signals.

Problem

Operational audio and text arrived as unstructured streams. Analysts transcribed and tagged by hand, which capped throughput and made coverage inconsistent across shifts.

Dataset

rows
1.2M audio segments
features
164
sources
Radio audio, flight logs, text feeds
window
14 months

Approach

  1. 01Benchmarked ASR models on domain audio and fine-tuned on labelled segments
  2. 02Built an NLP layer for entity extraction and event classification
  3. 03Orchestrated the whole path as an idempotent, replayable pipeline
  4. 04Added confidence routing so low-certainty output goes to a human

Metrics

11.4%
word error rate
-19.2pp
0.91
entity F1
+0.23
38x
throughput
vs manual
9%
human review
of volume

Business impact

  • Round-the-clock coverage without adding analyst headcount
  • Consistent tagging that downstream reporting can rely on
  • Analysts moved from transcription to interpretation

Tech stack

  • Python
  • Whisper API
  • FFmpeg
  • Apache Kafka
  • Apache Flink
  • PostgreSQL
  • Redis
  • FastAPI
  • spaCy

Next

Need a system like this?

Answer six questions and we will tell you whether this shape fits your problem — including when it does not.