Skip to content

kpi

The kpi.* commands extract operating metrics from transcripts and summarize KPI history across documents. Use this namespace when the user asks for ARR, customer counts, NRR, margins, or similar operating metrics that must be cited to source text.

All examples use --output json so results are stable to parse in terminals, scripts, and automation workflows.

Extract KPI evidence from filings or transcripts.

finance kpi.extract extracts KPI evidence from filings or transcripts. It returns ok, data, error, and warnings in JSON output. The result payload includes symbol, source, metrics, documents, kpis, count, total_count, truncated.

Use this command when you need cited KPI evidence rows from a specified source set, such as recent transcripts, filings, or both.

Behavior details: Returns evidence rows, not investment conclusions.

Terminal window
finance kpi.extract SYMBOL [source=transcripts|filings|both metrics=arr,nrr limit=30 quarter=latest form=10-K] [--output json]
ArgumentRequiredDefaultAccepted valuesDescription
symbolYesNoneStringTicker symbol to query, such as AAPL or NVDA.
sourceNoNonetranscripts, filings, bothProvider/source key accepted by this command.
formNo10-KStringSEC form type.
limitNo30IntegerMaximum number of records returned.
metricsNoarr,nrrStringComma-separated KPI names to search for, such as arr,nrr,large_customers.
quarterNolatestStringQuarter selector such as latest, Q4 2026, or another provider-supported quarter label.
Terminal window
finance kpi.extract IOT source=transcripts metrics=arr,net_new_arr,large_customers,nrr limit=8 --output json

This output was generated with finance kpi.extract IOT source=transcripts metrics=arr,net_new_arr,large_customers,nrr limit=8 --output json.

{
"ok": true,
"data": {
"symbol": "IOT",
"source": "transcripts",
"metrics": [
"arr",
"net_new_arr",
"large_customers",
"nrr"
],
"documents": [
{
"doc_ref": 0,
"kind": "transcript",
"symbol": "IOT",
"title": "Samsara (IOT) Q4 2026 Earnings Call Transcript",
"quarter": "Q4 2026",
"period": "Q4 2026",
"published_at": "2026-03-05T23:27:39+00:00",
"url": "https://www.fool.com/earnings/call-transcripts/2026/03/05/samsara-iot-q4-2026-earnings-call-transcript/",
"source": "motley_fool"
}
],
"kpis": [
{
"metric": "arr",
"value": {
"raw": "$1.9 billion",
"number": 1900000000.0,
"currency": "USD"
},
"period": "Q4 2026",
"evidence": "We ended the year with $1.9 billion in ARR, growing 30% year over year.",
"confidence": "medium",
"matched_term": "arr",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "30%",
"r": "yoy"
}
],
"doc_ref": 0
},
{
"metric": "net_new_arr",
"value": {
"raw": "$432 million",
"number": 432000000.0,
"currency": "USD"
},
"period": "Q4 2026",
"evidence": "Our $432 million of net new ARR drove this performance, growing 21% year over year and demonstrating our ability to accelerate growth even as we operate at much larger scale.",
"confidence": "medium",
"matched_term": "net new arr",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "21%",
"r": "yoy"
}
],
"doc_ref": 0
},
{
"metric": "arr",
"value": {
"raw": "$1.2 billion",
"number": 1200000000.0,
"currency": "USD"
},
"period": "Q4 2026",
"evidence": "We ended the year with $1.2 billion of ARR from our $100K+ ARR customers, an increase of 37% year over year, our second consecutive quarter of sequential acceleration.",
"confidence": "medium",
"matched_term": "arr",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "$100K+",
"r": "threshold",
"desc": "ARR customers"
},
{
"v": "37%",
"r": "yoy"
}
],
"doc_ref": 0
},
{
"metric": "large_customers",
"value": {
"raw": "204",
"number": 204.0
},
"period": "FY 2026",
"evidence": "In Q4, we added 204 new $100K+ ARR customers and ended FY 2026 with 3,194 $100K+ ARR customers.",
"confidence": "medium",
"matched_term": "$100k+ arr customers",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "$100K+",
"r": "threshold",
"desc": "ARR customers"
},
{
"v": "3,194",
"r": "count",
"desc": "customers"
}
],
"doc_ref": 0
},
{
"metric": "arr",
"value": {
"raw": "$1.9 billion",
"number": 1900000000.0,
"currency": "USD"
},
"period": "FY 2026",
"evidence": "Q4 and FY 2026 ending ARR was $1.9 billion, an increase of 30% year over year, accelerating sequentially at a larger scale.",
"confidence": "medium",
"matched_term": "arr",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "30%",
"r": "yoy"
}
],
"doc_ref": 0
},
{
"metric": "net_new_arr",
"value": {
"raw": "$145 million",
"number": 145000000.0,
"currency": "USD"
},
"period": "Q4 2026",
"evidence": "Within that, we added $145 million of net new ARR in Q4, an increase of 33% year over year or 31% in constant currency, resulting in the third consecutive quarter of accelerating sequential growth and the highest net new ARR growth rate in the past eight quarters.",
"confidence": "medium",
"matched_term": "net new arr",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "33%",
"r": "yoy"
},
{
"v": "31%",
"r": "yoy"
}
],
"doc_ref": 0
},
{
"metric": "net_new_arr",
"value": {
"raw": "$432 million",
"number": 432000000.0,
"currency": "USD"
},
"period": "FY 2026",
"evidence": "Our overall net new ARR in FY 2026 was $432 million, an increase of 21% year over year, which also accelerated year over year at a larger scale.",
"confidence": "medium",
"matched_term": "net new arr",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "21%",
"r": "yoy"
}
],
"doc_ref": 0
},
{
"metric": "large_customers",
"value": {
"raw": "3,194",
"number": 3194.0
},
"period": "Q4 2026",
"evidence": "In terms of large customers, we ended Q4 with 3,194 $100K+ ARR customers, including a quarterly increase of 204, our second-highest quarter ever.",
"confidence": "medium",
"matched_term": "$100k+ arr customers",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "$100K+",
"r": "threshold",
"desc": "ARR customers"
},
{
"v": "204",
"r": "count",
"desc": "customers"
}
],
"doc_ref": 0
}
],
"count": 8,
"total_count": 11,
"truncated": true,
"warnings": []
},
"error": null,
"warnings": []
}
FieldTypeDescription
okbooleanWhether the command completed successfully.
dataobject or nullCommand-specific result payload. It is null when ok is false.
errorstring or nullHuman-readable error message when ok is false; otherwise null.
warningsarrayNon-fatal warnings returned by the command.
data.countintegerNumber of records included in the adjacent result array.
data.documentsarraySource documents inspected by the command.
data.documents[]objectSource documents inspected by the command.
data.kpisarrayExtracted KPI evidence records.
data.kpis[]objectExtracted KPI evidence records.
data.metricsarrayMetrics requested by the caller.
data.metrics[]stringMetrics requested by the caller.
data.sourcestringProvider or source identifier for the returned data.
data.symbolstringTicker symbol used by the command.
data.total_countintegerTotal matching records before command-level truncation.
data.truncatedbooleanWhether the command truncated the result.
data.warningsarrayNon-fatal warnings returned by the command.
data.documents[].doc_refintegerStable document reference used inside the result.
data.documents[].kindstringPresentation or document kind.
data.documents[].periodstringReporting or estimate period.
data.documents[].published_atstringPublication timestamp returned by the provider.
data.documents[].quarterstringFiscal quarter label.
data.documents[].sourcestringProvider or source identifier for the returned data.
data.documents[].symbolstringTicker symbol associated with the source document.
data.documents[].titlestringSource document title.
data.documents[].urlstringSource URL.
data.kpis[].confidencestringRegime confidence score.
data.kpis[].doc_refintegerStable document reference used inside the result.
data.kpis[].evidencestringSource text evidence for a KPI or answer.
data.kpis[].match_methodstringMatching method used for the KPI or search hit.
data.kpis[].match_scorenumberSimilarity or confidence score for the match.
data.kpis[].matched_termstringTerm that matched the requested KPI.
data.kpis[].metricstringMetric name.
data.kpis[].periodstringReporting or estimate period.
data.kpis[].relatedarrayNearby related matches for the same KPI evidence row.
data.kpis[].related[]objectRelated KPI evidence match.
data.kpis[].valueobjectParsed KPI value object when the extractor identifies a numeric or textual value.
data.kpis[].related[].descstringDescription of the related match.
data.kpis[].related[].rstringRelated match reference or relationship label.
data.kpis[].related[].vstringRelated match value text.
data.kpis[].value.currencystringTrading or reporting currency.
data.kpis[].value.numbernumberNumeric value parsed from text when available.
data.kpis[].value.rawstringRaw provider value.

Extract KPI evidence across recent transcripts.

finance kpi.history extracts KPI evidence across recent transcripts. It returns ok, data, error, and warnings in JSON output. The result payload includes symbol, source, metrics, history, count.

Use this command when you need to compare KPI evidence across recent documents rather than inspect only one document.

Terminal window
finance kpi.history SYMBOL [source=transcripts metrics=arr,nrr limit=4 per_document_limit=20] [--output json]
ArgumentRequiredDefaultAccepted valuesDescription
symbolYesNoneStringTicker symbol to query, such as AAPL or NVDA.
sourceNotranscriptsStringProvider/source key accepted by this command.
limitNo4IntegerMaximum number of records returned.
metricsNoarr,nrrStringComma-separated KPI names to search for, such as arr,nrr,large_customers.
per_document_limitNo20IntegerMaximum KPI evidence rows kept per source document.
Terminal window
finance kpi.history IOT metrics=arr,large_customers limit=2 per_document_limit=4 --output json

This output was generated with finance kpi.history IOT metrics=arr,large_customers limit=2 per_document_limit=4 --output json.

{
"ok": true,
"data": {
"symbol": "IOT",
"source": "transcripts",
"metrics": [
"arr",
"large_customers"
],
"history": [
{
"documents": [
{
"doc_ref": 0,
"kind": "transcript",
"symbol": "IOT",
"title": "Samsara (IOT) Q4 2026 Earnings Call Transcript",
"quarter": "Q4 2026",
"period": "Q4 2026",
"published_at": "2026-03-05T23:27:39+00:00",
"url": "https://www.fool.com/earnings/call-transcripts/2026/03/05/samsara-iot-q4-2026-earnings-call-transcript/",
"source": "motley_fool"
}
],
"kpis": [
{
"metric": "arr",
"value": {
"raw": "$1.9 billion",
"number": 1900000000.0,
"currency": "USD"
},
"period": "Q4 2026",
"evidence": "We ended the year with $1.9 billion in ARR, growing 30% year over year.",
"confidence": "medium",
"matched_term": "arr",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "30%",
"r": "yoy"
}
],
"doc_ref": 0
},
{
"metric": "arr",
"value": {
"raw": "$1.2 billion",
"number": 1200000000.0,
"currency": "USD"
},
"period": "Q4 2026",
"evidence": "We ended the year with $1.2 billion of ARR from our $100K+ ARR customers, an increase of 37% year over year, our second consecutive quarter of sequential acceleration.",
"confidence": "medium",
"matched_term": "arr",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "$100K+",
"r": "threshold",
"desc": "ARR customers"
},
{
"v": "37%",
"r": "yoy"
}
],
"doc_ref": 0
},
{
"metric": "large_customers",
"value": {
"raw": "204",
"number": 204.0
},
"period": "FY 2026",
"evidence": "In Q4, we added 204 new $100K+ ARR customers and ended FY 2026 with 3,194 $100K+ ARR customers.",
"confidence": "medium",
"matched_term": "$100k+ arr customers",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "$100K+",
"r": "threshold",
"desc": "ARR customers"
},
{
"v": "3,194",
"r": "count",
"desc": "customers"
}
],
"doc_ref": 0
},
{
"metric": "arr",
"value": {
"raw": "$1.9 billion",
"number": 1900000000.0,
"currency": "USD"
},
"period": "FY 2026",
"evidence": "Q4 and FY 2026 ending ARR was $1.9 billion, an increase of 30% year over year, accelerating sequentially at a larger scale.",
"confidence": "medium",
"matched_term": "arr",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "30%",
"r": "yoy"
}
],
"doc_ref": 0
}
],
"count": 4
},
{
"documents": [
{
"doc_ref": 0,
"kind": "transcript",
"symbol": "IOT",
"title": "Samsara (IOT) Q3 2026 Earnings Call Transcript",
"quarter": "Q3 2026",
"period": "Q3 2026",
"published_at": "2025-12-05T15:06:48+00:00",
"url": "https://www.fool.com/earnings/call-transcripts/2025/12/05/samsara-iot-q3-2026-earnings-call-transcript/",
"source": "motley_fool"
}
],
"kpis": [
{
"metric": "arr",
"value": {
"raw": "$1.75 billion",
"number": 1750000000.0,
"currency": "USD"
},
"period": "Q3 2026",
"evidence": "We ended Q3 with $1.75 billion in ARR, growing 29% year-over-year.",
"confidence": "medium",
"matched_term": "arr",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "29%",
"r": "pct"
}
],
"doc_ref": 0
},
{
"metric": "arr",
"value": {
"raw": "$100,000",
"number": 100000.0,
"currency": "USD"
},
"period": "Q3 2026",
"evidence": "In Q3, we added 219 customers with $100,000 plus in ARR, a quarterly record.",
"confidence": "medium",
"matched_term": "arr",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "219",
"r": "count",
"desc": "customers"
}
],
"doc_ref": 0
},
{
"metric": "arr",
"value": {
"raw": "$1 billion",
"number": 1000000000.0,
"currency": "USD"
},
"period": "Q3 2026",
"evidence": "Our $100,000-plus ARR customers now contribute more than $1 billion of ARR, growing 36% year-over-year.",
"confidence": "medium",
"matched_term": "arr",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "$100,000",
"r": "threshold",
"desc": "ARR customers"
},
{
"v": "36%",
"r": "mix"
}
],
"doc_ref": 0
},
{
"metric": "arr",
"value": {
"raw": "$1 million",
"number": 1000000.0,
"currency": "USD"
},
"period": "Q3 2026",
"evidence": "We also added 17 $1 million-plus ARR customers tied for a quarterly record.",
"confidence": "medium",
"matched_term": "arr",
"match_score": 100.0,
"match_method": "exact",
"related": [
{
"v": "17",
"r": "count",
"desc": "customers"
}
],
"doc_ref": 0
}
],
"count": 4
}
],
"count": 2
},
"error": null,
"warnings": []
}
FieldTypeDescription
okbooleanWhether the command completed successfully.
dataobject or nullCommand-specific result payload. It is null when ok is false.
errorstring or nullHuman-readable error message when ok is false; otherwise null.
warningsarrayNon-fatal warnings returned by the command.
data.countintegerNumber of records included in the adjacent result array.
data.historyarrayHistorical KPI records grouped by metric or document.
data.history[]objectHistorical KPI records grouped by metric or document.
data.metricsarrayMetrics requested by the caller.
data.metrics[]stringMetrics requested by the caller.
data.sourcestringProvider or source identifier for the returned data.
data.symbolstringTicker symbol used by the command.
data.history[].countintegerNumber of records included in the adjacent result array.
data.history[].documentsarraySource documents inspected by the command.
data.history[].documents[]objectSource documents inspected by the command.
data.history[].kpisarrayExtracted KPI evidence records.
data.history[].kpis[]objectExtracted KPI evidence records.
data.history[].documents[].doc_refintegerStable document reference used inside the result.
data.history[].documents[].kindstringPresentation or document kind.
data.history[].documents[].periodstringReporting or estimate period.
data.history[].documents[].published_atstringPublication timestamp returned by the provider.
data.history[].documents[].quarterstringFiscal quarter label.
data.history[].documents[].sourcestringProvider or source identifier for the returned data.
data.history[].documents[].symbolstringTicker symbol associated with the historical source document.
data.history[].documents[].titlestringSource document title for the historical KPI record.
data.history[].documents[].urlstringSource URL.
data.history[].kpis[].confidencestringRegime confidence score.
data.history[].kpis[].doc_refintegerStable document reference used inside the result.
data.history[].kpis[].evidencestringSource text evidence for a KPI or answer.
data.history[].kpis[].match_methodstringMatching method used for the KPI or search hit.
data.history[].kpis[].match_scorenumberSimilarity or confidence score for the match.
data.history[].kpis[].matched_termstringTerm that matched the requested KPI.
data.history[].kpis[].metricstringMetric name.
data.history[].kpis[].periodstringReporting or estimate period.
data.history[].kpis[].relatedarrayNearby related matches for the KPI evidence row.
data.history[].kpis[].related[]objectRelated KPI evidence match.
data.history[].kpis[].valueobjectParsed KPI value object for the historical evidence row.
data.history[].kpis[].related[].descstringDescription of the related match.
data.history[].kpis[].related[].rstringRelated match reference or relationship label.
data.history[].kpis[].related[].vstringRelated match value text.
data.history[].kpis[].value.currencystringTrading or reporting currency.
data.history[].kpis[].value.numbernumberNumeric value parsed from text when available.
data.history[].kpis[].value.rawstringRaw provider value.