A folder-based cartographer for the record objects behind small-business invoicing. Point it at a real body of records and it leaves behind a map a cold reader can wander: a catalog that points, one card per noun, a change index. The name is the one rule: nobody should have to read the ledger to touch the ledger.
Every month these records outlive the person who understands them. A bookkeeper inherits a client. A VA issues their first batch. An AI agent gets pointed at the export with no memory of last week. This folder exists so that each of them can ask one question, open one card, and stop.
Add exactly these to the Claude project, and nothing else:
identity.md
rules.md
examples.md
reference/ all of it
Everything else stays outside. examples-source/ is the worked example's citable record; it is handed to the session as an input when you want to walk the example, not loaded as method. Tools run in a terminal, not in the model's context.
Then supply the records to map (rules.md §1): an invoicing export, system listings, and yourself for the questions records cannot answer. The session becomes the cartographer and writes the map: catalog, cards, change index, under the contract in rules.md.
A map with three universes (live, leftover, ghost, each with dated evidence), cards that cite the records line by line, a mandatory "Does not hit" naming the wrong neighbour for every change, and a fixed walk. The one rule: load the catalog, then one card. Never the whole cards folder. If a card and the source disagree, the source wins and the card is wrong.
It will not narrate how the month goes, list what is wrong, name the cause of a failure, or copy the records into prose. Those are a tour guide, an auditor, a diagnostician and a photocopy, and the card contract has no section where any of them could live.
Said plainly, because in the business this was built in it is the common case: an AI agent works these records weekly. The walk order in reference/walk-order.md is written to be followed by a cold model, including its token discipline. The map is what that agent loads instead of eating the whole export.
identity.md who the cartographer is, and the four things it is not
rules.md the method: nouns, universes, the card contract, the walk
examples.md the worked map, walked; smaller than rules.md on purpose
reference/
card-types.md the closed set: noun card, movement card, change index
walk-order.md the fixed walk, for a person or a cold model
naming-collisions.md Portuguese invoicing: the names that bite the new reader
worked-map/ the map the cartographer left behind on its own territory
catalog.md eight rows that point; the front door
cards/ seven nouns and one ghost, every claim anchored
movements/settle.md the one movement, compensation variant included
effects.md the change index, walked forwards and backwards
examples-source/
redacted-2026-07.xml a real July 2026 export, pseudonymized; the map cites it
check_map.py the gate. Runs in a terminal, stays out of the project
tests/negative-cards/ fifteen broken cards, each blocked on its own named check,
and one clean card the gate must let pass
tests/broken-map/ a mini-map that arms the map-level checks
tests/denied-map/ a map that denies its own reverse walk in the words the
check once grepped for
receipts/ the cold walks, protocol committed before they ran
Everything here is Python 3 standard library, offline, no install.
python3 check_map.py worked-map examples-source/redacted-2026-07.xml
python3 check_map.py --self-testThe gate checks that the catalog reaches every card and no card is an orphan, that every card carries the contract sections and writes its universe as as of <date> on the Status line, that a ghost carries a backticked search command with a non-option term found verbatim in the source, that every excerpt quoted on a card line that cites line numbers appears verbatim on one of the cited lines (each excerpt checked on its own, so a true quote cannot shield a false one; an absence claim is checked the other way around), that both ends of every cited range are inside the file, that Hits and Does not hit are filled, that no card outgrows its cap, that the change index has a backwards section with at least one linked bullet, and that no card, catalog or change index carries register words from a closed list. The LANGUAGE list is deliberately narrow: imperative prescription in English shares its words with honest description, so what the list cannot catch, reading catches. STATUS proves that a date follows as of; it does not prove that the date belongs to current evidence. GHOST proves that search text shares a term with the source; it does not run the command or prove that its result establishes absence. It reads the command as a tool followed by arguments, so a search folded inside a one-liner's quoted code is not recognised and a card written that way is asked to state the search plainly. EFFECTS proves the section and linked bullet; it does not decide whether the bullet names a real outside-in consumer or whether the linked card records it. What those checks cannot establish, reading catches. The self-test arms all ten named checks: fifteen deliberately broken cards and two broken mini-maps, each asserted to be blocked on its own check and on nothing else, with the shipped map as the positive control. Three fixtures exist because their checks once passed on a word: a status dated "recently", a ghost card stating that no search was run, and a change index whose walk backwards is a heading with nothing under it. Two more expose irrelevant signals: a Status date belonging to the card edit, and a ghost command that only prints the tool version. Each fixture fails on its named check and on nothing else. A gate that has only ever said PASS is untested.
worked-map/ and examples-source/ are output and input of a run, not method: they stay out of the project load and are handed to a session only when you want to walk the example.
The worked map covers one territory: one business, one ERP, one month of records, seven nouns, one movement, one ghost. Universe calls lean on the file's evidence plus operator answers, cited as such. The redaction that makes the source publishable replaces names, tax numbers, product and document identifiers, and free text; a collision or a ghost that lives inside one of those is invisible in this copy. The tax identifiers carry deliberately invalid check digits, so no pseudonym can name a real entity. July's export also carries empty MovementOfGoods and WorkingDocuments sections (lines 1694 to 1702); those nouns exist in the schema and are unmapped here; nothing in this month's export fills them. And the cartographer has not yet been pointed at a body of records its author does not know; until that walk exists, the evidence here is that the contract holds, not that a stranger's territory maps as cleanly.
Invoicing record systems of small businesses, built and worked against TOConline exports (SAF-T (PT) 1.04_01). Other ERPs and other countries need their own collisions file in reference/, which is one file and no code.
Built for the Clief Notes Weekly Comp #11.