Jorick Michiels

Innerveld (in development)

A platform for facilitated gatherings, on a multi-tenant foundation of my own

Innerveld (a working title) is to become the place where facilitators publish gatherings for inner work and participants find them, sign up and pay. Built on a foundation of my own for platforms with many organisations. It runs on a test environment; the pilot is being prepared.

Own businessComing soon

  • Product design
  • Multi-tenant SaaS
  • Next.js
  • TypeScript
  • PostgreSQL
  • Row-level security
Client
Own venture
Role
Product designer, analyst & builder
Period
2026 – now

In short

The question
Facilitators of gatherings for inner work need one place for their offer, sign-ups, payments and invoices, and participants need one place to find them.
Approach
I define the product, the audience and the requirements, choose between design directions and build it with agentic coding, on a multi-tenant foundation of my own.
Delivered
A platform running on a test environment: calendar, offer builder, sign-up and payment through Mollie Connect, Belgian invoicing, sign-in without a password and self-service privacy, in five languages.

What it will be

Innerveld (a working title) is to become the place where people in Flanders find facilitated gatherings for inner work: family constellations, breathwork, sound baths, silence, retreats. For the facilitators, called guides on the platform, it is to become the place where their practice is in order online: their offer, sign-ups, payments, invoices and a website of their own. Publish once, and it appears on the central calendar and on their own site.

Today the platform runs on a test environment, with made-up demo practices. The pilot with a first guide is being prepared, and the name is still a working title.

A foundation for several platforms

Innerveld is the first product on a foundation I am building for platforms on which many organisations work at the same time (multi-tenant). The shared building blocks are separate from the product: sign-in, practices and their domains, payments, invoicing, privacy, languages, AI, background jobs, email and storage, each as its own package in one monorepo (pnpm, Turborepo, TypeScript strict). A next platform does not have to start from zero.

At its heart is the separation between practices. Every row in the database belongs to one practice, and PostgreSQL itself enforces that a practice only sees its own rows (row-level security). The application never connects as the owner of the database but as a restricted role, and tests run as that role to prove that reading or changing across the boundary fails. A leak would take a bug in the application and in the database rules at once.

One foundation for every platform, with each practice isolated inside the database itself.

A calendar that reads like a programme

For participants, the calendar is the front door. It reads like a printed programme: seasons and months, series with their evenings, how many places are left, and in between, blocks that explain what a way of working is or how prices work. Filters on way of working, region, price and language narrow it down.

The image of the platform is a field of grasses and flowers drawn in code, which takes on the colour of the hour of the day and the season. Everything exists in five languages, with translated addresses and the right signals for search engines.

One calendar in five languages, with a field that follows the visitor's clock.

The offer in plain words

The hardest question was in the data model. A guide gives a one-off evening, a retreat over several days, a series you sign up for in one go, open sessions, or a series you can still join later. I modelled that as offer, edition and gathering, with forms in everyday words. Every configuration produces one sentence the participant reads, such as “You sign up for the whole series”; a configuration that produces no sentence is invalid.

In the workbench of an edition, the guide sets gatherings, price levels, choice questions and locations, next to a preview that updates along. Capacity applies per gathering, per price level and per choice, and stays right when two people take the last place at the same moment: that is tested against a real database. Whoever is invited from the waiting list gets 48 hours to take the place.

Every shape of an edition says in one sentence what a participant signs up for; what that sentence can't say is invalid.

Three builders on one machine

A guide builds her offer page herself, from blocks (text, image, programme, who it is for, practical details, audio, questions and answers), by dragging or with the keyboard, and with a preview that updates along. The same block machine also builds her own site and the pages of the platform itself. The rules for a good page live in that machine as tested code, not in a manual.

Every practice gets a house style of its own: a colour family, a tone and a shape, with a live proof. The colours are calculated (OKLCH), and a test makes sure every combination reaches the contrast accessibility asks for (WCAG AA). That way a guide can choose without breaking anything.

Three builders on one machine, and every practice its own colour without giving up legibility.

Sign-up and payment, with the guide as the seller

A participant signs up without an account: choose, fill in details, pay, with a total that recalculates along. An account is only suggested after the confirmation. Then come a confirmation with the practical information, a calendar invitation and a reminder.

The guide is the seller herself. Through Mollie Connect she links her own payment account, and payments go straight to her. The keys of that link are stored encrypted, and the status of a payment is always fetched again from Mollie. That chain is proven end to end in Mollie’s test mode.

The invoices follow the Belgian rules: VAT is calculated from the price including VAT, so the total is right to the cent, numbering runs without gaps, credit notes (partial ones too) get a series of their own, and the exemption scheme for small businesses is built in. Every invoice also exists as a UBL file following Peppol BIS 3.0, which passes validation against the official Peppol rules without errors. Sending through the Peppol network is still to come.

The guide is the seller, and the invoice adds up to the cent.

Signing in without a password, and privacy as behaviour

Innerveld has no passwords. You sign in with a code by email, with Google or with a passkey, on a guide’s own site as well.

Privacy lies in what the product does, not only in a statement. Every guide chooses a retention period, after which participants’ data is anonymised automatically; invoices are kept for seven years, without a link to the person. Anyone who deletes their account sees beforehand what disappears, what stays and until when, and can take their data along as a file. The site sets no cookies to follow visitors, and everything runs in the EU.

Privacy as behaviour: sign in without a password, and data that disappears on its own.

Five languages, with a person who checks

The interface exists in five languages. AI translates the texts of guides, through a route within the EU, with a glossary that steers the professional vocabulary. Every translation has a status: machine, reviewed, or outdated after a change in the source text. What a person reviewed is never overwritten again, and usage is measured per practice.

Built to be trusted

Every meaningful choice is recorded as an architecture decision (ADR), with the alternative that was rejected. A confirmed bug first gets a test that fails, and only then the fix. Database tests run in isolation, on the real migrations.

A screen is only done when it also looks right. Every page is compared in light, dark and on mobile against a reference image, and an accessibility scan stops a change with serious problems. With every deployment, the migrations run in a single transaction; if one fails, the previous version keeps running. The whole thing is self-hosted in the EU, with a server of its own that runs the tests.

Every change passes three gates, and every bug first becomes a failing test.

How I build

Innerveld has been built with agentic coding from the start: an AI coding assistant writes the code, the tests and the documentation. The designs come from design rounds with AI too, each with several directions. My work lies in what comes before and after: the strategy and the audience, the words the product uses, the requirements, and the choice between directions, or rejecting them when something is not right.

Every decision that needs my word arrives with a proposal in a decision list, and anything that touches money, the law or people, I decide myself. Nothing on a server changes without my approval. I test as a user myself, and what I see becomes work: an offer page I found too messy became a complete workbench. At night, agents review the day’s work, each through a lens of its own, and a sceptic tries to refute every finding.

That is not less work but different work: briefing well, choosing, checking with my own eyes and knowing when something is not good yet. It is also where I find out how far this way of building can go.

What comes next

Still on the list before launch: a pilot with a first guide, the final name and brand, a production domain, a European email service, sending invoices through Peppol and collecting subscriptions. The pricing model is not settled yet. After that, the same foundation can carry a next platform.

Tools & technology

  • Product design
  • Multi-tenant SaaS
  • Next.js
  • TypeScript
  • PostgreSQL
  • Row-level security
  • Mollie Connect
  • Peppol UBL
  • Privacy by design
  • Agentic coding

More work

  • Company

    DPG Media

    Retention at Het Laatste Nieuws and De Morgen: the subscriber journey, campaigns and a new onboarding.

  • Company

    Bru Textiles

    Web shops, made-to-measure curtains and fabrics in every colour, from concept to working prototype.

  • Company

    Nobel Biocare

    Planning software for dental implantology: clinical workflows turned into specifications and design.

Next step