cue-text
The open model behind SporeLabs Conversation Cues (Cue). A 32M-parameter text model that reads one line of a meeting or call and scores three things: whether the speaker just promised to do something, asked the others a real question, or handed work to someone (a person, the team, or an assistant). It reads the line plus up to three earlier turns and runs on a laptop CPU or in a browser tab.
| Base model | jhu-clsp/ettin-encoder-32m (MIT) |
| Size | 32M parameters; 128 MB fp32, 40 MB int8 ONNX |
| Outputs | commitment, open_question, delegate |
| Language | English |
| Licence | model weights Apache-2.0 (LICENSE); code MIT (LICENSE-CODE) |
| Benchmark | Cue benchmark v0.1 |
What each score means
- commitment: the speaker is promising to do something themselves later, or promising for their team. "I'll email you once it's done", "leave that with me", "we'll get back to you next week". Not a commitment: suggestions, "maybe" and "might", asking others to do it, repeating what someone promised earlier, predictions, questions.
- open_question: the speaker asks the others a real question and waits for an answer. "What did they quote?", "Anyone know if Thursday works?". Not a question in this sense: rhetorical questions, "right?" checks, "really?", "sorry, what?", talking to oneself, "all in favour?", and requests to do a task.
- delegate (a hand-off): the speaker hands a piece of work to someone else to do later: "Priya, could you check the price?", "someone needs to write the reply", "make me a slide deck on churn", "remind me to call the bank". Not a hand-off: doing it themselves, quick in-the-moment asks ("pass the marker", "share your screen"), vague wishes, past assignments, asking for information.
A score is a number from 0 to 1. thresholds.json holds, per head, a default cutoff fitted on human-labelled development data (200 lines labelled blind against these definitions, plus AMI development meetings); scores at or above it count as a hit. Move a cutoff to trade missed cues for false ones. Treat the scores as a ranking, not as probabilities.
Input
One line to score, plus up to three earlier turns, most recent last. For each earlier turn, the model needs to know whether the same person spoke it (same) or someone else (other); if you do not know the speakers, leave the speaker out and it uses ?. The model reads one string:
I'll send the deck by Friday. [SEP] other: Can someone send the deck to Halvorsen? [SEP] other: The quote is still open.
cue.format_input builds it. Text can be raw transcript text with punctuation or lowercase ASR output. Inputs are cut at 160 tokens.
Run it
from huggingface_hub import snapshot_download
model_dir = snapshot_download("SporeLabs/cue-text")
pip install torch transformers safetensors
python predict.py --context "A: can someone own the budget deck?" --speaker B "sure, I'll do it."
from cue import CueModel
m = CueModel.from_pretrained(model_dir)
scores = m.score("sure, I'll do it.", context=[{"speaker": "A", "text": "can someone own the budget deck?"}], speaker="B")
hits = m.decide(scores) # uses thresholds.json
cue.py needs only torch, transformers and safetensors. For the browser or other runtimes, use onnx/model_fp32.onnx or onnx/model_int8.onnx: inputs input_ids and attention_mask, output probs with one column per head in the order above. The int8 file stays within 0.005 AUROC of the torch model (see PARITY.md).
Intended use
Flagging lines in transcripts of work meetings and calls for a person to look at: possible action items, questions that got no answer, requests to an assistant. It is meant as a first pass that a person or a larger model reviews, and it is small enough to run on the device that holds the audio.
Out of scope: deciding anything about a person; use as evidence of what someone agreed to; languages other than English; text that is not conversation (documents, email bodies); any setting where a missed or false hit has serious consequences without review.
Evaluation
Scored on the Cue benchmark's test splits with this package as released (fp32), scores at or above thresholds.json counting as hits. AUROC does not depend on the threshold; F1 is at the shipped threshold, with its 95% interval resampled by meeting. AMI's action-item labels cover both promises and work handed to someone, so commitment_ami counts a row as found when either commitment or delegate fires (score: the larger of the two).
| head | benchmark task | AUROC | F1 (95% CI) | rows / positives |
|---|---|---|---|---|
| commitment or delegate | commitment_ami |
0.916 | 0.100 (0.063 to 0.138) | 33,612 / 118 |
| open_question | question_ami |
0.904 | 0.525 (0.497 to 0.552) | 33,612 / 1,283 |
| open_question | question_icsi |
0.962 | 0.602 (0.556 to 0.651) | 15,153 / 622 |
On AMI questions, precision is 0.40 and recall 0.77. Raise a threshold if you need fewer false hits.
AMI's gold counts only action items and questions linked to its meeting summaries, a narrower definition than the one this model was taught. The benchmark has no delegation task.
Training data
The model trained on 32,850 sentences, each labelled by AutoJev-27B (Apache-2.0, revision 6f5b557e):
| source | rows | licence |
|---|---|---|
| AMI Meeting Corpus | 19,186 | CC BY 4.0 |
| SporeLabs templates (our own Python templates for calls and requests) | 4,257 | ours, Apache-2.0 |
| YouTube-Commons transcript sentences, 3,356 videos | 4,697 | CC BY 4.0, credit list below |
| ABCD customer-service dialogues (ASAPP) | 2,702 | MIT |
| ClaimBuster US presidential debate sentences | 1,096 | CC BY 4.0 |
| MASSIVE (Amazon), 912 English utterances | 912 | CC BY 4.0 |
Development rows, which pick the checkpoint and thresholds, are AMI dev meetings, held-out templates and 200 hand-labelled rows; they are never trained on.
YouTube-Commons credit: transcripts of videos shared under CC BY, from the PleIAs/YouTube-Commons dataset. YOUTUBE_ATTRIBUTIONS.jsonl lists channel, channel id, video link, title, date and licence for each of the 3,356 videos. We used excerpts of automatic transcripts, cut into sentence-sized pieces. The weights contain no transcript text.
Full attributions are in NOTICE.md.
Limits
- The labels are a model's, not people's. Training labels come from AutoJev-27B, so the model learns its definition of a promise or a hand-off and repeats its mistakes. Rhetorical questions ("who would say no to that?") score as questions.
- English meetings and calls. Most training text is AMI (product-design meetings) plus templates and short customer-service turns. Other domains, languages and long monologues are untested.
- Downloads last month
- 22
Model tree for SporeLabs/cue-text
Base model
jhu-clsp/ettin-encoder-32m