Model at a glance
Table with columns: Spec, Value| Spec | Value |
|---|
| Parameters | 4.54B |
| Architecture | Qwen3_5ForConditionalGeneration (hybrid linear-attention + full-attention) |
| Hidden size / layers / heads | 2560 / 32 / 16 |
| Vocab | 248,320 |
| Context length | 262,144 |
| Precision | bfloat16 |
| Tied embeddings | Yes |
Context length, vocabulary size and precision are configuration values read from this
repository's config.json. They describe what the model accepts, not a measured result at
those limits. Card last reviewed 2026-09-21.
Should you use this model?
A decision table rather than a pitch. The left column is what this model was specialized for;
the right is where something else will serve you better. Every row is a pair on purpose — if
only one column fits your situation, that is the answer.
Table with columns: Reach for this model when…, Use something else when…| Reach for this model when… | Use something else when… |
|---|
| You are drafting, summarizing or checking Canadian legal and regulatory text, and a qualified person reviews the output before it is used | You want an answer you can act on without a lawyer reading it — this model does not give legal advice and nothing on this card supports unreviewed use |
| The task is producing or checking legal citations, the one behaviour with a headline measured gain over the base (see Benchmarks) | You need citations you can rely on without checking — the measured accuracy is far from perfect, so most outputs still need verification against primary sources |
| You need one model that handles both Canadian legal traditions, common law and Québec civil law, in English and Canadian French | Your work sits outside Canada — the specialization corpus and the citation conventions it was trained on are Canadian, and nothing here measures other jurisdictions |
| The material cannot leave your infrastructure: a 4.54B bf16 model runs on a single modest accelerator, with no hosted API and no data leaving your hardware | You are comfortable with a hosted frontier model and want the broadest general capability available rather than a domain specialization |
| You need image input alongside text — scanned filings, judgments, forms, screenshots of regulatory pages | You need the image path to carry a measured accuracy claim — see : every figure on this card is a text benchmark |
A realistic place it fits. A clerk or associate pastes a draft memo and the sources it leans
on, and asks the model to check that each citation is correctly formed and points at the right
instrument. The model flags the ones that look wrong. A qualified person opens the primary
sources and decides. The model shortens the distance between "here is a draft" and "here is a
list of things to check" — it does not close that loop, and it is not meant to.
🔴 Legal work has consequences for real people, so be blunt about what this is. flash-1-mini
is a drafting and analysis aid. It is not a source of legal advice, it does not practise law, it
has no duty to any client, and it cannot tell you when it is wrong. Every output that reaches a
filing, an opinion, a client or a regulator must be reviewed by a qualified person who is
accountable for it. A fluent, confident, correctly-formatted citation can still point at nothing.
What makes it distinct
Five properties, each labelled by what kind of thing it is. Measured means a number appears
in the Benchmarks table below, with the provenance caveats recorded there. Design intent
means it describes what the model was built and trained to do, with no measurement on this card
establishing that the intent was met.
- Citation integrity — measured. The largest reported gain over the base is on legal-citation
integrity, and it is the result the specialization was aimed at. It is also the result most
worth reading with the provenance note below in hand: the figure is reported without a harness,
version, item count or date.
- Bilingual English / Canadian French — measured, in both directions. The card reports a
bilingual parity result on a privacy-compliance track and a regression on French
professional-law multiple choice. Both are below. Read them together: parity on one tested
track is not parity in general, and this card does not claim uniform French competence.
- Both legal traditions — design intent, with one measured point against it. The training
corpus was weighted toward Québec civil-law content alongside common-law material. The one
measured civil-law figure on this card moved the wrong way (CBLRE Québec civil law, in Where
it is weaker). Coverage of both traditions describes what was trained for; it is not a claim
that both are equally well served.
- Image input — architectural, not measured here. The vision tower is inherited from the base
and was frozen during training. See Modality scope.
- Long context — a configuration value, not a measurement. The context length in the table
above is what the configuration declares. No long-context retrieval or reasoning result is
reported on this card at any length.
Modality scope
flash-1-mini accepts text and images and emits text. The architecture is
Qwen3_5ForConditionalGeneration; the released processor is a Qwen3VLProcessor over a
Qwen2VLImageProcessorFast, and the configuration declares image and vision special tokens.
Image input is intended for working alongside a text instruction — reading a scanned judgment,
a filed form, a regulatory page or a table, and answering questions or drafting from it.
Three limits on how far to carry that, and the second is the one readers get wrong:
- The vision tower was frozen during training. Image handling is inherited from the base
rather than adapted to Canadian legal documents. Nothing in the specialization corpus taught
it to read a Québec land-register extract or a bilingual statutory layout.
- 🔴 Every benchmark figure on this card is text-only. CBLRE, IFEval, MMLU, BBH,
Global-MMLU FR, BFCL and the retrieval evaluation are all text benchmarks. Do not read any
of those scores as evidence about the image path. A text score describes the text path; it
says nothing about how the model handles a scanned page, and the two are not interchangeable.
- The GGUF builds drop the vision tower entirely. They are text-only, as stated in the GGUF
section above. If you need image input, use the bf16 safetensors.
If your workload depends on document images, treat the image path as something you must
evaluate yourself on your own material, because this card gives you nothing to go on.
Highlights
Measured against its base model under identical conditions (same prompts, same scoring):
- 2.7× more reliable legal citations — citation-integrity accuracy 42.1% vs 15.8% on the CBLRE benchmark.
- +22.9 points on instruction-following — IFEval prompt-strict 53.2% vs 30.3%.
- Balanced bilingual competence — privacy-compliance parity ratio of 1.00 (English 90.9% / French 90.9%).
- Stronger English legal reasoning — MMLU international law 76.0% vs 70.3%.
- No loss of general capability — MMLU unchanged (~69.8%); complex multi-step reasoning improves (BBH 79.0% vs 68.6%).
- Vision-capable — reads and reasons over images and documents, inherited from the base.
Intended use
flash-1-mini is intended as a drafting and research assistant for Canadian legal and regulatory workflows, in English and French, where citation correctness and faithful instruction-following matter. It is suitable for legal-tech builders, compliance teams, and Canadian regulated-industry operators.
It is designed to assist legal professionals, not to replace their judgment. Outputs — especially citations — should be verified against primary sources before reliance.
How to use
flash-1-mini uses the Qwen3_5ForConditionalGeneration architecture, which is native to Transformers ≥ 5.5 — no trust_remote_code is required. Install a recent Transformers:
pip install "transformers>=5.5"
import torchfrom transformers import AutoModelForImageTextToText, AutoProcessor model_id = "simpledirect/flash-1-mini"processor = AutoProcessor.from_pretrained(model_id)model = AutoModelForImageTextToText.from_pretrained( model_id, dtype=torch.bfloat16, device_map="auto") # Textmessages = [{"role": "user", "content": [ {"type": "text", "text": "What does section 1 of the Canadian Charter of Rights and Freedoms do?"}]}]prompt = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)inputs = processor(text=[prompt], return_tensors="pt").to(model.device)out = model.generate(**inputs, max_new_tokens=256, do_sample=False)print(processor.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
For image input, include {"type": "image"} in the message content and pass images=[img] to the processor.
Thinking mode
Like its base model, flash-1-mini thinks by default — it emits a <think>...</think> reasoning block before the final answer. For many legal drafting tasks you will want the direct answer only. Disable thinking by passing enable_thinking=False through the chat template:
prompt = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=False, enable_thinking=False, # direct kwarg; emits an empty <think></think> block so the model answers directly)
When serving via vLLM, pass --reasoning-parser qwen3; to disable thinking per request, set chat_template_kwargs={"enable_thinking": False} in the request body (or keep thinking on for complex reasoning where it helps).
Serving
The model serves with vLLM for production text and multimodal inference (Transformers ≥ 5.5). Greedy decoding (temperature 0) is recommended for legal tasks where determinism matters.
Quantized GGUF variants (text-only)
GGUF quantizations for CPU / edge inference via llama.cpp and Ollama are available in the gguf/ folder of this repository:
Table with columns: File, Quant, Size, Notes| File | Quant | Size | Notes |
|---|
gguf/flash-1-mini-20260602-Q6_K.gguf | Q6_K | 3.3 GB | Highest fidelity; closest to bf16 |
gguf/flash-1-mini-20260602-Q5_K_M.gguf | Q5_K_M | 2.9 GB | Balanced quality / size |
gguf/flash-1-mini-20260602-Q4_K_M.gguf | Q4_K_M | 2.6 GB | Smallest; quality holds on common tasks |
Important — these GGUFs are text-only. The vision tower is not carried in the GGUF format, so image input is not supported by the GGUF variants. For multimodal (image) inference, use the bf16 safetensors weights above. Quality scales with bit-depth: Q6_K tracks the bf16 model most closely; lower bit-depths trade some fidelity for size, and on the most demanding legal-citation tasks the higher-bit quants are recommended.
# llama.cpp./llama-completion -m flash-1-mini-20260602-Q5_K_M.gguf \ -p "What is the legal test under section 1 of the Canadian Charter?" -n 200 --temp 0 # Ollama (create a Modelfile pointing at the GGUF, then run)printf 'FROM ./flash-1-mini-20260602-Q5_K_M.gguf\n' > Modelfileollama create flash-1-mini -f Modelfileollama run flash-1-mini
GGUF inference of this architecture (Qwen3.5 hybrid linear-attention / Gated DeltaNet) requires a recent llama.cpp build with support for these layers. The multi-token-prediction (MTP) head is excluded from the GGUF (not used at inference). To run the bf16 weights in lower precision instead, load them with bitsandbytes 4-bit/8-bit via BitsAndBytesConfig.
🔴 No GGUF tier has been evaluated, and the numbers on this card do not describe these files.
Every figure in Benchmarks below was measured on the bf16 safetensors. A quantized copy is a
different artifact, and how far each tier drifts from the bf16 weights on Canadian legal
citation work has not been measured. The bit-depth guidance in the paragraph above is the
general expectation for quantization, not a measured result for this model — it is a reasonable
default for choosing a tier, and it is not evidence. Validate the tier you intend to ship on
your own cases before relying on it.
Benchmarks
All figures are flash-1-mini vs the Qwen3.5-4B base under identical conditions (same prompts, few-shot counts, scoring, greedy decoding). See the SimpleDirect benchmarking methodology and CBLRE eval-set documentation for full protocol.
Table with columns: Capability, Base, flash-1-mini| Capability | Base | flash-1-mini |
|---|
| Legal citation integrity (CBLRE) | 15.8% | 42.1% |
| Instruction-following (IFEval, prompt-strict) | 30.3% | 53.2% |
| English legal — international law (MMLU) | 70.3% | 76.0% |
| English legal — jurisprudence (MMLU) | 79.6% | 81.5% |
| Complex reasoning (BBH) | 68.6% | 79.0% |
| General knowledge (MMLU) |
🔴 These figures are reported without the provenance needed to reproduce them. We would
rather state that plainly here than let a reader assume it exists somewhere.
What this card records: the two arms being compared (this model and the Qwen3.5-4B base),
that both arms ran under identical conditions — same prompts, same few-shot counts, same
scoring, greedy decoding — the benchmark names, and the resulting percentages.
What this card does not record:
- the date the evaluations were run;
- the harness and its version — nothing here names the evaluation code or pins it;
- the exact revisions of either arm, by commit or digest;
- the item counts (
n) behind each percentage, so no delta can be sized;
- the protocol details: shots, dtype, batch size, seed, generation caps;
- any paired analysis — per-example records, discordant counts, confidence intervals or a
significance test — so equal and near-equal scores are single figures with no statement of how
closely the two arms actually agree;
- how many comparisons were run in total before these were selected for the table, so no
multiplicity correction is possible.
The consequence, stated directly: a figure without a recorded harness and version is not
reproducible as stated. You cannot re-run these from this card and expect to land on the same
numbers, and if you get different ones, neither of us can say which difference is the model and
which is the setup. Treat every percentage here as a reported result whose protocol is not
recoverable from this document, rather than as a citable measurement.
🔴 flash-1-mini-20260602 is a model version string, not an evaluation date. The digits
identify the checkpoint. Do not read them as the day any benchmark was run — no evaluation date
is recorded anywhere on this card.
We are not guessing at the missing fields to close the gap. When the runs are re-done with a
pinned harness, a recorded date and per-example records, the figures will be republished with
that provenance attached, and any that do not survive will be corrected in place with the
history kept visible.
Where it is weaker
Specialization carried measurable costs, reported here in full:
- Retrieval (RAG): source-attribution accuracy regressed (80.5% → 75.5% on a leak-proof held-out set). flash-1-mini is not a retrieval/RAG leader.
- Function-calling (BFCL v4): overall regressed (37.7% → 28.6%), with multi-turn the weakest sub-category.
- French professional-law MCQ (Global-MMLU FR): regressed (49.0% → 44.6%).
- CBLRE Quebec civil law: regressed (95.0% → 90.0%).
If your workload is primarily retrieval-grounded QA or tool/function-calling orchestration, evaluate carefully against these numbers.
What is not measured yet
Named specifically, because a gap that is not named reads like a claim.
- No GGUF tier is evaluated. None of the three quantized files in
gguf/ has a published
score, on any benchmark, at any tier. The numbers above were measured on the bf16 safetensors
and do not transfer.
- The image path. This card reports no vision, document-understanding or OCR benchmark —
every figure in the table is a text benchmark. This card does not state whether the image
path has been benchmarked elsewhere. On the evidence presented here, it is unmeasured, and
that is all this document can tell you.
- Long context. No retrieval, recall or reasoning result is reported at long input lengths.
The declared context length says what the model accepts, not how it behaves near the limit.
- Statistical strength of every reported difference. With no item counts, paired tests or
intervals, none of the deltas above — in either direction — has an established size. The
directions are what is on record; the magnitudes are not.
- Any comparison outside its own base. The model has not been evaluated here against any
third-party model other than Qwen3.5-4B, and this card makes no comparative claim about any
other model.
- Safety, bias and robustness. No toxicity, bias, jailbreak, refusal or adversarial-prompt
evaluation is reported. Legal material carries loaded and jurisdictionally sensitive content,
and none of that has been characterized here.
- French coverage beyond the two tracks reported. Canadian French legal drafting, Québec
civil-law reasoning and fr-CA register are measured on the tracks listed above and nowhere
else.
- Nothing here measures drafting quality in practice, error rates in
deployed use, or time saved. A benchmark score is not a fitness-for-purpose finding.
Training
flash-1-mini is a supervised fine-tune of Qwen3.5-4B using parameter-efficient adapters (LoRA with DoRA, rank 32 / alpha 64, RS-LoRA), with the vision tower frozen, on a bilingual Canadian legal corpus weighted toward citation production and Quebec civil-law content. The trained adapter was merged into the base weights and the checkpoint canonicalized for serving. The architecture is unchanged from the base.
Limitations and responsible use
- Not legal advice. flash-1-mini produces information to assist qualified professionals; it does not practice law and its outputs are not a substitute for a lawyer.
- Verify citations. Citation accuracy is materially improved over the base but is not perfect; verify against primary sources.
- Bilingual, not omniscient in French. Parity is strong on tested tracks but French professional-law MCQ regressed; do not assume uniform French superiority.
- Hallucination. Like all LLMs, it can produce confident, incorrect output.
- Quebec register. The model is evaluated for legal correctness, not certified for Quebec-French dialectal register.
- Fabricated citations look exactly like correct ones. Improved citation integrity means
fewer malformed or invented references, not none. A fluent citation in the right format can
still point at an instrument that does not exist or does not say what the model claims.
- The law changes and the corpus does not. The training corpus has a cutoff that this card
does not state. Statutes are amended, regulations are replaced and judgments are overturned;
the model has no way to know what has moved since it was trained, and will not tell you.
- Confidentiality and privilege are your responsibility. Running locally keeps material on
your own hardware, which is a deployment choice, not compliance. Self-hosting does not by
itself establish privilege, professional-secrecy obligations under Québec law, PIPEDA or
provincial privacy compliance, or data residency.
- Image input, long context and the quantized GGUF
tiers all carry no measurement on this card. Absence of a reported problem is not evidence of
absence — see .
License and attribution
flash-1-mini is released under the Apache License 2.0. It is a modified derivative work of Qwen3.5-4B (© Alibaba Cloud / Qwen Team, Apache-2.0). See the LICENSE and NOTICE files in this repository for the full license text and the required attribution and modification statement.
Citation
@misc{simpledirect2026flash1mini, title = {flash-1-mini: A Bilingual Canadian Legal Language Model}, author = {{Alpine Pacific Trading Inc. (operating as SimpleDirect)}}, year = {2026}, note = {Version flash-1-mini-20260602. Derivative of Qwen3.5-4B (Apache-2.0).}, howpublished = {\url{https://huggingface.co/simpledirect/flash-1-mini}}}