simpledirect/flash-1-mini
flash-1-mini
A compact, bilingual, vision-capable model specialized for Canadian legal and regulatory work — in English and Canadian French.
flash-1-mini is a 4-billion-parameter model fine-tuned from Qwen3.5-4B for Canadian legal tasks. It is built for the parts of legal work that have to be right: producing correctly-formatted legal citations and following detailed instructions, across both of Canada's official languages and both of its legal traditions (common law and Quebec civil law). Its general-reasoning capability is redistributed rather than retained: an independent paired re-measurement against the base, dated 2026-09-21, establishes gains on some general benchmarks and losses on others (see Independent paired re-measurement against the base). Its vision capability is inherited from the base model, whose vision tower was frozen during training; no figure on this card measures it.
- Version:
flash-1-mini-20260602 - Developed by: Alpine Pacific Trading Inc. (operating as SimpleDirect®)
- Base model: Qwen3.5-4B (Apache-2.0)
- License: Apache-2.0
- Languages: English, Canadian French
- Modalities: Text + image input → text output
- Code & examples: github.com/getsimpledirect/flash-1-mini
Model at a glance
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.
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%.
- General benchmarks on the older protocol — MMLU unchanged (~69.8%); complex multi-step reasoning improves (BBH 79.0% vs 68.6%). Two tasks only — see Independent paired re-measurement against the base.
- 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 torch
from 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"
)
# Text
messages = [{"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:
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' > Modelfile
ollama create flash-1-mini -f Modelfile
ollama run flash-1-miniGGUF 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.
How these figures are recorded, and what that costs you
🔴 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.
Independent paired re-measurement against the base (2026-09-21)
This is a separate, later measurement from the figures above. It was run to check one sentence that used to stand in this card's opening description, which asserted that the model inherited its base model's general-reasoning capability in full, alongside its vision capability. The general-reasoning half of that claim is not supported and has been replaced. Nothing in this section bears on the vision half, which was not tested.
🔴 These numbers do not revise the figures in the Benchmarks table above. The two sets used different protocols, different task selections and different scoring, and the older set's protocol is not recoverable (see How these figures are recorded). They are two measurements of different things, not an old value and a corrected one. The MMLU and BBH figures in Highlights belong to that older, unrecorded set; this re-measurement neither confirms nor revises them.
Provenance.
- Arms:
simpledirect/flash-1-miniagainst its baseQwen/Qwen3.5-4B, bf16 safetensors on the Transformers path. The exact revision digests of the two arms are not recorded on this card. - Harness:
lm-evaluation-harness0.4.11. - Protocol: bf16, batch size 8, seed 0, greedy decoding, no chat template, 0-shot on every task except GSM8K, which is 5-shot. Generation was capped at
max_gen_toks=512on both arms for GSM8K; the other five tasks are loglikelihood-scored and generate nothing. - Analysis: exact McNemar on the per-example records, aligned by
doc_idwith item identity verified bydoc_hash. Intervals are 90% Clopper-Pearson. Multiplicity correction is Holm-Bonferroni across this model's six tasks — the family is those six tasks on this one model, and the question it answers is which single differences can be relied on. - Date: measured 2026-09-21.
- The per-example discordant counts (
b_only/c_only) behind each row live in the run records and are not reproduced on this card. - Measured on the bf16 safetensors. No GGUF tier was evaluated here either.
Established after Holm-Bonferroni correction — four of the six tasks. Gains and losses are in the same table, in task order, with no row emphasised:
So the direction is not uniform: capability is redistributed by the specialization rather than preserved by it. Two tasks move up, two move down, and the largest single movement in either direction is a loss (GSM8K, −9.25 pp) — which is also the least stable of the four, for the reason given below.
Not established — the remaining two tasks. WinoGrande (−0.40 pp, p = 0.77) and PIQA (−0.11 pp, p = 0.92) do not reach significance even before correction. Two things to be clear about: "not established" is not "no difference", and this card does not record the item counts or intervals for these two, so no upper bound on either difference is stated here and neither point estimate should be cited as a sized delta. What is on record is that neither survived.
Two caveats, at equal prominence with the results.
- MMLU is the cleanest row here. It is loglikelihood-scored — the model generates nothing — so none of the generation-budget sensitivity that affects GSM8K applies to it. It also reproduced exactly across two independent runs (0.7211 for flash-1-mini against 0.7431 for the base, both times). Be precise about what that second fact buys: under greedy decoding on a fixed item set, repeated runs reproducing is a statement about harness determinism and is not evidence that the two arms differ. The evidence that they differ is the paired McNemar test and the interval in the table, and nothing else.
- GSM8K is the least stable row here. The generation cap alone moves GSM8K scores by up to 10.7 pp on this base, and each model over-generates by a different amount, so the cap reweights the comparison rather than cancelling out of it. Read −9.25 pp as directional and protocol-dependent: it is what this cap produced, and a different budget could produce a materially different number. Both arms ran at the same cap, and the cap is stated above — that is the most that can be said for it.
What this section does not cover. These are six general-capability text benchmarks. They say nothing about Canadian legal citation work, nothing about French, and — like every other figure on this card — nothing about the image path.
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.
- Real-world outcomes. 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.
- Unmeasured paths are not safe paths. 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 What is not measured yet.
- No certification is implied. This is an open-weight release for independent evaluation. No law society, regulator or government body has reviewed, certified or endorsed it.
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}}
}