AE5VG

Product · in development

A small language model for digital-mode QSOs

A contest exchange rarely arrives clean. It comes through band noise, fading, and another station transmitting over the top. An experienced operator can still read it, because an exchange uses a small, fixed vocabulary. I want exchanges on any keyboard mode to get through as reliably as they do on FT8. The model has to be small enough to run beside fldigi on a CPU. This is a goal. Nothing has been measured yet.

StatusIn development
Componentsqso-resolver · qso-mcp
Published numbersNone

Three principles

01 · Reference layer

Fixed reference lists

The reference layer holds all 85 ARRL and RAC sections, plus DX, the Field Day pseudo-section. It also holds the grammar for the class, the ITA2 table for lost shifts, and MASTER.SCP, which is fetched at build time. The sections come from this fixed list. The model picks from that list, so it cannot make up a section that does not exist.

02 · Training data

Training pairs from received copy

The training pairs come from text received on the air. Some come from stations that send the same thing more than once, recorded through public KiwiSDR receivers. Some come from a station copied by two Signal Browser channels. W1AW bulletins and DWD weather RTTY are further sources. The clean side of each pair is worked out from the best copy, not taken from a published text. So the pairs are training data. They are not an evaluation set and cannot measure the model. Contributed material is tracked with its contributor's permission.

03 · Evaluation

No accuracy figures yet

The evaluation harness runs against a held-out set of real QSOs, kept apart from the training pairs. That set is not yet big enough. Until it is, I do not publish any accuracy percentage, whether from synthetic data or from anything else.

Two modes on one base model

Contest mode adds a LoRA adapter, and the exchange grammar limits what the model may output. A busted section is then matched to the nearest valid section in the list, so the model does not make one up. Rag-chew mode runs without the adapter, for free text. In both modes, an exchange is only as certain as its least certain field. When the model is not sure, it hands the exchange back marked needs_human and does not guess.

Status · September 2026

The reference layer, the resolver and the evaluation harness are built. The resolver works by lookup and edit distance, with no model in it. Until a real held-out set exists, the harness prints null instead of a rate. A capture rig runs unattended and collects training pairs. Its dashboard is public. The model is not trained yet. The code will not be public until the model has been measured on a real held-out set.

How to help

If you turn on text capture in fldigi during a contest and keep your log, you have the pairs this project needs. Each pair is what your screen showed, next to what your log says was sent. The Development page shows what a contribution looks like and where to send it.