8 2 days ago

Typed, calibrated decisions on company signing rules from official registers (Austria first). 4B, no text generation.

decision
curl http://localhost:11434/v1/systemone \
  -H "Content-Type: application/json" \
  -d '{
    "model": "aliildan/signrule-decide",
    "state": "Hello World",
    "questions": {
      "says_hello": {
        "type": "noul",
        "instructions": "Does the state text contain a greeting?",
        "criteria": {
          "true": "The state text contains a greeting.",
          "false": "The state text does not contain a greeting."
        }
      }
    }
  }'

Models

View all →

Readme

SignRule-Decide

Who may sign for this company?

A 4B decision model that reads a company’s signing rule as published by an official commercial register (Austrian Firmenbuch, Norwegian Brønnøysund) together with the registered roles, and answers fixed questions with calibrated probabilities. It does not generate text.

  • Can the managing director act alone? Can two managing directors act together? A managing director with a Prokurist?
  • How many signatures are needed? Which kind of rule is it?

Trained only on labels from the registers themselves (Austrian court codes, Norway’s own rule interpreter). No synthetic data, no labels from language models.

Run it

ollama pull aliildan/signrule-decide
curl http://localhost:11434/v1/systemone -d '{
  "model": "aliildan/signrule-decide",
  "state": {
    "jurisdiction": "AT",
    "legal_form": "GmbH",
    "signature_rule": "Geschäftsführer [PERSON_1]: vertritt seit 01.03.2019 gemeinsam mit einem weiteren Geschäftsführer; Geschäftsführer [PERSON_2]: vertritt seit 01.03.2019 gemeinsam mit einem weiteren Geschäftsführer",
    "roles": [{"role": "Geschäftsführer", "count": 2}]
  },
  "questions": {
    "ceo_alone": {"type": "noul", "instructions": "Can the managing director (CEO), by virtue of that office, bind the company alone?"},
    "two_ceos": {"type": "noul", "instructions": "Can two managing directors together bind the company?"}
  }
}'

Answer: ceo_alone 0.001 (no), two_ceos 0.998 (yes).

  • Use the question wordings from configs/questions.yaml; the calibration belongs to them.
  • Keep the state keys in this order: jurisdiction, legal_form, signature_rule, procuration_rule, roles, role_notes. Replace names with [PERSON_1], [PERSON_2], …
  • macOS: runs on MLX by default. Linux: needs Ollama’s MLX bundle (ollama-linux-amd64-mlx, CUDA 13) and MLX_CUDA_CONV_CACHE_SIZE=8192, MLX_CUDA_GRAPH_CACHE_SIZE=8192 in the server’s environment.

Accuracy

On reference sets the model never saw in training:

Austria (400 extracts): office and coalition questions 99.5 %
Austria: minimum signers 96.9 %
Austria: dangerous errors (“can sign” when it cannot) 6 of 2,178
Norway (texts the official interpreter could not read): rule type 95.5 %
Denmark (never trained on, beta): coalitions 93.2 %

The reference answers come from two different AI assistants, kept where both agree and spot-checked by a person, so the numbers measure agreement with that consensus, not fully human labels. Measured on the model’s PyTorch weights; this q8 build gives the same decision on 99.9 % of 4,308 answers (largest probability difference 0.10, on answers the model was unsure about). Publishing it deviates from the pre-registered rule (every probability within 0.02); the project owner decided to release it anyway.

image.png

Limits

  • Not legal advice. A register can be out of date, and articles of association can contain powers the register text does not show. Keep a person in the loop for binding decisions.
  • It can be wrong with high confidence. Ollama gives calibrated probabilities but no abstention, name masking or consistency check; for those, use the reference server in the GitHub repository.
  • Denmark is a beta: the model has never been trained on Danish texts.

More

  • Code, evaluation and the reference server: https://github.com/aliildan/signrule-decide
  • Paper: https://doi.org/10.5281/zenodo.23224941
  • Licence: Apache-2.0. Base model Qwen/Qwen3.5-4B-Base (Apache-2.0), trained with strands-decider (Apache-2.0). Contains information derived from Brønnøysundregistrene (NLOD) and the Firmenbuch – Bundesministerium für Justiz / JustizOnline (HVD), CC BY 4.0. No register data is included.