Turn any passage into questions people would actually ask

    Generate natural, search-style questions from any passage across 25 languages — for quizzes, reading comprehension, help-centre FAQs, and assessment banks.

    EdtechPublishingKnowledge basesAssessment
    0.955
    ROUND-TRIP KEEP-RATE, HELD-OUT EVAL
    25
    LANGUAGES
    ~1.5B
    PARAMS — ONE MODEST GPU
    / The problem

    Why this breaks today

    Question writing is the bottleneck in every learning product. A textbook chapter needs comprehension questions, a help-centre article needs the questions it answers, an assessment bank needs hundreds of variants — and each one gets written by hand by someone who knows the subject.

    Frontier APIs can do it, but you are then metering every passage in your catalogue through a per-token bill, sending your content to a third party, and hoping the model handles Yorùbá as well as it handles English. It usually does not.

    / How it works

    The pipeline, step by step

    01

    Send the passage and its language

    mist-qg-1.5b takes a passage, a question count, and the language the passage is written in, and returns strict JSON: {"questions": [...]}. This is same-language generation — it does not translate across languages.

    mist-qg-1.5b
    02

    Generate in any of 25 languages

    Coverage includes Yorùbá, Igbo, Hausa, Swahili, Amharic, Zulu, Xhosa, Shona, Somali, and Afrikaans — the languages that make African-market edtech possible and that general tools handle worst. Pass an ISO 639-3 code, an ISO 639-1 code, or the English name.

    mist-qg-1.5b
    03

    Verify by round-trip, then keep

    The model was trained on questions that survived round-trip retrieval: a question was only kept if it retrieved its own source passage out of a pool of distractors. Run the same check at inference to filter anything that drifted from the source.

    / 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]
    generate_questions.py
    from olaverse import MISTQuestionGenerator
    
    qg = MISTQuestionGenerator()   # mist-qg-1.5b
    qg.load()
    
    passage = "Tides are caused by the gravitational pull of the moon and, to a lesser extent, the sun."
    qg.generate(passage, n=3)
    # → ['What causes tides according to the passage?',
    #    'Is the gravitational pull of the sun more significant than that of the moon in causing tides?',
    #    "How do tides differ between the moon's influence and the sun's influence?"]
    
    # Same-language generation across the 25 supported languages
    qg.generate(yoruba_passage, n=3, language="yor")     # or "yo", or "Yoruba"
    
    # A whole chapter in one pass
    qg.generate_batch(passages, n=3, language="English")

    Language coverage

    / 25 LANGUAGES

    Every language the models in this pipeline were trained on, with the codes you pass and the codes you get back.

    Afrikaans
    af · afr
    Amharic
    am · amh
    German
    de · deu
    English
    en · eng
    French
    fr · fra
    Hausa
    ha · hau
    Hindi
    hi · hin
    Igbo
    ig · ibo
    Indonesian
    id · ind
    Italian
    it · ita
    Japanese
    ja · jpn
    Korean
    ko · kor
    Dutch
    nl · nld
    Polish
    pl · pol
    Portuguese
    pt · por
    Russian
    ru · rus
    Shona
    sn · sna
    Somali
    so · som
    Spanish
    es · spa
    Swahili
    sw · swh
    Turkish
    tr · tur
    Vietnamese
    vi · vie
    Xhosa
    xh · xho
    Yorùbá
    yo · yor
    Zulu
    zu · zul

    Pass an ISO 639-3 code, an ISO 639-1 code, or the English name — language= accepts all three. This is same-language generation: questions come back in the language the passage is written in, it does not translate.

    / This is you if
    • You publish learning content and pay people to write comprehension questions for it.
    • You want FAQ or "people also ask" coverage generated from documentation you already have.
    • You need this in African languages, where general-purpose tools produce stilted or wrong-language output.
    / What it can't do
    • Questions are grounded in the passage you supply. Feed it a passage with an error and you get questions about the error.
    • Output is JSON, but generation is generation — keep the round-trip retrieval filter in your pipeline rather than trusting every question.
    • At ~1.5B it wants a GPU for comfortable throughput, unlike the smaller specialists in this list.

    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.