Siennav1.2

Information Disclosure Statement Generator

Why Sienna? The earth red of ink on an old docket card.

Runs on: Any computer with Python — Windows, Mac or Linux.

✨ Install with Claude's help

Not sure how to install this? Let an AI assistant walk you through it, step by step, on your own system.

  1. Copy the instructions below.
  2. Open Claude (a free account works) and paste them in.
  3. Answer its questions and follow along, doing the typing yourself.

Claude in a web browser cannot reach your computer: it reads the instructions, asks about your system, and tells you what to type and what each command does, one step at a time. You stay in control of everything that actually runs.

Using Claude Code? That is the version that runs in a terminal on your own machine, so it can do the downloading and installing itself, asking before each step. Paste this into it instead:

Open in Claude Code ↗needs the Claude Desktop app

Information Disclosure Statement Generator (Sienna)

Hand it the patent numbers you need to disclose and it writes the Information Disclosure Statement for you: it looks each reference up, finds the dates and the first named inventor, sorts them into the four tables the Patent Office expects, numbers them straight through, and saves a Word document you can check, sign and file.

The list it found, and the document it wrote

It prints what it found for each reference as it goes, and tells you which ones it could not find.

The document it writes: the header block and the four tables, numbered straight through

The Word document it saves. Open it, check it, sign it, file it. It ends with a signature block (signature, name, registration number) dated the day it was made.

Not legal advice, and not a substitute for reading the references. This is a typing tool. Check every line against the document itself before you file anything, and check the rules in force when you file (37 CFR 1.97 and 1.98). Nothing is sent to the Patent Office by this program.

What it does

How you use it

One line, with the numbers:

python3 ids_gen.py --out IDS.docx --applicant "Smith Manufacturing LLC" \
    --app-no "19/801,543" --docket "SMI001" \
    10000000 US9876543B2 2015/0123456 EP1234567A1

Or from the folder the prior art already lives in:

python3 ids_gen.py --from-folder "Prior Art" --out IDS.docx --csv references.csv

It prints a line per reference as it goes, writes the document, and ends by naming anything it could not look up so you can fill those in yourself.

Information for nerds: options, lookups and tests
OptionWhat it does
numbers...References on the command line, in any of the shapes above
--from-file FILEOne reference per line; # starts a comment
--from-folder DIRTake the numbers from the names of the PDFs in a folder
-o, --out FILEThe Word file to write (default IDS.docx)
--csv FILEAlso write what was found as a spreadsheet
--applicant, --app-no, --filed, --title, --docketFill in the header block
--examiner, --art-unitDefault to N/A, which is right for an application that has not been examined
--attorneyName in the signature block
--reg-noUSPTO registration number in the signature block (left as a line to fill in when not given)
--no-lookupStay offline and list the numbers exactly as given
`--source auto\google\odp`Where to look numbers up. odp is the USPTO's own Open Data Portal (needs a free key: --odp-key or $USPTO_ODP_KEY). auto uses it when a key is set, Google Patents otherwise
--old-db FILEAn offline index of pre-2001 US patents from build_old_db.py, consulted when the portal or Google has nothing (default $SIENNA_OLD_DB)
--no-googleWith --source odp, do not try Google Patents for what the portal lacks

Where the data comes from. By default, Google Patents. Google refuses requests from many servers and shared hosts (a "Sorry..." 503 page); if you see lookup failed (HTTPError) on every line, get a free API key from the USPTO Open Data Portal (https://data.uspto.gov/apis/getting-started) and run with --source odp. That reads the Patent Office's primary record (filing date, grant or publication date, first named inventor) and backs off politely when the portal throttles a burst; it covers US patents and publications only, so foreign documents are left for you to complete.

Patents from before 2001. The portal only knows applications filed on or after 1 January 2001, so a 1990s patent comes back "nothing found" there and, on a server Google refuses, would stay blank. build_old_db.py fixes that: it turns PatentsView's bulk grant data (1976 on, rehosted by the USPTO as product PVGPATDIS) into a SQLite index of every grant the portal lacks, about 2.5 million rows in a couple of hundred megabytes, and --old-db (or $SIENNA_OLD_DB) makes the generator consult it whenever the portal or Google has nothing:

python3 build_old_db.py --odp-key $USPTO_ODP_KEY --out old_patents.sqlite ids-gen --source odp --old-db old_patents.sqlite 5368281 5518486

The download is three zips of about a gigabyte in all; the portal allows twenty downloads of each per year, so keep them. The order of lookups is: the portal, then the index, then Google Patents (skip that last step with --no-google on a host Google blocks). With --source google it is Google, then the index.

With Google Patents: each patent's own published record on Google Patents, read from the page's metadata: filing date (DC.date scheme=dateSubmitted), issue or publication date, and the first named inventor. A granted patent carries its issue date with scheme="issue"; a publication has a plain DC.date instead, and the program knows the difference. There is a short pause between lookups, to be a polite visitor. Anything it cannot find is listed at the end rather than left silently empty.

Duplicates are dropped: the same number given twice, or a number that also turns up in the folder, is listed once.

Requirements: Python 3.9 or newer and python-docx (pip install python-docx, or sudo apt install python3-docx).

Tests:

python3 -m unittest discover -s tests -v

They cover the classifying, the number shapes, the folder reading and the document itself, and never go online.

License

MIT. See LICENSE. Written with AI assistance (Claude).

Information for nerds: the source code

Everything this project is made of, as committed: the code, its README files and its license. No build step or account needed to read it.

⬇ Download source (.zip)

sienna-ids-generator.zip · 154 KB · released under the license stated on this page.

Please test before relying on these tools. They are shared as-is, with no warranty. They work on my own computers, but your system, settings and software versions may differ, so please try them in a safe setting first. If something doesn't work, you can ask Claude (or another AI coding assistant) to look into it, and I'd appreciate hearing what you found and how you fixed it. You are also welcome to just let me know at support@veered.org, and I'll look into it.