markush intelligence · in development

Query the genus, not just the molecule.

A single patent drawing can claim a family of up to a million compounds. MarkushLabs makes that family machine-readable — and checkable against your own molecules, without them ever leaving your machine.

NR2R6R3R5Ar

see it · 02

One drawing. A whole family. None of it searchable.

NR2R6R3R5Ar
01 · one drawn claim a patent draws a single Markush structure.
NR2R6R3R5Ar
02 · a family, not a molecule its variable positions define up to ~1,000,000 compounds.
NONOOOOCl
03 · is your compound already claimed? a family this broad can cover compounds filed years later — you can’t tell what’s still yours to file.
NONOOOOCl
04 · nothing to search for no name, no keyword surfaces it — so how do you know what to look for, or when to file?

how it works · 03

keyword search is blind to this. here is what reads it.

From filed patent to private answer.

A Markush claim is one skeleton plus a paragraph of legalese. Three fine-tuned models and a toolbox of plain code turn it into two linked machine-readable files, honest similarity maths, and a private answer — on one GPU at inference.

01

step 01

Find the chemistry on the page.

Detect every drawn structure, crop it clean, read the surrounding prose and tables, and route each definition to the structure it describes.

hodgkin · berzelius

Hodgkin

structure detection & cropping fine-tune of open detectors (decimer / yolo) our fine-tune

01 · hodgkin · detect + crop

Boxes snap onto every drawn structure.

A scan band sweeps the page top to bottom; each detection box is born at the band and tightens shut when the band clears the drawing.

in: patent page → out: boxed structures (to crop)

A patent page enters Hodgkin, whose scan band sweeps top to bottom; detection boxes grow from the band and snap tight around each drawn structure with confidence tags.

Berzelius

ocr · layout · reading order · tables off-the-shelf · ibm · mit off-the-shelf

01 · berzelius · read + match · stage 1/1

Every span is read, then matched to its variable.

Each text span on the page is outlined and lifted into a plain reading-order list; the definition line then lights, and the variable it defines lights on the structure to prove the match.

in: patent page → out: text spans + variable matches (to 02 read)

Berzelius outlines every text span on the page and lifts each into a plain reading-order list; the wherein-R3 definition line then highlights and the R3 variable on the drawn structure highlights with it, proving the match.
02

step 02

One model looks at the drawing. One reads the prose. Plain code writes it down.

Kekulé turns the cropped drawing into a CXSMILES string; Lavoisier turns the definition prose into canonical variables; a deterministic writer emits the companion RGfile.

lavoisier · kekulé · wöhler

Lavoisier

prose → canonical variables lora on frozen qwen3-4b + opsin / rdkit model + tools

02 · lavoisier · read/tag · stage 1/4

Lavoisier tags names and counts — nothing more.

A read-head sweeps the prose; each chemical name detaches upward into a NAME tray and the phrase “1 or 2” into a COUNT tray. The prose stays intact.

in: definition prose → out: name + count spans (to opsin)

Lavoisier's read-head sweeps the definition prose and lifts the chemical names methyl, ethyl, 2-methoxyethyl into a name tray and the count 1 or 2 into a count tray, tagging only.

02 · lavoisier · conditional logic · stage 3/3

The count is a condition, not a fragment.

“1 or 2” isn't a structure OPSIN can author — it's read as an occurrence condition (n ∈ {1, 2}) and carried forward to the RGfile, which a plain string cannot hold.

in: count token → out: occurrence constraint (to rgfile)

RDKit validates each fragment C, CC, CCOC through a valence gate, bouncing a malformed decoy, and seals the canonical result R3 = [C, CC, CCOC] valid, Ar bears 1 to 2 substituents.

02 · lavoisier · opsin · stage 2/3

Each name becomes a real chemical fragment.

OPSIN converts every tagged name into its exact structure — methyl → C, ethyl → CC, 2-methoxyethyl → CCOC — the clean, canonical set of variables the model reads.

in: tagged names → out: canonical fragments (to the model)

OPSIN deterministically converts each name into a SMILES fragment — methyl to C[*], ethyl to CC[*], 2-methoxyethyl to CCOC[*] — assembling the menu R3 = [C, CC, CCOC].

a model perceives; tools author; a checker validates · trained on a 5090

Lavoisier reads the definitions and Kekulé reads the drawing — they meet at fusion.

Kekulé

drawing → cxsmiles fine-tune of markushgrapher-2 · ≈831m · one gpu at inference our fine-tune

02 · kekulé · vtl fusion · stage 3/4

Our model reads the drawing and writes the CXSMILES.

This is Kekulé, the model we trained. It reads the cropped structure together with Lavoisier’s canonical variables — binding each R-label on the drawing to its definition — and generates the CXSMILES string for the whole genus.

in: cropped drawing + canonical variables → out: cxsmiles string

Visual tokens and Lavoisier's canonical tokens stream one lane at a time into the UDOP encoder backbone, each carrying its 2D layout box, and one curve binds the drawing's R3 position to its definition.

Wöhler

cxsmiles + canonical → v3000 rgfile deterministic · rdkit deterministic

02 · rgfile-writer · assemble · stage 1/1

When a string can’t hold the logic, a second file does.

A CXSMILES captures what’s drawn, but a flat string can’t hold everything — counts like “1 or 2”, substituent menus, or R-groups that aren’t independent (two that join into a ring). Those rules go into a companion V3000 RGfile, linked by the shared R-labels, so the full genus can still be stored and compared.

in: cxsmiles + canonical variables → out: linked v3000 rgfile

The deterministic writer keeps the CXSMILES for what is drawn and drops the member menu and occurrence counts, which a string cannot hold, into a V3000 RGfile, linking the two files by the shared R3 label.
03

step 03

Every record joins Beilstein, and honest maths compares it to the world.

Each finished record docks into our patent database; deterministic fingerprints and Tanimoto compare compounds and scaffolds; a chemical-space map is on the roadmap.

beilstein · mendeleev

Beilstein

our patent database — where every record lives and is compared named system · not a model patent database

03 · beilstein · store + compare · stage 1/1

Filed, then compared to the world by Tanimoto.

Each record (CXSMILES + RGfile + example compounds) is filed into Beilstein and compared against every other. A whole genus can’t be fingerprinted directly, so the comparison runs on concrete structures — the patent’s example compounds, its scaffold, and members expanded from the RGfile’s rules — scoring each pair by Tanimoto similarity (shared features ÷ total, 0 to 1).

in: record → out: tanimoto scores vs the database

A record card holding the CXSMILES, RGfile and example compounds docks into a shelf of stored records and is compared pairwise against its neighbours, this 1968 genus reading onto amlodipine.

Mendeleev

chemical-space embeddings roadmap — not shipped roadmap

03 · mendeleev · chemical space

Every patent finds its place in chemical space.

A learned embedding plots each patent as a point in chemical space, so similar chemistry clusters and a new filing lands beside the prior art it resembles.

in: compared records → out: nearest-neighbour map

Mendeleev places each record as a point in a chemical-space map so that nearby points form a cluster; proximity approximates similarity.

why it matters · 04

The cost of finding out too late.

A rival’s patent publishes — its chemistry sits right beside your compound.

That’s your signal: your space is being claimed. Now is the moment to file.

But you only know your own compound — to spot the threat you’d need the specifics of a filing you’ve never seen.

So it sits right beside you, and you never know it’s there.

Too late.

You were too slow to read the signal. A rival’s filing was already public in your space — the moment to file now — but you noticed too late, and the ground went to whoever moved first.

MarkushLabs reads every patent the day it publishes, scores how close it sits to your compounds, and warns you the instant one enters your space — so you catch the signal and file in time.

so here is what you do with it.

what you get · 05

See the whole genus — and act on it.

your series · genus filings · chemical space

who it’s for · 06

The people deciding what to file — and what to walk away from.

Know the ground before you commit.

  • Is your series already inside a filed genus? Freedom-to-operate, read at structure level.
  • Where’s the open ground worth pursuing — space no one has claimed yet.
  • Is a programme worth backing, or is the field already too crowded?
investors · 07

Investors.

INVESTOR FORMForm No. ————————FIRST NAME
LAST NAME
EMAIL
Formula (I)NHR2R6R3R5Arwherein:

MarkushLabs is developing structural patent-intelligence tooling for life-science and pharmaceutical R&D. Deep-tech investors may request a technical briefing on the platform and its current status.

BODY