Recipe: Freedom-to-Operate (FTO) Search
Search for potentially blocking patents for a product or technology. Each
database uses its own query syntax — see flowleap-uspto for the USPTO Lucene
grammar.
Steps
Step 1: Write Targeted Searches
Write a query per key product feature, in each database's own syntax, yourself
(method in flowleap-patent; ODP Lucene in flowleap-uspto). For each
feature: extract its specific noun phrases, build the CQL around the
discriminating ones, and probe the count — FTO is a recall search, so refine
toward broad (drop classifications, OR in synonyms) rather than precise:
# EPO CQL count probe for feature 1 (read `total` from the payload)
flowleap --json tools run search_patents query='<CQL for feature 1>' range=1-1 details=false
# Repeat for each feature; USPTO Lucene queries are title + metadata only
Done when every key feature has a probed EPO CQL query and a USPTO ODP query.
Step 2: Search for Potentially Blocking Patents
flowleap --json patent search --query "<CQL for feature 1>" --limit 20
flowleap --json uspto search --query "<recommended_query for feature 1>" --limit 20
# Repeat for each feature
A missing patent-data key never narrows a clearance scope. If one office
answers provider_keys_required, search the live office fully and carry the
gated office into the deliverable as an explicit missing-key gap — an
unsearched jurisdiction is not a cleared one, and web-scraped patent data is not
an acceptable substitute for it. Ask for the free key at the end of the turn;
when the user adds it, re-run only that office and merge. See flowleap-keys.
Done when both databases have been searched for every feature, or the gated office is recorded as an open missing-key gap.
Step 3: Screen to Live, In-Market Candidates
Take the one-call snapshot (bibliography + legal status + family + term) and keep only patents that are legally alive and cover a jurisdiction you sell in:
flowleap --json summary <patent-number>
Or, if you need the pieces separately:
flowleap --json ops legal <patent-number> # is it active?
flowleap --json ops family <patent-number> # where is it filed?
Done when every survivor is both in force and filed in a sales jurisdiction; drop the rest.
Step 4: All-Elements Claim Mapping
For each surviving blocker, pull its claims and map product features against every element of each independent claim:
flowleap --json ops claims <patent-number>
A claim clears only if at least one of its elements is absent from the product. Done when every independent claim of every survivor is either cleared (≥1 element absent) or flagged as a live infringement risk.
Output
FTO data package per live blocking patent:
- Legal status (active, expired, abandoned) and remaining term
- Geographic coverage (family members) against your sales jurisdictions
- Per-claim all-elements verdict: cleared or at-risk
If the full skill pack is installed, continue with recipe-infringement-charting
to chart the at-risk claims element by element.