<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://insights.klusai.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://insights.klusai.com/" rel="alternate" type="text/html" hreflang="en" /><updated>2026-09-28T04:50:59+00:00</updated><id>https://insights.klusai.com/feed.xml</id><title type="html">KlusAI Insights</title><subtitle>What we learned building kOS, its verticals and the models behind them. Written from the code, the incidents and the measurements, not from the outside looking in.</subtitle><author><name>KlusAI</name><email>hello@klusai.com</email></author><entry><title type="html">DONNAJAMES and KlusAI: one platform for Dutch legal professionals</title><link href="https://insights.klusai.com/kos/customers/2026/09/23/donnajames-one-platform-for-dutch-legal-professionals.html" rel="alternate" type="text/html" title="DONNAJAMES and KlusAI: one platform for Dutch legal professionals" /><published>2026-09-23T00:00:00+00:00</published><updated>2026-09-23T00:00:00+00:00</updated><id>https://insights.klusai.com/kos/customers/2026/09/23/donnajames-one-platform-for-dutch-legal-professionals</id><content type="html" xml:base="https://insights.klusai.com/kos/customers/2026/09/23/donnajames-one-platform-for-dutch-legal-professionals.html"><![CDATA[<p style="font-size: 1.2rem; line-height: 1.55; color: var(--text-secondary); margin: 0 0 1.4rem;">
  One platform, built for more than 200 Dutch legal professionals. Powered by Claude, built on kOS, and production-ready in about twelve weeks from kickoff.
</p>

<div class="chip-row" style="margin: 0 0 2rem;">
  <span class="chip chip-accent">Platform build and production deployment</span>
  <span class="chip chip-muted">Legal technology</span>
  <span class="chip chip-muted">Operating platform for Dutch legal professionals</span>
  <span class="chip chip-muted">Tilburg, the Netherlands</span>
</div>

<div class="card-grid cols-3" style="margin: 0 0 1.25rem;">
  <div class="card" style="display: block; text-align: center; padding: 1.6rem 1.2rem;">
    <div style="font-family: var(--font-display); font-weight: 600; font-size: 2.6rem; line-height: 1; color: var(--accent); margin: 0 0 0.6rem;">200+</div>
    <p class="eyebrow" style="margin: 0; font-size: 0.66rem; color: var(--text-secondary);">Legal professionals onboarding, each as its own tenant, through October 2026</p>
  </div>
  <div class="card" style="display: block; text-align: center; padding: 1.6rem 1.2rem;">
    <div style="font-family: var(--font-display); font-weight: 600; font-size: 2.6rem; line-height: 1; color: var(--accent); margin: 0 0 0.6rem;">~70%</div>
    <p class="eyebrow" style="margin: 0; font-size: 0.66rem; color: var(--text-secondary);">Faster document anonymisation · early results</p>
  </div>
  <div class="card" style="display: block; text-align: center; padding: 1.6rem 1.2rem;">
    <div style="font-family: var(--font-display); font-weight: 600; font-size: 2.6rem; line-height: 1; color: var(--accent); margin: 0 0 0.6rem;">15%</div>
    <p class="eyebrow" style="margin: 0; font-size: 0.66rem; color: var(--text-secondary);">Of the working week saved · early results</p>
  </div>
</div>

<figure class="card" style="display: block; margin: 0 0 2.25rem; padding: 1.8rem 2rem; border-left: 4px solid var(--accent); background: var(--accent-soft-bg); border-color: var(--accent);">
  <blockquote style="margin: 0; padding: 0; border: none;">
    <p style="font-family: var(--font-display); font-weight: 600; font-size: 1.45rem; line-height: 1.35; margin: 0 0 1rem; color: var(--text);">“The KlusAI team is fast, precise and direct. KlusAI has extensive knowledge of complex hybrid RAG and open-weight models.”</p>
  </blockquote>
  <figcaption class="eyebrow" style="margin: 0; color: var(--accent-soft-text);">Anand Jansen · CTO, DONNAJAMES</figcaption>
</figure>

<div class="card" style="display: block; margin: 0 0 2.5rem; background: var(--surface-alt);">
  <p class="eyebrow">In brief</p>
  <p style="margin: 0;">DONNAJAMES supplies an operating platform for Dutch legal professionals, built on KlusAI WebOS and the Anthropic Claude API. KlusAI delivered the production deployment on European infrastructure. Each practice operates as its own tenant. The platform anonymises legal documents, extracts data and gives research results with source citations. Client data stays in the European Economic Area and is not used to train models.</p>
</div>

<h2 id="the-challenge">The challenge</h2>

<p>Legal professionals run on confidential documents. Before any of them can be
analysed, identifying details must be removed and the data inside has to be
captured. Every research answer a lawyer relies on must trace back to its
source.</p>

<p>DONNAJAMES wanted to do this for hundreds of independent practices at once,
with three non-negotiables: each practice’s data kept strictly separate, all
processing inside the European Economic Area, and no client data ever used to
train models. And it had to be live in months, not years.</p>

<h2 id="claude-at-the-core">Claude at the core</h2>

<p>We chose Claude for the work where quality matters most. In the DONNAJAMES
platform, Claude understands the documents, extracts the data they contain,
runs research across Dutch legislation, professional guidance and each
practice’s own precedents, and cites every source it uses, so a lawyer can
verify every answer. It also powers the assistant, a library of task-specific
micro-agents, and drafting from the practice’s own Word templates.</p>

<div class="card" style="margin: 1.5rem 0 2.5rem; display: block;">
  <p class="eyebrow">Powered by Claude</p>
  <div class="chip-row" style="margin: 0.4rem 0 0.9rem;">
    <span class="chip chip-accent">Claude Opus 5</span>
    <span class="chip chip-accent">Claude Opus 5.5</span>
    <span class="chip chip-accent">Claude Sonnet 5</span>
    <span class="chip chip-accent">Claude Fable 5.1</span>
  </div>
  <p style="margin: 0; color: var(--text-secondary);">Running through the Anthropic Claude API, each model matched to the work it does best: reading and understanding legal documents, extracting their data, researching with citations and drafting.</p>
</div>

<h2 id="built-on-kos-live-in-weeks">Built on kOS, live in weeks</h2>

<p>kOS, the EU-sovereign platform we build and run our own products on, already
covered an estimated 70–80% of DONNAJAMES’s requirements: multi-tenancy,
hybrid retrieval with reranking, an agentic assistant with MCP support,
document generation and full observability. That head start let a compact team
of an architect, an engineer and a delivery lead go from kickoff to
production-ready in six two-week sprints.</p>

<div class="card-grid cols-2" style="margin: 1.5rem 0 2.5rem;">
  <div class="card" style="display: block;">
    <h3>Every practice its own tenant.</h3>
    <p style="margin: 0;">Own users, knowledge base, assistant, branding and access controls.</p>
  </div>
  <div class="card" style="display: block;">
    <h3>Anonymisation and extraction.</h3>
    <p style="margin: 0;">Legal documents anonymised and turned into structured data.</p>
  </div>
  <div class="card" style="display: block;">
    <h3>Research with citations.</h3>
    <p style="margin: 0;">Answers grounded in legislation, guidance and the practice's own precedents.</p>
  </div>
  <div class="card" style="display: block;">
    <h3>Drafting and dictation.</h3>
    <p style="margin: 0;">Documents from the practice's own templates, and Dutch speech-to-text with a legal vocabulary.</p>
  </div>
  <div class="card" style="display: block;">
    <h3>European by design.</h3>
    <p style="margin: 0;">Processing in the EEA; client data never used to train models.</p>
  </div>
</div>

<h2 id="early-results">Early results</h2>

<p>The platform went live in September 2026 and onboarding is under way, with
more than 200 legal professionals expected on the platform by October. The
first weeks in production already show the impact: anonymising documents is
approximately 70% faster, and users save around 15% of their working week.</p>

<div class="card-grid cols-2" style="margin: 2.5rem 0 0;">
  <div class="card" style="display: block; background: var(--surface-alt);">
    <p class="eyebrow">About DONNAJAMES</p>
    <p style="margin: 0;">DONNAJAMES supplies an operating platform for Dutch legal professionals. <a href="https://www.donnajames.nl">www.donnajames.nl</a></p>
  </div>
  <div class="card" style="display: block; background: var(--surface-alt);">
    <p class="eyebrow">About KlusAI</p>
    <p style="margin: 0;">KlusAI is an applied AI company based in Cluj-Napoca, Romania. We build kOS, the EU-sovereign platform our use cases run on, and take AI products built on Claude from idea to production.</p>
  </div>
</div>

<div class="card" style="display: block; text-align: center; margin: 2.5rem 0 0; padding: 2.25rem 1.5rem;">
  <p style="font-family: var(--font-display); font-weight: 600; font-size: 1.35rem; margin: 0 0 1.1rem;">Have a use case that needs to reach production?</p>
  <a class="btn btn-primary" href="https://klusai.com/contact/?intent=scoping-session">Book a use-case scoping session →</a>
</div>]]></content><author><name>KlusAI</name><email>hello@klusai.com</email></author><category term="kos" /><category term="customers" /><summary type="html"><![CDATA[One platform, built for more than 200 Dutch legal professionals. Powered by Claude, built on kOS, and production-ready in about twelve weeks from kickoff.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://insights.klusai.com/assets/og-insights.png" /><media:content medium="image" url="https://insights.klusai.com/assets/og-insights.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Four sites, one tracker id, and three dashboards that said Setup pending</title><link href="https://insights.klusai.com/kos/observability/2026/08/09/four-sites-one-tracker-id.html" rel="alternate" type="text/html" title="Four sites, one tracker id, and three dashboards that said Setup pending" /><published>2026-08-09T00:00:00+00:00</published><updated>2026-08-09T00:00:00+00:00</updated><id>https://insights.klusai.com/kos/observability/2026/08/09/four-sites-one-tracker-id</id><content type="html" xml:base="https://insights.klusai.com/kos/observability/2026/08/09/four-sites-one-tracker-id.html"><![CDATA[<p>kOS serves four public sites from one Django application: the company site, two
vertical products, and our compute property. One codebase, one deployment, four
domains resolved by host at request time.</p>

<p>Analytics was a single setting.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">PLAUSIBLE_SCRIPT_ID</span> <span class="o">=</span> <span class="n">os</span><span class="p">.</span><span class="n">environ</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="s">"PLAUSIBLE_SCRIPT_ID"</span><span class="p">,</span> <span class="s">""</span><span class="p">)</span>
</code></pre></div></div>

<p>Every page on every host rendered that one id. So three of the four sites
reported their pageviews into the fourth’s dashboard, and their own dashboards
sat at zero, showing the analytics provider’s cheerful <strong>Setup pending</strong> badge
for months.</p>

<h2 id="why-nobody-noticed">Why nobody noticed</h2>

<p>Because the failure looks exactly like the thing you would expect to see anyway.</p>

<p>A new product subdomain with no traffic is unremarkable. “Setup pending” reads
as <em>you have not finished wiring this up yet</em>, which was true at some point and
so never got questioned. Meanwhile the company site’s numbers went <strong>up</strong>, and
nobody investigates numbers going up.</p>

<p>The tracker was installed correctly, firing correctly, and reporting correctly.
It was reporting to the wrong place, and there is no error for that.</p>

<h2 id="the-fix-and-the-part-worth-arguing-about">The fix, and the part worth arguing about</h2>

<p>The id now resolves per request hostname:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">PLAUSIBLE_SCRIPT_IDS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s">"klusai.com"</span><span class="p">:</span> <span class="s">"..."</span><span class="p">,</span>
    <span class="s">"lex.klusai.com"</span><span class="p">:</span> <span class="s">"..."</span><span class="p">,</span>
    <span class="s">"med.klusai.com"</span><span class="p">:</span> <span class="s">"..."</span><span class="p">,</span>
    <span class="s">"razorbridge.eu"</span><span class="p">:</span> <span class="s">"..."</span><span class="p">,</span>
<span class="p">}</span>
</code></pre></div></div>

<p>Hostname, deliberately, and not the internal notion of which product a request
belongs to. Our architecture separates a <em>vertical</em> (a brand-neutral capability
like legal or healthcare) from a <em>deployment profile</em> (the per-host brand and
storefront). Several hosts can share a vertical. An analytics property is a
domain. Key it by the thing it actually is.</p>

<p>The argument worth having is about the fallback. The obvious design is for an
unrecognised host to fall back to the main site’s id, so tracking never silently
stops. That is precisely the bug: it is how three products’ traffic ended up
somewhere else, and the failure is invisible because the numbers still look
plausible.</p>

<p>An unmapped host now gets <strong>no tracker at all</strong>. An empty dashboard is a
question somebody eventually asks. Contaminated numbers are a decision somebody
eventually makes.</p>

<p>A test reads the deployment-profile registry against the id map and fails if a
public host has no analytics property, so the next product cannot launch into
the same hole.</p>

<h2 id="two-things-this-generalises-to">Two things this generalises to</h2>

<p><strong>Config that is global in a multi-tenant app is a claim that the thing is
global.</strong> Every setting the request path touches deserves the question: is this
per deployment, or per instance? Ours was in the wrong bucket for months and
nothing complained, because nothing could.</p>

<p><strong>A fallback is a decision to be wrong quietly.</strong> Falling back is right when the
degraded state is visible and harmless. When the degraded state is <em>plausible
data</em>, failing closed is kinder to the people who will read it later.</p>

<p>There is a postscript. Fixing the split let us look properly, and we found the
company site had recorded nothing at all for five months on a lapsed
subscription. The tracker was firing the whole time. Two different ways to have
no data, both of which look like a quiet quarter.</p>

<hr />

<p>Building something in a regulated European industry and want it in production
rather than in a slide?
<a href="https://klusai.com/contact/?intent=scoping-session">Book a use-case scoping session</a>.</p>]]></content><author><name>KlusAI</name><email>hello@klusai.com</email></author><category term="kos" /><category term="observability" /><summary type="html"><![CDATA[One Django app serves four public sites. All four shipped the same analytics tracker id, so three products filed their traffic under a fourth, and the fix was less interesting than the reason we could not see it.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://insights.klusai.com/assets/og-insights.png" /><media:content medium="image" url="https://insights.klusai.com/assets/og-insights.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>