A portfolio engine that only states checked facts

The engine behind this site, in which every fact comes from one checked source, a chat answers with its sources or says it does not know, and each job posting gets its own page.

Organisation
Own project
Period
Oct 2026 – in progress
Role
Author and owner

In one sentence

The site you are reading runs on an engine in which every fact about me comes from one checked source: the pages, the chat, the pages for job postings and my CVs all draw on it, and nothing else.

Who it is for

  • A recruiter gets a page made for their job posting: a short course about me, every requirement matched with evidence, and the requirements I do not meet listed openly.
  • A hiring manager can ask the chat. It answers with the sources under each answer, or says it does not know.
  • I get a process in which I write in one place and cannot publish a fact I have not confirmed.

How a fact gets onto the page

I write in my notes. A build turns them into a profile package: every fact is a separate claim with its own identifier, a word-for-word quote from the text and a status. Only claims I confirmed, or that the code confirms, go in.

The build stops when a claim has no quote, when a number in English differs from the number in Polish, when a number is written as a word, or when a name I have ruled out appears. CVs and course pages carry a fingerprint of the package they were made from, so I can see when one is out of date.

Pages for a job posting

A new posting becomes a subdomain. The engine reads the requirements from the posting without a model and matches each one to up to 3 claims above a calibrated threshold. A requirement with no match stays a gap and appears on the page as one. The recruiter goes through a short course built from my work, with a test after each lesson, and can open the CV made for that posting.

A CV goes through the same checks as the page: every point names its claims, and a separate check reads the PDF the way an applicant tracking system does.

The chat

The chat looks for evidence in a graph of my experience, writes an answer and has a second model check it sentence by sentence against that evidence before it reaches the reader. Below the answer it lists the quotes it used. Some topics are closed: pay, opinions about companies and people, and the name of a client I keep anonymous.

Measured on the real model: no facts from outside the package, 3.3% of answers falling back to "I don't know" and 9.5 s for the slowest 5% of answers.

What did not work at first

  • A test model hid a weak chat. All tests passed on a stand-in model. On the real one about 40% of answers fell back, because the checking model saw less context than the writing one and rejected true facts. I rebuilt the chat around that finding and added tests that run on the live model.
  • A change of look must not change the site. Design concepts run only on a preview subdomain, and a gate in CI compares 60 views of the live site, light and dark, desktop and phone, before anything is merged.
  • Measuring on the server, building elsewhere. After an agent built an image on the home server once, the rule became: the server only runs ready images, and the source code never goes there.

How it was built

Since 1 October 2026 I have rebuilt the site with AI agents: an agent in the cloud prepares pull requests, a local agent reviews, deploys and measures, and I make the decisions. 216 of 235 commits of this rebuild were written with Claude. The course screens came from my own design process, Gatefold.

My role

I came up with, designed and built the engine myself, working with AI agents.

Contact

Questions about: A portfolio engine that only states checked facts