Applied AI · Technical integration · Alsace, France
Plug an LLM into your data, without letting it leave
- MCP
- C# MCP SDK
- Microsoft.Extensions.AI
- Mistral (Apache 2.0)
- vLLM · llama.cpp
- pgvector
- Mistral OCR 4
- Format
- Contract work or a short scoped assignment, at the same rate as a .NET assignment
- Stack
- .NET 10 LTS, C# MCP SDK, Microsoft.Extensions.AI, Postgres + pgvector
- Models
- Mistral under the Apache 2.0 licence - Ministral 3, Small 4, Large 3 - and Mistral OCR 4
- Hosting
- Your servers, a European API or a dedicated GPU: the choice is documented before signing
- Frame
- AI Act article 50 since 2 August 2026 · French data protection authority guidance of 18 July 2024
Where to start
The blocker is neither the budget nor data protection law. Across more than 4,700 companies surveyed by Bpifrance Le Lab (13 January 2026), 65 % of the executives who do not use generative AI say they cannot identify a use case. In Alsace, 28 % of companies use AI and 14 % are considering it. So the problem is not picking a model: it is knowing what to plug it into.
We start from the other end. A process that costs time every day, resting on documents you already own: contracts, procedures, specifications, service reports, technical catalogues. We measure the time spent today, install the minimum that answers, and measure again. A scoping exercise sometimes ends with “this use case does not justify AI” - that is a result, not a failure, and it costs less than a pilot abandoned after six months.
The rest of this page says how I do it. The other areas I work in - .NET, legacy modernisation, Next.js - are on the expertise page.
What I deliver
Four building blocks, all written in .NET 10 LTS, supported until November 2028. Every step is versioned, tested and replayable: no no-code platform anywhere in the chain.
01
A RAG whose every answer cites its source
A document assistant hosted on your own infrastructure: the model weights and the vector index stay on your machines. Every answer cites the document and the paragraph it comes from, which makes it verifiable by whoever reads it. The index lives in Postgres with the pgvector extension and an HNSW index - PostgreSQL 18 has no native vector engine, the extension remains the right answer.
Postgres + pgvector · Mistral models under the Apache 2.0 licence
02
Document extraction, with nothing sent to a third party
Mistral OCR 4 ships as a self-hosted container: your PDFs never leave the network. The output is structured, reviewed by a human on the fields that commit you - amount, date, reference, contract number - and replayable over a whole batch the day the model changes. An extraction that cannot be replayed is not a product, it is a demo.
Mistral OCR 4 · a single container on your server
03
A business assistant plugged into the ERP through MCP
A purpose-built MCP server exposes your ERP or your document management system to an LLM client: scope limited to the operations you decide, rights taken from your directory, every call logged. The MCP specification of 28 July 2026 is governed by the Linux Foundation and the C# SDK 2.2 is under the Apache 2.0 licence: it is .NET code, versioned and tested like the rest of your system.
C# MCP SDK 2.2 · specification 2026-07-28
04
The regulatory frame held, without drama
Article 50 of the EU AI Act has applied since 2 August 2026: disclose that a person is talking to an AI, mark generated content. The high-risk obligations, on the other hand, are postponed to December 2027. That leaves time to build properly rather than in a rush - provided you know now which category your use case falls into, and write it down.
AI Act article 50 · applicable since 2 August 2026
What it looks like in service
A business question, the passages retrieved from your documents, the answer and its sources. The bottom bar states the model, the hosting and the outbound traffic: that is what an IT department looks at first.
question
› What is the contractual warranty period on the extrusion range for customer BX-2041?
search · 3 passages retrieved (pgvector, HNSW)
- contracts/BX-2041/T&C-2025.pdf§ 7.2 Warranty
- contracts/BX-2041/amendment-03.pdfart. 2
- quality/after-sales-extrusion.docx§ 4
answer
24 months from commissioning, extended to 36 months by amendment no. 3 of 12/03/2025 for marking heads. Consumables are excluded (after-sales procedure § 4).
sources: T&C-2025 § 7.2 · amendment-03 art. 2 · after-sales § 4
1.9 s · 0 outbound call
- model: Ministral 3 14B (Apache 2.0)
- hosting: your server, Alsace
- outbound traffic: none
Where your data goes
“Your data never goes to the United States” is a sentence nobody can hold while calling an American model. There are three technical choices, and each has different consequences for data residency, for cost and for what the system can do. Yours is written down before anything is signed.
| API outside the EU | European API | Self-hosted | |
|---|---|---|---|
| Where the data goes | At the vendor, stored in the United States (e.g. Anthropic) | At a European vendor, in the EU (e.g. Mistral) | On your servers or at Sanfytech (OVHcloud, France): it never leaves |
| Cost | Per token, in dollars | Per token, in euros: the cheapest option under a few tens of millions of tokens per month | A dedicated GPU, roughly €600 to €1,400 (excl. VAT) per month depending on load |
| What it enables | The most powerful models | Open, competitive models, European data-processing agreement | Sensitive documents, internal RAG, no outbound call, full traceability |
| When I recommend it | Never for personal data or confidential documents | For most SME use cases | When the regulator advises it: personal data or sensitive documentation |
For personal data or sensitive documentation used in a RAG, the French data protection authority writes that an on-premise solution is “more advisable and more secure”, and that RAG “offers better traceability” - questions and answers of 18 July 2024.
If you have neither servers nor an operations team, hosting can go through Sanfytech, the studio I co-founded in Strasbourg, on OVHcloud servers in France. What is not covered: neither SecNumCloud nor health-data hosting certification. If your project requires either, hosting goes to a qualified operator, named before signing.
What it costs
Orders of magnitude, not a quote: the exact costing depends on the volume of documents and on the number of concurrent users. What matters is that you know it beforehand, and not on the day of the go-live.
- European API - Mistral charges $0.50 per million input tokens. Below a few tens of millions of tokens per month, that is cheaper than a dedicated GPU. Saying so is part of the job, even when it removes a line from the infrastructure bill.
- Dedicated GPU - a 48 GB L40S, in the region of €1,050 to €1,400 excluding VAT per month, holds a load of five concurrent users on an internal RAG. A 24 GB L4 costs less but collapses at that same five-user mark (benchmark of 20 February 2026). That is the difference between a pilot that reaches production and a pilot that gets buried.
- Model licences - none. The Mistral models used here are under the Apache 2.0 licence: self-hostable, fine-tunable, usable with no per-token royalty.
- My days - one daily rate, shared in my first reply, together with my availability. As contract work or a short scoped assignment, invoiced on days actually worked, travel included along the Strasbourg - Sélestat axis.
What belongs to the hype
Better said before we work together: three common promises do not hold today, and I will not sell them.
- “End-to-end autonomous agents”- METR's measurements put success below 10 % on tasks longer than four hours. As early as 25 June 2025, Gartner forecast that more than 40 % of agentic AI projects would be abandoned by the end of 2027. An assistant confined to a narrow scope, on the other hand, works.
- “Our private LLM matches GPT” - it does not. A self-hosted 8 to 14 billion parameter model is very good on a bounded domain with a RAG behind it; it does not match the largest hosted models on general reasoning. The two uses are not comparable.
- “10x productivity” - no figure of that kind survives a before-and-after measurement on your own process. Which is precisely why we measure.
What does work, and what I deliver: a RAG that cites its sources, document extraction reviewed by a human, an assistant confined to a scope, short automations that are logged and replayable in .NET, and time saved measured on a pilot before anything is widened.
FAQ
Frequently asked questions
Do we need to buy a GPU to get started?
No, and starting there is often a mistake. A European API is enough to prove a first use case: below a few tens of millions of tokens per month it costs less than a dedicated GPU. The GPU is justified when the documents must not leave your network, or when the volume goes past that threshold. In both cases the infrastructure budget is stated at the start.
How do we know the model's answer is correct?
Through citation and through acceptance testing. Every answer points back to the document and the paragraph it used, so the reader can check in one click. And before going live we build a set of questions whose answers you already know, then measure the share of correct answers and the time spent before and after. Without that question set, nobody can say whether the assistant is improving or degrading.
What does an MCP server bring over a bespoke integration?
A reusable connector instead of a throwaway wiring job. The MCP specification of 28 July 2026 is governed by the Linux Foundation and the C# SDK 2.2 is under the Apache 2.0 licence: the same server that exposes your ERP serves several LLM clients, and it stays an ordinary .NET project - compiled, tested, versioned and deployed by your continuous integration pipeline.
Does it hold up with several users at once?
That is the question nobody asks before production, and the one that kills pilots. A benchmark of 20 February 2026 measures a 24 GB L4 GPU collapsing at five concurrent users, where a 48 GB L40S holds. On the software side, vLLM serves multi-user workloads and llama.cpp suits a single isolated machine. Sizing is costed during scoping, not discovered at launch.
What happens to the integration code at the end of the assignment?
It is yours. The code, the repository and the secrets sit with you from the first commit, and so do the weights of any self-hosted model. The integration is written in .NET 10 LTS, supported until November 2028: it is not a Python prototype to rewrite in a year, it is a component of your system that your own team can take over.
A use case to prove?
Describe your documents, your systems and what you expect from the machine. I reply with my real availability - or with the reasons this use case does not justify AI.
Reply within one business day, with my real availability