A Patent Demand Letter Takes a Professional Search and Weeks to Answer. Nightshift Reads 2,000 Patents in 4 Minutes for $34 and Finds the Reference the Examiner Missed.
Every existing prior-art tool is a retrieval system: rank a corpus, show a human the top few dozen. That has a measurable ceiling: on the strongest embedding available, a top-50 shortlist still misses 59.7% of the references a USPTO examiner actually applied. Nightshift is a judgment system: a vector pass narrows 171,695 patents, then Gemini reads two thousand of them, not fifty, deciding for each whether it discloses each limitation. Blinded against real USPTO office-action citations: 97.5% recall of examiner-applied anticipation refs (n=40), 92.5% on obviousness (n=40), 18.8% on a control set never cited. On the demo run, 4 minutes across 10 Cloud Run tasks, $34.57, it independently surfaced the examiner's own X-cite at depth 218, plus a 1998 reference the examiner missed that teaches six of seven limitations outright.

Why retrieval alone has a ceiling
Every existing prior-art tool is a retrieval system: rank a corpus, show a human the top few dozen results. Ranking this corpus with `gemini-embedding-001`, the strongest embedding available, a top-50 shortlist still misses 59.7% of the references a USPTO examiner actually applied to anticipate a claim. Better ranking does not fix it. Reading further down the list does. Depth 20 finds 26.6% of anticipation references, depth 50 finds 40.3%, depth 500 finds 71.0%, depth 2,000 finds 83.9%. The prefilter is not asked to be right, only asked not to lose the answer.

Graded by USPTO examiners, not by me
Blinded: the model never sees the reference's patent number, title, assignee, or dates, so it cannot lean on anything it may have memorized. On 40 references a USPTO examiner applied as §102 anticipation, the screener flags 97.5%. On 40 references applied as §103 obviousness, 92.5%. On a control set of 80 references the examiner never cited, drawn from the same corpus and passing the same priority-date gate, 18.8%. The control is what makes the other two mean anything: recall alone is trivially gamed by flagging everything, so the same screener runs over references the examiner did not cite. End-to-end (prefilter × screener) at 2,000 candidates: 81.8% on X-cites, 62.8% on Y-cites.

The demo run, end to end
Run `10163121-c398c4bc`, a real Cloud Run execution. Target: US 10,163,121 (targeted marketing and consumer resource management), prosecuted against US 7,606,730 (multiple-merchant stored-value card), which a USPTO examiner applied as a category-X anticipation rejection. Blinded, without ever seeing the file history, Nightshift independently surfaced that same reference at depth 218, past every shortlist a person is shown. The two patents share almost no vocabulary: one calls itself targeted marketing, the other a stored-value card, and both describe accumulating loyalty value and redeeming it at a merchant point of sale. That is why keyword search misses it and why the judgment stage has to read rather than match. Wall time ~4 minutes across 10 Cloud Run tasks. Cost $34.57.

The result that matters more
Re-finding what an examiner already found proves the method works. Finding what the examiner missed is the product, and this run did. US 6,564,189, filed 1998-12-22, nearly eight years before this patent's priority date, appears nowhere in the examiner's citations. It teaches six of seven limitations outright where the examiner's own reference teaches two. Against Nightshift's own metric, that counts here as a miss, because the eval is measured against the examiner and not against ground truth. That is the honest reading of every recall number in this post: they are floors on performance, not estimates of it. Which reference makes the better invalidity case depends on claim construction and argument, and those are questions for counsel.

Architecture, and why cost drove it
Querying the public patents table per request is not survivable: a single description lookup scans 1,052 GB, and one target fetch joining claims scans 40 GB, because those tables are neither partitioned nor clustered on patent id. So the corpus is materialized once and clustered. A target fetch went from 40.16 GB to 0.20 GB, a factor of about 200. Gemini runs on Vertex AI (not the AI Studio endpoint) so no API key is required and the AI Studio free-tier caps that make thousands-of-candidates work unusable are avoided; the service account authenticates. Cloud Run Jobs fans the work across 10 tasks using the Cloud Run task index to distribute candidates by `MOD(rank, TASK_COUNT) = TASK_INDEX`.

Nightshift: A Patent Demand Letter Takes a Professional Search and Weeks to Answer. Nightshift Ranks 171,695 Patents, Reads the 2,000 Closest Against Every Claim Limitation, and Hands Your Attorney the Answer for $34.
View the project