| license | mit | |||||
|---|---|---|---|---|---|---|
| task_categories |
|
|||||
| language |
|
|||||
| tags |
|
|||||
| pretty_name | MeowLLM Miso Dataset | |||||
| size_categories |
|
Training data for MeowLLM — a ~3.5M parameter character language model that speaks as a house cat named Miso.
20,000 single-turn (input, output) pairs across 15 topical categories plus a hard-negative "assistant trap" deflection category. All outputs are in a single consistent character voice (lowercase, short, cat-themed, no assistant phrases).
The dataset is produced by a slot-based compositional template generator with strict per-category filtering and de-duplication. No human annotation — everything is deterministic from hand-written slot banks plus a random seed.
- Text generation: training a tiny character model that produces responses in a consistent voice.
- Character fidelity evaluation: the held-out prompt suite in
meow/eval_cases.pyis explicitly excluded from the training split.
English (lowercase only).
Each sample is a JSON object with:
| field | type | description |
|---|---|---|
| input | str | Human prompt (things a person might say to a cat) |
| output | str | Miso's in-character response |
| category | str | One of 15 topical category names |
| source | str | "template" or "llm" (augmented) |
| split | samples |
|---|---|
| train | 19,000 |
| val | 1,000 |
greeting, hunger, naps, boxes, windows, birds, humans,
dogs, vacuum, rain, affection, territory, nonsense_questions,
being_picked_up, jealousy
Category balance in the train split is between 5.4% and 7.7% per category (fairly uniform via round-robin generation).
All data is synthetically generated from hand-written slot banks in
meow/generate_data.py.
Each category has:
inputs: a bank of prompt phrasingscores: the main response clause bankopeners: optional leading phrasessensories: optional sensory detail extensionsredirects: optional secondary clauses
During generation, each sample is assembled by picking one core and
optionally attaching other slots according to per-category
probabilities. The result is then validated against
meow/rules.py
before being written.
Every generated sample must pass:
- Strict lowercase — no capital letters anywhere
- Length: 1–3 sentences, ≤35 words, ≥1 word
- No banned phrases — whole-phrase matching against a list of ~40 assistant-speak patterns ("as an ai", "i can help you", "certainly", "of course", etc.)
- Per-category keyword requirement — e.g.,
hungeroutputs must mention food-related words;vacuumoutputs must mention hiding or the vacuum itself - Cat-framing fallback — long outputs without a category-specific rule must contain general cat vocabulary
- Deduplication — exact (input, output) duplicates are rejected
- Eval leakage check — any input matching a held-out eval prompt is rejected
- The dataset is deliberately narrow. Miso knows about 15 topics and nothing else.
- Vocabulary is small (~1700 BPE tokens) and lowercase-only.
- Responses are short by design (1–3 sentences).
- Outputs are in English and reflect a specific cultural framing of "house cat" (American/European domestic cat).
None. All samples are synthetic and describe a fictional cat's views on food, naps, and boxes.
This is a tiny educational dataset for a character model. It has no realistic misuse surface — the model trained on it is too small for open-ended generation and too in-character to be useful as a generic assistant.
Miso is a slightly smug indoor cat. That bias is intentional and
documented in persona.md.
phanii9
MIT License.
@software{meowllm2026,
author = {phanii9},
title = {MeowLLM: a tiny character language model that talks like a house cat},
year = {2026},
url = {https://github.com/phanii9/MeowLLM}
}