In production

Sovereign generative AI, in production at the Calvados département

The Calvados département runs a sovereign generative AI in production across the whole département: an open weight model served by the platform itself, sourced answers drawn from the documents, and a GPU server rented in the European Union, Monday to Friday and during the day only.

A sovereign AI at county scale

Local authority
Calvados département (Département du Calvados)
Status
in production for more than 6 months
Scale
a county of around 700,000 residents
Access
assistant connected to the county SSO
Model
Mistral Small 3.2 (24B), open weight, served by vLLM
Model compute
one GPU rented in the EU, Monday to Friday, during the day
Usage
73 active users, 12,940 messages processed, 1 single GPU (figures provided by PixelRaise)

The principle: an open stack, controlled end to end

The Calvados département, home to around 700,000 residents, has put into production an AI assistant connected to the county SSO, with European hosting and open source models.

This case study does not describe how the Département uses it: those uses belong to the Département and are not detailed here. It shows what carries over from one deployment to the next, that is, the architecture, the software building blocks and the way they are operated.

What the stack includes

  • the Mistral Small 3.2 (24B) language model, served by the vLLM inference engine;
  • the RAG pipeline: document extraction, semantic search, BGE re-ranking and sourced answers;
  • the Open WebUI portal, for working with documents and knowledge bases;
  • a GPU server for the model, rented in the European Union, Monday to Friday during the day, deleted every evening and rebuilt from scratch every morning;
  • a WireGuard encrypted tunnel and Prometheus monitoring.

What is specific to each authority (authentication, knowledge bases, usage figures) is not covered here.

The technical stack: open building blocks, operated end to end

  • An open weight model, served by the platform

    Mistral Small 3.2 24B Instruct (version 2506), released by Mistral AI under the Apache 2.0 licence, runs in a vLLM container on the GPU server and is queried through an OpenAI-compatible API. The language model and the embedding model share a single GPU: an NVIDIA A100 80 GB by default, with automatic fallback to an H100 or an H200 when it is unavailable.

  • Sourced answers

    Extracted text is split into chunks, embedded by an embedding model also served by vLLM on the same GPU, then searched semantically. The BAAI bge-reranker-v2-m3 reranker, also served by vLLM, re-orders the retrieved chunks before they are passed to the model, for sourced answers.

  • Multi-format extraction

    PDF (native text, tables converted to Markdown, GPU OCR of images with orientation detection using docTR), recent Word, PowerPoint and Excel documents (.docx, .pptx, .xlsx) and HTML pages using Docling, and text files (txt, csv, md, json, xml, source code). The extraction engine writes each document to a temporary file, deletes it after processing and sends the extracted text back to the portal.

  • A collaborative portal

    The interface is Open WebUI: chat, documents and knowledge bases. The portal is configured through its API to use the platform's own extraction engine and reranker.

  • Daytime compute, in the EU

    From Monday to Friday, a scheduled task creates and configures the model's GPU server in the morning, then shuts it down and deletes it in the evening: it is rebuilt from scratch each morning and is not created at weekends. This server is only rented in data centres located in the European Union.

  • An encrypted tunnel, monitored operations

    At every start, the model's GPU server joins a WireGuard encrypted tunnel that links it to the portal. Each internal service (model, embeddings, reranker, extraction) requires an access token. Prometheus monitors the GPUs and the inference engine, and an email report is sent at every start and every shutdown, with an alert if anything fails.

What this demonstrates

  • A reproducible model. The stack first deployed in a conurbation is in production in a département, with the same model and the same architecture: a local authority does not have to start from a blank page.
  • Sovereignty built into the architecture. The language model, embeddings, re-ranking and extraction are served by the platform itself, rather than called from an AI provider. The model's server is rented in the European Union and linked to the portal by an encrypted tunnel.
  • Costs contained by design. The model's GPU server is only rented Monday to Friday during the day, the model and the embeddings share a single GPU, and before each start a check verifies that the compute credit covers the day. The actual cost depends on the hosting provider's offer and on the other services, which may stay on.
  • Automated operations. Starting, configuring and shutting down the model's GPU server, as well as the reports, need no manual intervention; monitoring covers the GPUs and the inference engine.

What we can share

The figures on this page (73 active users, 12,940 messages processed, 1 single GPU, in production for more than 6 months) are provided by PixelRaise. They have not been published by the Département.

Proof of scalability. From 90,000 to 700,000 residents: same architecture, same fixed cost, same sovereignty.

It describes the technical stack as configured in the platform's code. Uses, the teams using it and the hosting of the portal are specific to the Département and are not detailed here.

The same stack for your organisation?

A demonstration on your own documents, then a pilot scoped in writing, with exit criteria agreed in advance.