This is not a flat manual but documentation in four layers, for four readers: who uses it, who wants to understand the idea, who builds it, and who wants to go further. Each layer carries a label saying how long it keeps.
Layer 1 — for the user1What you do with it moves with the code
/generatorThe classtop · panel klasse
- Choose a patent class (CPC, for instance H01M10/052 — lithium batteries). Next to it: how many patents the corpus holds, from which to which priority year, and up to which search page the harvester has come. Four tiles summarise the steps: corpus, contradiction, cut, candidates.
- The corpus grows by itself at night (the harvester pages on, one portion per night) and every new patent immediately becomes an inhabitant of the MAZE — you find it through the search bar on the main page.
/generatorSteps 1 and 2 — countedpanel stappen
- The contradiction: the pairs of technical parameters (Altshuller's 39) most often demanded together in the goal sentences of the class — "high capacity and long cycle life". The number is the count of patents; the top pair is the contradiction of the class. Below it the evidence sentences, each linked to the patent it comes from.
- The shared cut: the word groups nearly every independent claim imports without deriving them ("current collector", "active material"), with their document frequency. Red = above the test threshold: a candidate may not use those terms. Below that the preamble cores (what the claims start with) and the tension: which public gauge the class is linked to (grid congestion, drought, health …). "No automatic reading" means the gauge is public but the level is read by hand.
/generatorSteps 3–6 — candidatespanel kandidaten
- Four candidates per round, one per axis — time/phase, place, scale, condition. Each card shows the end function (what must physically happen, naming no component), the idea, the main claim in patent English and the derivation: feature ← the feature it follows from.
- Below each card the test. Novelty: the highest cosine against every claim in the corpus, with the closest patent as a link (above 0.80 red: suspiciously close). Inventive: ✓ if the claim contains no cut term at all, ✗ with the terms found. Tension: the linked gauge. And the inhabitant link to the address in the MAZE.
- Applicant and date stamp: every candidate carries the name (and address) of whoever ran the round, and a sha256 fingerprint over class, end function, claim, derivation, time and applicant — verifiable evidence of the date of conception. Without an own name via the API the default applicant is recorded.
- Via SWARP (18 Sept): whoever is registered on swarp.nl (name, address, birth date/time/place in AYYA360) can harvest a class and run a round on
swarp.nl/generator; SWARP calls the MAZE server-side with the key andX-Maze-Namens: swarp, after which the limit applies: 3 rounds per applicant per day, 30 per day in total, one harvest per class per hour. The candidates carry the name and address from the SWARP profile. - Rejected candidates (✗) remain: they are the input of the next round (the language model receives them as "previously rejected because the cut was used").
/generatorStep 0 — the corpusbottom · panel corpus
- The patents of the class as receipts: publication number (link to the source), priority year, independent / all claims. Nothing is summarised or rewritten; the text is the office's.
- Top right NL·EN; the theme button bottom right. The method itself is at
/generator/methode(Dutch).
Layer 2 — for the thinker2The idea & the rules lasting
A patent is a closure: a claim that locks one mesh. Twenty strategic lists (the essay Where the Criteria of Innovation Go Wrong, §VIII) describe the occupied territory — the knots — because a consultation can only hear who is already an institution. The generator looks for the other thing: the loaded, open, deep mesh. For that it combines two sources each resting on tens of thousands of patents: Altshuller (a significant invention resolves a contradiction — two requirements pulling against each other at one point) and Gentzen (every derivation can be freed of its borrowed lemmas — the cut — and rebuilt self-contained).
From that follow the six steps, and the rule that keeps them honest: what can be counted is counted; what a language model does is tested by something other than that language model. The contradiction is a count over goal sentences. The cut is a document frequency. Novelty is a cosine against the whole corpus. The inventive step is a string test: if the claim uses a term the class imports as a premise, it is not self-contained — the model may not quietly rewrite that, the candidate is booked as rejected. Tension comes from outside: a public gauge, not an opinion.
The four axes of redistribution — time/phase, place, scale, condition — are Altshuller's separation principles reduced to the four coordinates of the net. The direction of the whole procedure is his law of increasing ideality: function without system. That is also the design rule of the net: set the condition so that the goal is the fixed point.
What the generator deliberately is not: a patent application, a legal opinion on novelty or inventive step (that is for an examiner and an office), proof that the candidate works. What it is: a checkable document — every step explicit, every count with its source — that yields addresses, with a date stamp.
Layer 3 — for the builder3How it works — sources, counts & API moves with the code
Context under the-maze like the bank, the Doorgang and Conflict Weather: maze/generator/ — corpus.mjs (step 0: Google Patents search endpoint per CPC class, paging with the page remembered in gn_klasse; per patent the page is read: title, abstract, claims with number and independent yes/no from both the EP and the US markup, CPC, priority; storage gn_octrooi; plaatsInMaze = generation-1 field signature, the tree as fallback, never an empty path, a generation-2 address at once), generator.mjs (step 1: PARAMETERS — the 39 parameters as keyword stems; per goal sentence all parameters, unordered pairs counted per patent, direction where readable; step 2: 2–4-word n-grams without stop words over the independent claims, DF, preamble cores; steps 3–5: gpt-4o with JSON answer, bound by the cut list and the previously rejected candidates; step 6: cosine via text-embedding-3-small against all claims, string test on the cut, METERS per CPC prefix; storage gn_kandidaat with applicant and fingerprint), route.mjs, methode.md. Night loop: generatorNacht() pages every class in NACHT_KLASSEN thirty patents further.
Cut threshold. Shared = DF ≥ 50%. If no n-gram reaches that (in H01M10/052 the top is around 40%), the highest threshold from 40/30/20% with at least three terms; the threshold used is stated with every test. Field coder v2.4 (18 Sept): the energy layer now also knows electrod/batter/electrochem/lithium/voltage/charg — the battery patents coded to zero (the same lesson as "photon" on 30 Aug). Existing addresses were not rewritten.
Applicant. MAZE_GENERATOR_AANVRAGER = "name, address" (environment variable) or the row aanvrager in gn_instelling (database, set via the API — nothing in code or repo); a POST with aanvrager: {naam, adres} takes precedence. Fingerprint = sha256 over {klasse, eindfunctie, as, hoofdconclusie, boom, gemaakt, aanvrager}.
Known limits. Google Patents' search endpoint ranks by relevance, not by date — the corpus is the top of that ranking, not a sample. The parameter lexicon is English and stem-based (a stem like "form" caught the verb "formed" and was dropped). The language model's candidates are generic where the corpus is thin; the value lies in the testable parts. Claim quality is no measure of patentability.
Layer 4 — for the connector4Links, sources & further moves with the code
- the generatormaze.swarp.nl/generator · the method · API
- sourcesGoogle Patents (free; full claims and CPC per page) · EPO Linked Open Data (43 million publications, SPARQL — candidate for the full stack) · EPO PATSTAT / Technology Intelligence Platform
- theoryG. Altshuller, Creativity as an Exact Science (1984) · G. Gentzen, Untersuchungen über das logische Schließen (1935) · J. Konstapel, Where the Criteria of Innovation Go Wrong (Leiden, Sept 2026), §VIII · The Strand That Knots Itself (constable.blog, 9 July 2026)
- familythe MAZE (the gate, the meaning layer) · the Doorgang (the same placement routine) · Conflict Weather and Financial Weather (the gauges the tension hangs on)
- honestycounted what can be counted; the language model does not test itself; rejected candidates remain; no legal opinion; date stamp per candidate