Skip to content
Back to projects
LiveSaaS product

Nolorem

Researched content with sources, not invented text

Visit Nolorem

Where the name comes from

Lorem ipsum is filler. It looks like language, it fills a page, and it means nothing. That is close to what most AI writing tools produce: fluent paragraphs that sound plausible and leave you with nothing on a second read, or worse, that carry a number which came from nowhere.

Nolorem is built around refusing to do that. A post starts from real sources rather than from the model's memory. Every claim carrying a figure or a quotation gets a reference, and anything that cannot be traced to a source which actually supports it is held back instead of published. No filler, no hallucinations. Hence the name.

The problem it was built for

Bonalogic needed content. Not because content is interesting, but because a business without it is invisible. The work is genuinely demanding: research a topic properly, write something worth reading, find or make images, pick keywords, publish, then do it again next week. Every hour spent on it is an hour not spent building software.

The available tools each solved one slice. A writing assistant that produces plausible text with no idea what you already published. A scheduler that posts what you give it. A keyword tool that hands you a spreadsheet. Stitching them together by hand turned out to be its own part-time job.

So Nolorem started as a private tool: one pipeline that goes from "here is my subject area" to "here is a scheduled, illustrated, sourced post", with a human reviewing rather than assembling.

What it does

The Nolorem overview screen, showing the blogs, the running campaigns and the next scheduled posts.
The overview: which blogs are running, what is in the pipeline, and what goes out first.

Research before writing. This is the part most tools skip, and it is the part that decides whether the output is publishable. A verification pass reads generated claims back against their sources and holds the ones that do not survive.

The verification panel, placing each claim from the draft next to the source meant to support it, with a verdict per claim.
The verification pass. Every claim is put next to the source meant to carry it, and what does not hold up does not ship.
The Nolorem writing surface, with the draft in the centre and the gathered sources alongside it.
The writing surface. Sources stay next to the draft, because reviewing without the source in view is not reviewing.

Blog and social from one plan. A blog post gets repurposed into social posts that stand on their own rather than reading like a link dump. Campaigns tie a run of posts to a single theme so the output has a shape instead of being a stream of disconnected articles.

The repurposing screen, turning one blog post into several channel-specific social posts and scheduling them.
One blog post becomes social posts that stand on their own, scheduled per channel.

Seven interface languages, more for content. Multilingual was a requirement from the first week, because the audience is not only Dutch-speaking. Translation happens at the content level, not by running the page through a widget.

It publishes where you already are. Connectors push finished posts into an existing site, WordPress and Drupal among them, instead of demanding you move your blog.

The WordPress connector, showing the link to the target site and the choice of category and publication status.
The WordPress connector. The finished post leaves for the site you already have.

What I ran into

Fact-checking is the hard part, by a wide margin. Getting a language model to produce fluent text is trivial. Getting it to only assert things a cited source actually supports is not. Most of the engineering effort went there, and nothing else moves the quality needle nearly as much.

Quotas turn out to be a product decision, not a technical one. How many posts a plan allows sounds like a config value. It is not: it interacts with how many blogs an account has, whether a deleted post frees its quota, and what a trial should demonstrate. Getting this wrong is invisible until a customer hits a limit that contradicts the pricing page.

Self-hosting changes the architecture, not just the deployment. Running the whole stack on my own infrastructure means confidentiality is a property of the system rather than a promise in a contract. It also means every operational problem is mine. That trade is worth making, but it is a trade.

Why it is here

Nolorem answers a fair question from anyone considering working with me: has this one-person shop actually shipped anything? It is a production system with all the plumbing a paying customer implies, from billing and quotas to background jobs and backups. Not a demo.