Skip to content

INTEGRITY

INTEGRITY is a forensic scanner for life-science manuscripts.

Core trick

Reads raw spreadsheet cell types, not exported CSV, then validates gene symbols and antibody IDs against HGNC, Cellosaurus, and SciCrunch.

Tags

Description

INTEGRITY is a forensic scanner for life-science manuscripts. It validates every biological entity a paper names - gene symbols, cell lines, antibody RRIDs - against authoritative registries (HGNC, Cellosaurus, SciCrunch) and reports only what those registries actually say. It never reasons about biology and never accuses an author: every finding is labeled REVIEW, never ERROR. The core insight: when Excel silently converts a gene symbol like SEPT2 into a date, it does not store the text "2-Sep" - it stores a typed date cell (data_type='d'). That evidence is destroyed the moment the sheet is exported to CSV and was never in the manuscript PDF, so no model reading the paper can recover it. INTEGRITY reads the raw spreadsheet bytes instead. Run on the real 2016 Ziemann supplementary file - the paper that first documented this corruption - it finds exactly 1213 corrupted cells across 128 distinct registry lookups, and refuses to flag registry-vindicated symbols (Oct-4 resolves to POU5F1 and SEPT2 to SEPTIN2, both PASS). Only genuine corruption is flagged. When a registry is unreachable it fails safe with a distinct exit code rather than reporting a false clean. It ships as three surfaces: a CLI, a live web app with streaming results (https://integrity-lemon.vercel.app), and a Claude Code Stop hook that blocks an agent from ending its turn if a registry disagrees with a biological claim it just made. Why it matters: 30.9% of papers carrying supplementary Excel gene lists were corrupted by 2021 (up from 19.6% in 2016), the errors are silent and cheap to catch, and today nobody catches them.
javierdejesusda/integrity★ 00 forksPythonMITCreated Jul 11, 2026 · last push Jul 11, 2026

README excerpt

# INTEGRITY

Validates the biological entities a manuscript names against external authoritative
registries, and reports what those registries do and do not know.

It does not reason about biology. It asks HGNC, Cellosaurus and SciCrunch, and quotes
their answers. Every finding is a flag for human review. Nothing here calls a scientist
wrong.

## The user

A postdoc assembling the supplementary tables for a genomics paper, the week before
submission. Nobody checks whether the gene column of `Table_S1.xlsx` still says what it
said before Excel touched it, and nobody checks whether the cell line in the Methods is
secretly HeLa. Both errors are silent, both are cheap to catch, and neither is caught
today.

## The thing worth knowing

When Excel decides `SEPT2` is a date, it does not store the text `2-Sep`. It stores a
**typed date cell**.

```
A3: value=datetime(2026, 9, 2)   data_type='d'   is_date=True
A5: value=23100000000000         data_type='n'
```

That type is the evidence, and it exists nowhere else. Export the sheet to CSV and it is
gone. Read the manuscript PDF and it was never there, because the corruption lives in the
supplement, not the prose. This is why INTEGRITY ingests spreadsheets for gene symbols
rather than asking a model to read a paper.

Corruption is only ever *reported*, never *inferred*. A date cell is suspicious. It
becomes a finding when HGNC confirms the recovered symbol names a real gene:

```
TableS1!A3 holds '2026-09-02', which cannot be a gene sy

Team