Name every conversation and document, automatically

    Generate a short, human title from a chat message or document in ~300M parameters — small enough to run on the same box as your app.

    Chat & assistant appsNote takingSupport toolingDocument management
    ~300M
    PARAMETERS
    115K
    REAL CHAT TITLES IN TRAINING
    64
    BYTES OUT — SIDEBAR-SIZED
    / The problem

    Why this breaks today

    Every chat product ends up with a sidebar full of "New chat, New chat, New chat". Every document tool ends up with "Untitled (3)". Users will not name things, so the list becomes unusable at exactly the point it becomes valuable.

    The usual fix is calling a large LLM for a five-word title — a per-token bill and a network round trip for a piece of throwaway UI text, on every single new thread.

    / How it works

    The pipeline, step by step

    01

    Take the first message as-is

    No prompt template, no system message, no language tag. mist-tg-0.3b takes the raw text and emits a title, so there is no prompt to drift and nothing to maintain.

    mist-tg-0.3b
    02

    Generate in ~300M parameters

    Fine-tuned from google/byt5-small on 115K real chat messages and their titles. Byte-level seq2seq, 256 bytes in, 64 bytes out — it fits alongside your application server instead of behind an API bill.

    mist-tg-0.3b
    03

    Write it straight to the thread

    Titles come back short enough to use unedited in a sidebar. Batch a backlog of untitled threads in one forward pass, and regenerate on the second or third message when the first turns out to be a greeting.

    / The code

    Running in about ten lines

    The Olaverse SDK wraps the models with sane defaults. If you would rather not add a dependency, the second tab is the same pipeline in plain transformers.

    $pip install olaverse[deeplearning]
    title.py
    from olaverse import MISTTitleGenerator
    
    titler = MISTTitleGenerator()   # mist-tg-0.3b, ~300M params
    titler.load()
    
    titler.generate("My laptop keeps freezing every time I open more than five browser tabs, any idea why?")
    # → 'Laptop Freezing Impact'
    
    # Clear a backlog of untitled threads in one forward pass
    titler.generate_batch(["How do I center a div in CSS?", "What makes Yoruba tonal?"])
    / This is you if
    • You ship a chat, assistant, or note-taking product with a thread list.
    • You are currently paying a frontier API to write throwaway UI strings.
    • Your users write in English or another Latin-script language.
    / What it can't do
    • Production-ready for English. It was trained on English messages and titles only.
    • Latin-script languages work reasonably well as a side effect of byte-level transfer — roughly 17–19 of 25 languages in an informal check — but this was never trained for, and it is not a scored benchmark.
    • Not reliable for non-Latin scripts. Japanese, Korean, Hindi, and Amharic all failed to produce same-language titles in testing, returning unrelated English instead.

    Every figure on this page comes from the published model cards, and every limitation is one the cards state themselves. Download the weights and check us.

    / Models used

    All open weights, all Stable tier

    Want this on your data?

    The weights are open, so you can build it yourself this afternoon. If you would rather we tuned it to your domain, evaluated it properly, and handed it over, tell us what you are working on.