DEV Community

Cover image for Count patent observations by assignee without mixing date bases
Tim Zinin
Tim Zinin

Posted on

Count patent observations by assignee without mixing date bases

I maintain this Actor. This is an AI-assisted technical walkthrough, fact-checked against its accepted source contract and saved acceptance evidence.

A portfolio chart can change meaning when its date column changes. A filing date describes one event, a publication date another, and a scrape timestamp only records collection. Mixing all three into “patents this year” creates a time series whose apparent trend may come from the data pipeline itself.

The Patent Assignee Period Rollup processes supplied patent records into bounded assignee portfolio assessments. It keeps supported date bases separate and exposes missing metadata and conflicts. It does not fetch patents, establish ownership, or claim that a supplied batch is an organization's complete worldwide portfolio.

Keep the assignee grouping literal

Assignee identity uses explicit text with normalized whitespace. It does not resolve corporate families, acquisitions, subsidiaries, or similarly named organizations. This is useful for a reproducible rollup: the grouping rule is visible, and a separate entity-resolution process can be evaluated independently if your application needs one.

A patent observed under multiple assignees may appear in each clearly labelled co-observed portfolio. That does not imply fractional ownership or an allocation of rights. Summing those portfolio counts across assignees can therefore double-count shared observations. Your dashboard should explain its counting basis instead of presenting the sum as a distinct global patent total.

Treat each event date as its own axis

The Patent Monitor adapter's patentDate has its own patentDate basis. It is not silently renamed to filingDate. Supported Google Patents filing, publication, and grant dates remain separate bases as well. Observation timestamps do not substitute for missing event dates. Strict calendar validation prevents an invalid date from quietly entering a period bucket.

The saved acceptance example produces assignee_portfolio_rollup, action review_portfolio, and high confidence. Relevant fields include distinctPatentCount, coObservedPatentCount, datePeriodCounts, and missingMetadataCounts. The counts describe supplied records. They do not establish global research velocity, market share, or a growth rate beyond the measured batch.

Build a chart that exposes its denominator

Display the source observation window and the number of distinct patents next to a period chart. Keep missing-date counts visible. A chart covering a larger input snapshot should not be compared with a smaller snapshot as if both were exhaustive portfolios. Source coverage and omitted evidence fields explain practical limits that a clean bar chart can otherwise conceal.

Test a duplicated patent record, the same patent under two assignees, and one patent with different filing and publication years. Add an invalid date in a labelled synthetic fixture. Confirm that duplicates do not inflate a portfolio, co-observation remains explicit, and the date bases produce separate buckets. A missing or invalid patent identifier should remain a free diagnostic. Preserve record conflicts for review instead of using whichever duplicate happened to arrive last. This makes the rollup a dependable transformation layer while leaving ownership and patent analysis to their own evidence-backed workflows.

Run a small saved snapshot

Start with an existing Dataset you are authorized to read. Replace the Dataset placeholder below with its actual ID. Supported input can also use a source run ID or inline records; choose one explicit source. This Actor does not launch the upstream collection for you.

curl --request POST \
  'https://api.apify.com/v2/acts/zinin~patent-assignee-period-rollup/runs?maxTotalChargeUsd=0.10' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{"datasetId":"REPLACE_WITH_YOUR_DATASET_ID","maxInputRows":100,"maxResults":10}'
Enter fullscreen mode Exit fullscreen mode

The response identifies an asynchronous run. Save that run ID and check its status before reading its default Dataset. A client timeout does not cancel a server run; inspect the existing ID before starting another one. maxInputRows bounds ingestion and maxResults caps useful output. Neither option establishes complete coverage of a larger source. The API charge limit is a ceiling, not a promise that ten results will fit.

Price and evidence limits

On 15 October 2026 the observed FREE-plan price is $0.035 per portfolio assessment, with no paid start event for this Actor. Other subscription tiers can have different prices; verify the current Actor page before use. Source collection is a separate activity and may carry its own charges. Free diagnostic rows do not count as paid useful assessments.

The examples discussed here come from saved owner acceptance runs. They show specific observed behavior, rather than customer acceptance, profitability, or an exhaustive guarantee for every input. A new run of identical input can be charged again without adding new source evidence. Retain input provenance, the actual build ID, and the source observation window when comparing results over time.

Top comments (0)