Recued
Menu
← Back to recipes

Refresh a company's fundamentals

by recued-core v4 35 views

Use “Refresh a company's fundamentals” in Recued. Pull one reported xbrl concept for one watched company straight out of its SEC filings and keep the most recent periods. Only periods not already stored are added, so re-running is safe and cheap.

Complete workflow

Fundamentals Watch 4 pinned recipes

Use Fundamentals Watch in Recued for stocks, equities, sec, and edgar. It includes 9 built-in actions and 3 ready-to-run workflows. Actions that change data use Recued's approval controls.

You are viewing one recipe in this workflow. Installing it opens the complete pack so its other recipes and background automations arrive together.

Use “Refresh a company's fundamentals” in Recued. Pull one reported xbrl concept for one watched company straight out of its SEC filings and keep the most recent periods. Only periods not already stored are added, so re-running is safe and cheap.

pack:fundamentals-watchstockssecedgar
by recued-core pinned v4

Use “Watch a company” in Recued. Resolve one ticker to its SEC CIK once and keep it.

pack:fundamentals-watchstockssecedgar
by recued-core pinned v3

Use “Show a company's filed numbers” in Recued. List the stored periods for one company and concept, newest first, with the change against the period before it. Read-only — it calls the SEC not at all and shows only what a refresh already stored.

pack:fundamentals-watchstockssecboard
by recued-core pinned v3
View pack details, dependencies, and permissions →

What it reads

One XBRL concept for one company — every value it has reported for that tag, across all its filings — and keeps the newest periods.

Tag is the concept name as the SEC stores it. Common ones:

  • RevenueFromContractWithCustomerExcludingAssessedTax — revenue for most modern filers
  • NetIncomeLoss — net income
  • Assets, Liabilities, StockholdersEquity

⚠ There is no universal revenue tag. Filers choose which concept to report under, and it changes between eras and industries. A company that reports revenue under a different tag returns 404, which this recipe reports as not reported under that tag rather than as an error — try another tag rather than assuming the company filed nothing.

⚠ USD only. The response groups values by unit; this recipe reads units.USD and ignores the rest, so a foreign-currency filer will look empty. That is a real limit, not a bug, and the card says which units were present.

⛔ One period, one figure: the SEC's. A 10-Q reports the quarter AND the year to date under the same end date, and a later filing repeats earlier periods as comparatives under its own fiscal label. This keeps only the fact the SEC aligned to a single period (it carries a frame: CY2026Q2 a quarter, CY2025 a year); where a year and a quarter end the same day, the year is kept. Each row is labelled by the filing that FIRST reported the period. Until 2026-10-08 this recipe read the response one level too shallow and stored nothing at all, and had it read it, it would have stored every second and third quarter as its year to date (Apple's FY2026 Q3 as $364.4B; the quarter was $109.4B).

A figure that is no period's own is corrected. If a stored figure is not any filing's figure for that single period (a year to date kept under a quarter's date), a refresh replaces it with the period's own figure and label, and the card counts it. A figure some filing reported for that period is left alone, so a restatement still never overwrites history.

⚠ Both 10-K and 10-Q rows are kept, and they are not comparable. A 10-K value is usually a full year and a 10-Q a single quarter; the form column tells you which. Do not sum a column that mixes them.

⚠ Restatements exist. A later filing can report a different value for a period already stored. One period of one concept for one company is ONE row, and the first value observed is the one kept — refreshing never overwrites history and never adds a second row for a period you already have. Delete the datapoint if you want it re-read.

⛔ That rule is enforced by the store, not by this recipe, and it did not used to be. The recipe reads back what it already holds and skips those periods, but that read is capped at 200 rows — so a company with a long history compared itself against a fraction of itself, and every refresh past that point added the same periods again. The row id is now derived from the company, the concept and the period, so a period you already have is recognised however long the history is. The read-back stays as a shortcut; it is no longer what keeps the numbers right.

⚠ This reports what was filed. It is not advice, a score, or a recommendation, and nothing here values a company.

How it works 52 steps

Inspect the data fetches, transforms, gates, and output this recipe runs.

Process (52 steps)
■ company_id trim
Trim whitespace from setting company id
■ id_present compare
Check if company id has data
⚠ id_guard guard
Stop if id present equals
◆ company recued-core.fundamentals-watch.company.get
Get company on fundamentals watch
■ found compare
Check if company record id has data
⚠ found_guard guard
Stop if found equals
■ cik default
Apply default
■ cik_present compare
Check if cik has data
⚠ cik_guard guard
Stop if cik present equals
■ tag trim
Trim whitespace from setting tag
■ cik_list to_list
Apply to_list
◆ concept_probe recued-core.sec-edgar-data.company.concept_read
Concept read company on sec edgar data
■ defaults defaults
Apply defaults
■ units default
Apply default
■ unit_list to_list
Apply to_list
■ unit_names pluck
Extract key from each item
■ units_seen join
Join items with ", "
■ usd_rows default
Apply default
■ usd_count count
Count items in usd rows
■ periodic filter
Filter by condition
■ framed filter
Filter by condition
■ annual_first sort
Sort by
■ one_per_end unique
Remove duplicates from
■ by_filing sort
Sort by filed
■ keyed_filings map
Extract from each item
■ first_filings unique
Remove duplicates from
■ labels map
Extract from each item
■ one_per_end_keyed map
Extract from each item
■ labelled enrich_by
Apply enrich_by
■ wanted slice
Take a subset of
■ company_ref template
Generate text from a template
◆ stored recued-core.fundamentals-watch.datapoint.search
Search datapoint on fundamentals watch
■ stored_rows default
Apply default
■ stored_ends pluck
Extract period_end from each item
■ stored_count count
Count items in stored ends
■ fresh filter
Filter by condition
■ fresh_rows map
Extract from each item
■ fresh_count count
Count items in fresh rows
◆ write recued-core.fundamentals-watch.datapoint.create
Create datapoint on fundamentals watch
■ framed_keys pluck
Extract period_key from each item
■ single_period filter
Filter by condition
■ valid_pairs map
Extract from each item
■ stored_pairs map
Extract from each item
■ suspect filter
Filter by condition
■ repairs enrich_by
Apply enrich_by
■ repairable filter
Filter by condition
◆ repair recued-core.fundamentals-watch.datapoint.update
Update datapoint on fundamentals watch
■ repaired_ok filter
Filter by condition
■ repaired_count count
Count items in repaired ok
■ refreshed_at date_add
Add 0 seconds to
◆ touch_company recued-core.fundamentals-watch.company.update
Update company on fundamentals watch
■ card to_summary
Format results as a summary card
▼
Output
summary card
Settings 4 configurable

Configurable at install. Defaults shown — change them anytime in Recued.

tag setting = RevenueFromContractWithCustomerExcludingAssessedTax
taxonomy setting = us-gaap
company id setting = [object Object]
max periods setting = 8

Uses (6 operations)

Pack operation Get company on fundamentals watch recued-core.fundamentals-watch.company.get
Pack operation Concept read company on sec edgar data recued-core.sec-edgar-data.company.concept_read
Pack operation Search datapoint on fundamentals watch recued-core.fundamentals-watch.datapoint.search
Pack operation Create datapoint on fundamentals watch recued-core.fundamentals-watch.datapoint.create
Pack operation Update datapoint on fundamentals watch recued-core.fundamentals-watch.datapoint.update
Pack operation Update company on fundamentals watch recued-core.fundamentals-watch.company.update

Trust & control

What installing this recipe would let it do. Recued grants these permissions at install — review them there before approving.

What it's allowed to do

Write Pack Fundamentals Watch external change
Read: company.get · No approvalRead: datapoint.search · No approvalWrite: datapoint.create · No approvalWrite: datapoint.update · No approvalWrite: company.update · No approval

1 more isn't listed here. You'll see it at install.

Data it touches

Warehousedata.company

About

Tags

pack:fundamentals-watchstockssecedgarxbrlrecordsv2

Details

52 steps 4 configurable settings recipe_id: refresh-company-fundamentals