Startup case study

Selvren — answers you can verify.

I founded Selvren and lead its build with a team of AI coding agents: the architecture, the rules, the merge gate and the review are mine. Teams ask domain experts that read their own private documents — and every claim is checked against its sources before it’s shown.

  • 3,182 commits in 11 weeks
  • 11,901 tests in the merge gate, none skipped
  • 28 architecture decision records
  • 0.96 recall@6 on private retrieval (from 0.65)
  • Founder & CEO
  • Product direction
  • Architecture decisions
  • Merge gate & review
  • AI agents write most of the code
Consultation screen from the landing I designed — illustrative content: two experts plus a private document, a cited answer, and “missing information” when the sources fall short.
  • Experts

    Built from attested sources. Two are live — aquarium keeping and garden centre — more in preparation. One question can call up to three.

  • Where teams work

    Dashboard, private API and MCP are live. Slack and Teams connectors are built and stay switched off until a customer needs them.

  • Private by design

    Originals encrypted, access re-checked after every retrieval, conversations kept 30 days, export and erasure built in.

  1. 1 Clients

    Dashboard (TanStack Start + Clerk), private API keys — hashed, scoped, revocable — and MCP.

  2. 2 API

    Fastify /v1, one modular app: identity, knowledge, licensing, notifications, catalogue.

  3. 3 Ingest

    12 formats + bounded ZIP, antivirus scan, originals encrypted (AES-256-GCM), chunks ≤ 3,500 chars, Mistral embeddings (1,024-d).

  4. 4 Store

    PostgreSQL 17 + pgvector, 112 tables, row-level security; the app role can only call vetted functions.

  5. 5 Retrieve

    Private documents and the expert catalogue merged by rank fusion; access rights re-checked after retrieval.

  6. 6 Answer

    Mistral drafts, a rule-based verifier checks each claim; it abstains or quotes when sources are thin. Bring your own key.

Measured, not guessed

recall@6

before 0.65 after 0.95

MRR

before 0.44 after 0.71

Adding a context prefix before embedding — synthetic set of 56 questions over 104 passages.

Engineering rigor

  • A merge gate on a VPS: 9 core steps + 5 security steps (secrets, SBOM, dependency audits).
  • 1,197 TypeScript test files (~9,800 cases) and 82 Python test files (1,138 cases).
  • GDPR: data export and erasure, 30-day retention for conversation content.
  • Outbound traffic limited to six allowed hosts.

Decisions I made — and why

Each choice is written down as an architecture decision record before the agents build it. Six of them:

  1. ADR-0005 A modular monolith first

    Small team, boundaries still moving: one app with 14 strict modules, simple transactions and tests, async work extractable later.

  2. ADR-0016 Mistral, directly

    Testing showed that asking a router for a Mistral model didn’t mean Mistral ran it — other providers did. Generation now goes straight to Mistral.

  3. ADR-0021 Benchmark, then switch

    Expert retrieval moved from term matching to vectors after a benchmark on 1,927 attested passages and 60 French questions — about $0.06 of embeddings.

  4. ADR-0023 Useful answers, verified claims

    Answers may paraphrase and combine sources, but every claim traces to a passage; numbers, dates, conditions and negations are checked, or it abstains.

  5. ADR-0028 · 0029 European, self-hosted, observable

    Production on a VPS in Germany; Grafana, Loki, Tempo, GlitchTip and the status page on a second one in Lithuania, so alerts survive an outage. Private originals on Backblaze B2, Amsterdam.

  6. ADR-0032 Subscriptions on quote

    Stripe invoices by card or SEPA with VAT handled. Live payments stay off until I switch them on myself — no agent touches a live key.

The codebase

  • 3 apps — API, web, widget
  • 14 modules
  • 143 database migrations
  • 27 API contracts
  • 146 delivery records
  • 449 docs

Audited before opening

  1. 1 Aug Pre-launch audit: NO-GO, 3.1/10. It became the roadmap.
  2. 17 Sep Enterprise knowledge and retrieval audit.
  3. 23 Sep UI/UX audit of the public site.
  4. 25 Sep Launch readiness: the site can be shown, 101 pages with no broken link — and five blockers to clear before opening the product.

Pricing, published 28 Sep

  • Essential €99 excl. VAT / month 1 expert · 5 members
  • Team €249 excl. VAT / month 3 experts · 20 members
  • Business €599 excl. VAT / month 10 experts · 50 members

Large accounts on quote. Every plan leads to a quote request — there is no online payment yet.

How it evolved

  1. May 2026 Canoopea — a pet-shop chatbot, RAG over a product catalogue.
  2. Jul 2026 AquaChat — a B2B advisor for aquarium stores, with a PrestaShop connector.
  3. Sep 2026 Pivot to experts first, then API first — renamed Selvren.
  4. 20 Sep Open-source build kit: TypeScript SDK + React components (MIT).
  5. 28 Sep Pricing published; public opening in preparation.
selvren-build-kit on GitHub ↗
Early dashboard (AquaChat era) · demo data

More case studies

Own product · in development

Where?

344 designed flow steps

Plan outings alone or in groups, then reveal the map by actually going. Product, UX, iOS app and backend — all mine, built with a team of AI agents.

  • Expo
  • iOS → Android
  • TypeScript
  • Fastify
  • PostGIS
  • Mapbox
Read the case study

R&D · open source

MoEVM

3.1× vs llama.cpp op-offload, identical output

Expert paging and a persistent Metal pool to run MoE models that don’t fit in GPU memory on Apple Silicon — up to a 58 GiB model on a 48 GB Mac, with output identical to llama.cpp without MoEVM.

  • C++
  • Metal
  • llama.cpp
  • GGUF
  • Benchmarking
Read the case study

Let’s build something.

I take freelance projects: I design, build and ship AI tools wired into the software your team already uses. Also open to joining a team or a startup that needs someone who builds — remote-first today, regular stays in Seoul, and a move to Korea ahead.

Email me GitHub ↗ LinkedIn ↗

Or reach me directly

  • WhatsApp +33 6 19 32 62 26 Open ↗
  • KakaoTalk ID Maxence.foulon

Download my resume

Pick a language — both versions tell the same story, 3 pages each.

Maxence Foulon © 2026 Designed and built by Maxence Foulon.