# Patent Desk > Paste one invention disclosure and run one of four jobs over it: assess whether it can support a > patent application yet, build the prior-art search to run before drafting, draft the claim set the > disclosure supports, or review an existing numbered claim set against 35 U.S.C. 112. https://patent-desk.skillsafe.ai/ ## What it is for A person holding one invention disclosure, in one sitting. The four lanes are the things that actually happen between an inventor's write-up and a claim set a practitioner would file: work out whether there is enough here to draft from, find out what has to be searched first, write the claims, and then check those claims against the statute that most often kills them. **It is not legal advice and not a law firm.** Patent Desk produces drafting work for a licensed patent practitioner to review. It gives no opinion on patentability, never predicts whether a claim will be allowed, does not advise on deadlines or bar dates, and is US practice only. **It runs no prior-art search, and it will not pretend to.** The prior-art lane produces the search you should run - classification codes, a concept matrix, exact query strings, a protocol, and the criteria by which a hit would knock out a claim element. The prompt forbids naming any patent number, publication, application number, author or date as prior art, because a fabricated reference is the most damaging thing a drafting tool can put in front of a drafter: it gets cited, and then relied on. ## The four lanes Every lane takes the same primary input - one invention disclosure - and returns the same outer envelope, so the export, history and reconciliation paths are identical across them. Only the `body` differs. | `task` | What it returns | | --- | --- | | `disclosure` | The inventive concept in one sentence, every element the disclosure names with an honest "described: full / partial / absent", the novelty candidates with the evidence for each, the statutory posture and 101 risk, the written-description and enablement gaps, the questions to put to the inventor, and a readiness score out of ten. No file. | | `priorart` | The search scope, candidate CPC/IPC classifications with a confidence, a concept matrix of synonyms and narrower and broader terms, at least four queries of genuinely different kinds with the engine and the noise each will pull in, a five-to-eight step protocol, non-patent sources, and the criteria by which a hit would anticipate or make obvious each claim element. Emits a fill-in search log as markdown. | | `claims` | The claim strategy, the whole claim set in order with a rationale and a supporting phrase for each claim, every element mapped to the claims that recite it, the fallback positions to retreat to on rejection, and what was deliberately left unclaimed. Emits the claim set as plain numbered text. | | `review112` | One verdict per claim - type, dependency, statutory class, definiteness, one-sentence form, transition phrase - plus the structural inventory, the 112(b), 112(a) and 112(d) objections each naming its provision, a rewrite for every serious one, and the list of claims with no objection. Emits the whole set with the rewrites applied. | The `claims` and `review112` lanes read a second input, `claims_text` - the numbered claim set. `review112` requires it; on `claims` it is an existing draft to revise rather than replace. ## The pipeline The lanes are ordered the way a person meets them: `disclosure` -> `priorart` -> `claims` -> `review112`. The handoff is a real one rather than a copy-paste chore: the `claims` lane emits `artifact.kind: "claims"` whose `content` is a plain numbered claim set, and one button carries that string into `claims_text` on a `review112` run. Driving the app over the API, you feed the same string back in yourself. ## Input fields ```json { "task": "disclosure | priorart | claims | review112", "disclosure": "the invention disclosure, verbatim", "claims_text": "the numbered claim set (required by review112, optional on claims)", "jurisdiction": "US", "context": "what the applicant thinks is new, what a competitor ships, what is already published", "prescan": { "flags": [{"id": "PK-ANTECEDENT-BASIS", "label": "...", "severity": "high", "claim_no": 6, "claims": [6, 9], "occurrences": 2, "terms": ["the shunt"], "detail": "..."}], "resources": [{"id": "PR-CLAIM-COUNTS", "label": "..."}] }, "clip_note": "present only when the input was too long and was clipped" } ``` ## Output contract One JSON object. The outer envelope is identical in all four lanes: ```json { "lane": "review112", "lane_inferred": false, "invention": "acoustic thermal-runaway detection for a battery pack", "title": "short human title", "posture": "filing-ready | needs-work | blocked", "verdict": "one sentence naming the thing that decides the posture", "statutory_classes": ["method", "apparatus", "crm"], "summary": "a paragraph a drafter could paste into a file note", "assumptions": [], "open_questions": [], "findings": [ {"id": "PD-001", "title": "", "severity": "critical | high | medium | low", "area": "eligibility | novelty | claim-scope | definiteness | antecedent-basis | dependency | support | enablement | drafting | search | formalities", "claim_no": 6, "term": "the shunt", "evidence": "", "why": "", "fix": "", "fix_text": ""} ], "coverage_check": [{"flag_id": "", "status": "confirmed | set-aside | superseded", "finding_id": "", "note": ""}], "artifact": {"kind": "none | claims | markdown", "filename": "", "content": ""}, "next_lane": {"lane": "", "reason": ""}, "body": {} } ``` `severity` means consequence, not tidiness: `critical` is "the claim or application cannot proceed as written"; `high` is "it will draw an office action or lose real scope"; `medium` is "it costs money, breadth or clarity"; `low` is style. An independent claim that omits the applicant's own stated inventive concept is `high` - it will issue, and it will be worthless. ## The free scan Before any model run, and without an account, the page runs a deterministic parser over the pasted disclosure and claim set entirely in the browser. It is a real parser rather than a keyword search. It splits the claim set on claim-number boundaries, resolves every dependency reference (including ranges and alternatives such as "any one of claims 1-3"), builds the dependency graph, computes each claim's chain depth, and detects cycles, forward references, dangling references, duplicate numbers and numbering gaps. The centrepiece is **antecedent basis**, the defect 35 U.S.C. 112(b) is most often applied to. For every definite reference in a claim ("the housing", "said controller") there must be an earlier indefinite introduction ("a housing", "at least one controller") in the same claim or in one of its ancestors. That is a graph walk plus a head-noun match, so it is computable: the scan walks the article tokens rather than pattern-matching phrases, registers every 1-to-4-token prefix head of each noun phrase, and treats a definite reference as satisfied if any of its own prefix heads was introduced earlier. The failure mode is a missed flag, never a false accusation of indefiniteness. It carries 31 rules with stable `PK-*` ids. Over the claim set: numbering gaps, duplicate numbers, forward and self dependencies, cycles, dangling references, multiple dependency, the single-sentence rule, a missing or closed transition phrase, antecedent basis, relative and approximating terms, means-plus-function and nonce-word limitations, reference numerals in claims, omnibus claims, "and/or", over-long claims, deep dependency chains, dependent claims that add nothing, mixed statutory class, and the USPTO excess-claim thresholds by count. Over the disclosure: length, which standard specification sections have headings, figure references and gaps in their numbering, one reference numeral attached to two different element names, "any suitable" and "known in the art" as enablement holes, and abstract-idea vocabulary with no technical-improvement language beside it. The scan states thresholds and counts only and **no fee amounts** - a fee schedule changes, and a stale number would be worse than none. Flags are filtered to the lane being run, so the same material sends a different set per lane. Every flag raised is sent with the run, and the model must return exactly one `coverage_check` entry per flag id. Anything it fails to account for is surfaced in the interface as unreconciled rather than quietly dropped - the free lane exists to hold the paid lane accountable. Where the model and the scan disagree on a countable fact, the scan wins; where they disagree on whether the flagged text is a problem, the model may set the flag aside and say why. ## What costs what The scan, the claim dependency tree, the worked examples and every export are free and need no account. Running a lane is metered and needs an account; the reservation is shown before you press the button and the actual charge is usually far lower. Each lane ships a saved example run that replays for free, so all four renderers can be seen end to end without spending anything. Nothing you paste leaves the browser until you ask for a run. Drafts and run history are stored per signed-in subject, never in one shared bucket, and signing out purges this device's copy. ## Also on this site - `/api.html` - driving the app programmatically, in cURL, Python, JavaScript, Go, Java, Ruby, PHP and C# - `/tokens.html` - token management for this app, without opening a developer console ## Provenance Patent Desk is a derived work built on four agent skills: `@robthepcguy/patent-claims-analyzer`, `@robthepcguy/patent-application-creator` and `@robthepcguy/prior-art-search` from the `robthepcguy/claude-patent-creator` repository, and `@omer-metin/patent-drafting` from `omer-metin/skills-for-antigravity`. It is not affiliated with, endorsed by, or maintained by those authors, the United States Patent and Trademark Office, WIPO, or any patent office.