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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for SporeLabs/cue-text

Quantized
(10)
this model