AAPL workspace
build AAPL_2Q26 · synced 2026-07-06 · tieouts computed locally (no tieouts.json in build)
| Income Statement · line | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 |
|---|---|---|---|---|---|---|---|
| ProductsRevenueFromContractWithCustomerExcludingAssessedTax__dim__ProductMember | 213,883,000 | 220,747,000 | 297,392,000 | 316,199,000 | 298,085,000 | 294,866,000 | 307,003,000 |
| ServicesRevenueFromContractWithCustomerExcludingAssessedTax__dim__ServiceMember | 46,291,000 | 53,768,000 | 68,425,000 | 78,129,000 | 85,200,000 | 96,169,000 | 109,158,000 |
| Net salesRevenueFromContractWithCustomerExcludingAssessedTax | 260,174,000 | 274,515,000 | 365,817,000 | 394,328,000 | 383,285,000 | 391,035,000 | 416,161,000 |
| ProductsCostOfGoodsAndServicesSold__dim__ProductMember | 144,996,000 | 151,286,000 | 192,266,000 | 201,471,000 | 189,282,000 | 185,233,000 | 194,116,000 |
| ServicesCostOfGoodsAndServicesSold__dim__ServiceMember | 16,786,000 | 18,273,000 | 20,715,000 | 22,075,000 | 24,855,000 | 25,119,000 | 26,844,000 |
| Cost of salesCostOfGoodsAndServicesSold | 161,782,000 | 169,559,000 | 212,981,000 | 223,546,000 | 214,137,000 | 210,352,000 | 220,960,000 |
| Gross profitGrossProfit | 98,392,000 | 104,956,000 | 152,836,000 | 170,782,000 | 169,148,000 | 180,683,000 | 195,201,000 |
| Σ vs disclosed | -745,520,000 | -783,192,000 | -1,004,760,000 | -1,064,966,000 | -1,025,696,000 | -1,022,091,000 | -1,079,041,000 |
| Research and developmentResearchAndDevelopmentExpense | 16,217,000 | 18,752,000 | 21,914,000 | 26,251,000 | 29,915,000 | 31,370,000 | 34,550,000 |
| Selling, general and administrativeSellingGeneralAndAdministrativeExpense | 18,245,000 | 19,916,000 | 21,973,000 | 25,094,000 | 24,932,000 | 26,097,000 | 27,601,000 |
| Total operating expensesOperatingExpenses | 34,462,000 | 38,668,000 | 43,887,000 | 51,345,000 | 54,847,000 | 57,467,000 | 62,151,000 |
| Σ vs disclosed | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Operating incomeOperatingIncomeLoss | 63,930,000 | 66,288,000 | 108,949,000 | 119,437,000 | 114,301,000 | 123,216,000 | 133,050,000 |
| Other income/(expense), netNonoperatingIncomeExpense | 1,807,000 | 803,000 | 258,000 | -334,000 | -565,000 | 269,000 | -321,000 |
| Earnings before taxesIncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest | 65,737,000 | 67,091,000 | 109,207,000 | 119,103,000 | 113,736,000 | 123,485,000 | 132,729,000 |
| Σ vs disclosed | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Provision for income taxesIncomeTaxExpenseBenefit | 10,481,000 | 9,680,000 | 14,527,000 | 19,300,000 | 16,741,000 | 29,749,000 | 20,719,000 |
| Net incomeNetIncomeLoss | 55,256,000 | 57,411,000 | 94,680,000 | 99,803,000 | 96,995,000 | 93,736,000 | 112,010,000 |
| Σ vs disclosed | +44,775,000 | +47,731,000 | +80,153,000 | +80,503,000 | +80,254,000 | +63,987,000 | +91,291,000 |
| Diluted EPSEarningsPerShareDiluted | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Diluted sharesWeightedAverageNumberOfDilutedSharesOutstanding | 18,595,651 | 17,528,214 | 16,864,919 | 16,325,819 | 15,812,547 | 15,408,095 | 15,004,697 |
✓ column ties. ±X annual non-tie → blocking. ±X quarter / YTD non-tie → expected artifact (muted, never red). Values in $ thousands.
Decision queue
Conflicting vintages whose concept maps to a rendered statement line — the cards that touch the model.
CommercialPaper @ 2019-03-30
spread · failed: most_recent_wins (spread=0.20%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CommercialPaper · 2019-03-30
overrides:
CommercialPaper:
"2019-03-30":
value: 11900000000
filing_date: 2019-05-01
note: "vintage chosen via fallback; most_recent_wins (spread=0.20%)"
CommercialPaper @ 2019-06-29
spread · failed: most_recent_wins (spread=0.47%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CommercialPaper · 2019-06-29
overrides:
CommercialPaper:
"2019-06-29":
value: 10000000000
filing_date: 2019-07-31
note: "vintage chosen via fallback; most_recent_wins (spread=0.47%)"
CommercialPaper @ 2019-12-28
spread · failed: most_recent_wins (spread=0.20%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CommercialPaper · 2019-12-28
overrides:
CommercialPaper:
"2019-12-28":
value: 5000000000
filing_date: 2020-01-29
note: "vintage chosen via fallback; most_recent_wins (spread=0.20%)"
CostOfGoodsAndServicesSold @ 2018-03-31
spread · failed: most_recent_wins (spread=144.19%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CostOfGoodsAndServicesSold · 2018-03-31
overrides:
CostOfGoodsAndServicesSold:
"2018-03-31":
value: 92096000000
filing_date: 2019-05-01
note: "vintage chosen via fallback; most_recent_wins (spread=144.19%)"
CostOfGoodsAndServicesSold @ 2018-06-30
spread · failed: most_recent_wins (spread=280.40%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CostOfGoodsAndServicesSold · 2018-06-30
overrides:
CostOfGoodsAndServicesSold:
"2018-06-30":
value: 124940000000
filing_date: 2019-07-31
note: "vintage chosen via fallback; most_recent_wins (spread=280.40%)"
CostOfGoodsAndServicesSold @ 2025-06-28
spread · failed: most_recent_wins (spread=231.56%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CostOfGoodsAndServicesSold · 2025-06-28
overrides:
CostOfGoodsAndServicesSold:
"2025-06-28":
value: 166835000000
filing_date: 2025-08-01
note: "vintage chosen via fallback; most_recent_wins (spread=231.56%)"
CostOfGoodsAndServicesSold @ 2026-03-28
spread · failed: most_recent_wins (spread=132.13%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CostOfGoodsAndServicesSold · 2026-03-28
overrides:
CostOfGoodsAndServicesSold:
"2026-03-28":
value: 130928000000
filing_date: 2026-05-01
note: "vintage chosen via fallback; most_recent_wins (spread=132.13%)"
CostOfGoodsAndServicesSold__dim__ProductMember @ 2018-03-31
spread · failed: most_recent_wins (spread=149.03%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CostOfGoodsAndServicesSold · 2018-03-31
overrides:
CostOfGoodsAndServicesSold__dim__ProductMember:
"2018-03-31":
value: 84511000000
filing_date: 2019-05-01
note: "vintage chosen via fallback; most_recent_wins (spread=149.03%)"
CostOfGoodsAndServicesSold__dim__ProductMember @ 2018-06-30
spread · failed: most_recent_wins (spread=291.86%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CostOfGoodsAndServicesSold · 2018-06-30
overrides:
CostOfGoodsAndServicesSold__dim__ProductMember:
"2018-06-30":
value: 113467000000
filing_date: 2019-07-31
note: "vintage chosen via fallback; most_recent_wins (spread=291.86%)"
CostOfGoodsAndServicesSold__dim__ProductMember @ 2025-06-28
spread · failed: most_recent_wins (spread=237.22%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CostOfGoodsAndServicesSold · 2025-06-28
overrides:
CostOfGoodsAndServicesSold__dim__ProductMember:
"2025-06-28":
value: 147097000000
filing_date: 2025-08-01
note: "vintage chosen via fallback; most_recent_wins (spread=237.22%)"
CostOfGoodsAndServicesSold__dim__ProductMember @ 2026-03-28
spread · failed: most_recent_wins (spread=137.21%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CostOfGoodsAndServicesSold · 2026-03-28
overrides:
CostOfGoodsAndServicesSold__dim__ProductMember:
"2026-03-28":
value: 116657000000
filing_date: 2026-05-01
note: "vintage chosen via fallback; most_recent_wins (spread=137.21%)"
CostOfGoodsAndServicesSold__dim__ServiceMember @ 2018-03-31
spread · failed: most_recent_wins (spread=100.71%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CostOfGoodsAndServicesSold · 2018-03-31
overrides:
CostOfGoodsAndServicesSold__dim__ServiceMember:
"2018-03-31":
value: 7585000000
filing_date: 2019-05-01
note: "vintage chosen via fallback; most_recent_wins (spread=100.71%)"
CostOfGoodsAndServicesSold__dim__ServiceMember @ 2018-06-30
spread · failed: most_recent_wins (spread=195.09%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CostOfGoodsAndServicesSold · 2018-06-30
overrides:
CostOfGoodsAndServicesSold__dim__ServiceMember:
"2018-06-30":
value: 11473000000
filing_date: 2019-07-31
note: "vintage chosen via fallback; most_recent_wins (spread=195.09%)"
CostOfGoodsAndServicesSold__dim__ServiceMember @ 2025-06-28
spread · failed: most_recent_wins (spread=194.68%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CostOfGoodsAndServicesSold · 2025-06-28
overrides:
CostOfGoodsAndServicesSold__dim__ServiceMember:
"2025-06-28":
value: 19738000000
filing_date: 2025-08-01
note: "vintage chosen via fallback; most_recent_wins (spread=194.68%)"
CostOfGoodsAndServicesSold__dim__ServiceMember @ 2026-03-28
spread · failed: most_recent_wins (spread=97.55%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/CostOfGoodsAndServicesSold · 2026-03-28
overrides:
CostOfGoodsAndServicesSold__dim__ServiceMember:
"2026-03-28":
value: 14271000000
filing_date: 2026-05-01
note: "vintage chosen via fallback; most_recent_wins (spread=97.55%)"
EarningsPerShareDiluted @ 2018-03-31
spread 58.82% · failed: most_recent_wins (spread=0.00%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/EarningsPerShareDiluted · 2018-03-31
overrides:
EarningsPerShareDiluted:
"2018-03-31":
value: 2.73
filing_date: 2019-10-31
note: "vintage chosen via fallback; most_recent_wins (spread=0.00%)"
EarningsPerShareDiluted @ 2018-06-30
spread 73.97% · failed: most_recent_wins (spread=0.00%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/EarningsPerShareDiluted · 2018-06-30
overrides:
EarningsPerShareDiluted:
"2018-06-30":
value: 2.34
filing_date: 2019-10-31
note: "vintage chosen via fallback; most_recent_wins (spread=0.00%)"
EarningsPerShareDiluted @ 2018-09-29
spread 2.35% · failed: most_recent_wins (spread=74.98%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/EarningsPerShareDiluted · 2018-09-29
overrides:
EarningsPerShareDiluted:
"2018-09-29":
value: 2.98
filing_date: 2020-10-30
note: "vintage chosen via fallback; most_recent_wins (spread=74.98%)"
EarningsPerShareDiluted @ 2018-12-29
spread 74.88% · failed: most_recent_wins (spread=74.88%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/EarningsPerShareDiluted · 2018-12-29
overrides:
EarningsPerShareDiluted:
"2018-12-29":
value: 1.05
filing_date: 2020-10-30
note: "vintage chosen via fallback; most_recent_wins (spread=74.88%)"
EarningsPerShareDiluted @ 2019-03-30
spread 90.84% · failed: most_recent_wins (spread=75.20%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/EarningsPerShareDiluted · 2019-03-30
overrides:
EarningsPerShareDiluted:
"2019-03-30":
value: 0.61
filing_date: 2020-10-30
note: "vintage chosen via fallback; most_recent_wins (spread=75.20%)"
EarningsPerShareDiluted @ 2019-06-29
spread 93.79% · failed: most_recent_wins (spread=74.77%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/EarningsPerShareDiluted · 2019-06-29
overrides:
EarningsPerShareDiluted:
"2019-06-29":
value: 0.55
filing_date: 2020-10-30
note: "vintage chosen via fallback; most_recent_wins (spread=74.77%)"
EarningsPerShareDiluted @ 2019-09-28
spread 74.92% · failed: most_recent_wins (spread=75.02%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/EarningsPerShareDiluted · 2019-09-28
overrides:
EarningsPerShareDiluted:
"2019-09-28":
value: 2.97
filing_date: 2021-10-29
note: "vintage chosen via fallback; most_recent_wins (spread=75.02%)"
EarningsPerShareDiluted @ 2019-12-28
spread 74.95% · failed: most_recent_wins (spread=74.95%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/EarningsPerShareDiluted · 2019-12-28
overrides:
EarningsPerShareDiluted:
"2019-12-28":
value: 1.25
filing_date: 2021-01-28
note: "vintage chosen via fallback; most_recent_wins (spread=74.95%)"
EarningsPerShareDiluted @ 2020-03-28
spread 91.53% · failed: most_recent_wins (spread=25.88%); unit_rescale (no factor of 1000 detected); sign_flip (no negation detected)
# company_memory/EarningsPerShareDiluted · 2020-03-28
overrides:
EarningsPerShareDiluted:
"2020-03-28":
value: 1.89
filing_date: 2021-04-29
note: "vintage chosen via fallback; most_recent_wins (spread=25.88%)"
+111 more — showing the first 24 of 135.
Footnote appendix (203)
Concepts that resolve to no rendered statement line (APIC adjustments, antidilutive shares, dimensional facts). Collapsed by default — these do not block the gate.
Show 203 appendix flags
Normalized line-item map
Soul (V1 §9): the app surfaces judgment, it never performs it silently. AI proposes; deterministic code detects; a human approves; git remembers. The accumulating rules + overrides + tag-map ledger IS the product — every flag carries its why, every row its provenance.