HomeLibraryServicesCase studiesBlogAbout
consultance.ai
Book a discovery call →

Services

  • AI consulting
  • AI implementation
  • AI agents
  • Workflow automation
  • RAG systems
  • Voice AI
  • Custom AI development
  • All services

Library

  • AI build library
  • Finance AI automation
  • AiToEarn content agent
  • Fincept Terminal
  • ERPNext
  • SEO + GEO Claude skill
  • Claude for Legal
  • Free Claude Code proxy

Resources

  • Case studies
  • Blog
  • Industries
  • Locations
  • Guide: AI for property management
  • Guide: AI for marketing agencies
  • Guide: AI agents vs Zapier
  • AI glossary
  • vs traditional consulting

Company

  • About
  • Book a call
  • Contact
  • Privacy
  • Terms

© 2026 consultance.ai · AI, implemented.

audit → build → deploy

← Libraryconsultance.ai
Book a build call
Finance and data

Blind Earnings Direction Checklist in Claude

For analysts, CFOs and family office investors: a blind checklist over three years of statements that calls next year's EPS direction with its working and ties every figure to the SEC filing.

Free — runs in your own ClaudeMedium setup · 4 steps12 ready-to-run prompts
Set it up free — takes 3 minutes ↓Or have us wire it in →
watch first

How to run these prompts

A short walkthrough of the exact mechanic: where the prompts go, what to answer when the first one asks, and what a good first output looks like. Same for every pack in the library.

Step 1 · setup
Three minutes, four steps, nothing to install by hand

Claude sets it up for you. You just paste.

Never used Claude? It is free and takes 30 seconds to open. Copy the instruction below, paste it into Claude, and it reads this page and walks you through everything, one question at a time.

  1. 1

    Tell Claude how to talk to you

    One tap. It changes how much Claude explains, and how slowly it goes. You can change it any time.

  2. 2

    Copy your setup instruction

    A short instruction plus a link to this page lands on your clipboard. First copy asks for your email once. That unlocks every button across the whole library.

  3. 3

    Open Claude in a new tab

    Free account, no card, 30 seconds. This tab stays open so you can come back.

    Open claude.ai ↗
  4. 4

    Paste, send, and answer one question

    Claude reads this page, asks one question about your work, then guides you step by step until your first output is right. If anything looks wrong, tell Claude what you see, and it fixes it with you.

▸Prefer the full prompt instead of the link? (optional)
Click to copy
I am comfortable copy-pasting and following instructions, but I am not a developer.
There is nothing to install for this one and no commands to type: it all happens inside Claude. If any instruction below implies a Terminal, translate it into the equivalent click path for me instead.
- Plain English. Define jargon the first time it appears.
- One step at a time, then wait for me to confirm before the next one.
- Tell me what success looks like at each step, and diagnose any error before moving on.

Follow the instructions below with those rules applied.

If you can browse the web, open and read this page in full first, it has the complete guide and every prompt you will run (the vault is under the-vault anchor): https://consultance.ai/library/earnings-direction-read#the-vault . If you cannot open links, tell me and I will paste the page in, do not guess the prompts.

I want to set up the Earnings Direction Read so my own Claude reads a company's statements blind and calls whether next year's reported earnings per share go up or down, with the reasons, and ties every number back to the filing. Walk me through it one step at a time, like the calm setup desk at consultance.ai. Wait for me to confirm each step before the next. Define every term the first time you use it.

This is a HYBRID setup. The chat path is NOT a Terminal install: it is a private Claude Project, nothing to install. The Claude Code path is a short command line install for pulling filings from SEC EDGAR (the free US filing database). Ask which one I need and never make me guess.

## Path A: one company, in the Claude app (no install)
1. **Model.** Select Claude Opus 5.5 in the model picker. Keep it for every prompt.
2. **A private Project.** Open Projects and start a new project. A Project is a private workspace with its own files that other chats cannot see. Name it for the company and the year.
3. **Load the statements.** Under Project knowledge, upload the annual report or the three statements (income statement, balance sheet, cash flow statement) for the last three years. More than one company, or a folder of files, means Path B instead.
4. **Privacy.** Your statements go only to your own Claude account, never to consultance.ai. Before confidential accounts, use a Team or Enterprise plan, or turn Model Improvement off in your Privacy Settings.
5. **Run the vault.** Paste prompt 01, answer its questions, then run prompt 02 (the sample check) and match it line by line before your own statements. Then run 04, 05, 06 and 07.

## Path B: EDGAR filings or several companies, in Claude Code
Claude Code is Anthropic's coding assistant that runs in your Terminal and can read and write files on your machine.
1. **Python check.** In Terminal, run `python3 --version` (Windows: `python --version`). You need 3.10 or newer. On a Mac showing 3.9, install Python from python.org and use the versioned command (for example python3.12).
2. **Open Claude Code in an empty folder** for this project, select Claude Opus 5.5, and paste prompt 03. It writes pull.py, anonymize.py and a test, installs edgartools (a free library that reads SEC filings) into a project environment, and runs the test.
3. **Success looks like** the test line showing every test passed, and a source.json that names the filing you meant. SEC asks every request to carry your name and email: prompt 03 reads it from EDGAR_IDENTITY.
4. **Common error:** a 403 from SEC means EDGAR_IDENTITY is missing or not a real name and email. Set it and re-run. Anything else: run prompt 11.

## First session drill (both paths)
- Input: one company you know well, with its last three years of statements.
- First prompt: 02, the sample check. It must match before you trust anything else.
- Then 04 (hide the name), 05 (changes and ratios), 06 (one off items), 07 (the call).
- Good output: a call block with DIRECTION, MAGNITUDE, CONFIDENCE, two drivers with their arithmetic, and a flip line.
- Review check before you trust it: re-derive two ratios by hand, and check year t diluted EPS against the filed statement. On famous companies the model may recognise the company from its numbers; prompt 04 says so, and that read is not blind.
- Do NOT tell me a step is "not possible" because a button name differs slightly. Tell me what you see and we find the nearest match.

Bonus paths, never required: the edgartools repository (github.com/dgunning/edgartools) and the reading list in prompt 12.

First message: ask me one question only: "Is this one company whose statements you can upload (Path A), or US-listed companies you want pulled from SEC EDGAR, or several companies (Path B)?" Then start step 1 of that path.
Step 2 · run it on your data

Step 1 set it up. These 12 prompts do the work.

the vault

The 12 prompts

Grab the whole pack as one file, or tap any prompt below to copy it on its own. Placeholders that look like {{THIS}} get swapped for your own numbers — and if you ran Step 1, Claude fills them in for you.

One .md file · all 12 prompts, numbered, in order · nothing left out.
Click to copy
<role>You are an earnings analyst who has read thousands of income statements and knows which
changes repeat and which drop out. You work for {{ANALYST}}. You are neutral: you call the
direction the numbers point to, say how sure you are, and say what would flip it. You do not
hunt for red flags and you do not talk a number up.</role>

<surface>
Route the human before any work. State this and wait:
- One company, statements they can upload or paste (a PDF of the annual report, an Excel
  export, a private company's accounts): Claude app, a private Project. Chat is correct here.
- A US-listed company whose 10-K is on SEC EDGAR, or several companies: Claude Code, prompt 03.
  It pulls the statements itself with edgartools and records the accession number.
- Statements that cannot be uploaded anywhere: Claude Code locally, or their own Team or
  Enterprise workspace.
Privacy: materials go to their own Claude account, never to us. Before confidential material,
use a Team or Enterprise plan, or turn Model Improvement off in your Privacy Settings.
Model: Claude Opus 5.5 for every prompt, selected in the model picker. Never switch mid prompt.

Escalate instead of degrading. STOP and re-route when:
- They paste a file path, a folder listing, or a ticker list and ask you to fetch filings: that
  is a Claude Code job. Say so, name prompt 03, stop.
- A statement arrives truncated, or a year column is missing: name the statement and year and
  refuse to call on what you could not read. Never fill a year from memory.
- They ask for more than three companies by hand in chat: name Claude Code, stop.
- A figure is needed from a statement they have not given: ask once, name it, then stop.
Advise, do not apologise, do not continue anyway.
</surface>

<task>
Onboarding, one question at a time:
1. MODE: A. Conversation (name the company and the one question you have about its earnings;
   I run only what bears on it) B. The full read, prompts 03 to 10.
2. WHAT: A. a US-listed company with 10-K filings on EDGAR B. a private or foreign company's
   own statements that you hold C. a list of companies to read the same way. Quarterly
   calls, banks and insurers are not covered by this pack: their statements need a different
   read. Say so if that is the job.
3. DATA SOURCE: A. upload statements to this Project B. paste them C. Claude Code pulling from
   EDGAR, prompt 03 D. a mix.
4. YOUR VIEW, sealed: in one line, which way you think earnings go and why. I store it as
   {{YOUR_VIEW}} and do not look at it until prompt 09, so it cannot steer the blind read.
   Skipping it is fine; it becomes OPEN.
5. Tokens: {{ANALYST}}, {{SIGNER}} (the named human who owns any decision), {{PROJECT_DIR}}
   and {{EDGAR_ID}} (your name and email for SEC requests), Claude Code only.
</task>

<rules>
EVIDENCE TIERS. TIER 1: the filed statement (10-K face statements, audited accounts).
TIER 2: a tool's parse of TIER 1 (an XBRL fact pulled by edgartools, a table read from the
PDF) or a figure computed from TIER 1 with the working shown. TIER 3: press, consensus,
guidance, anything recalled from memory. TIER 3 can raise a question, never a number.
THE TARGET. Reported diluted EPS, year t+1 versus year t. If diluted EPS is missing, call on
net income attributable to the parent and say so on the call line.
MATERIALITY. Every finding gets one tag: CHANGES THE DECISION (it moves the call or its
confidence), WORTH A QUESTION (only if the answer could flip the call or move confidence by
0.1 or more), or one untagged "Checked, normal" line. A finding the context or the human
explains is closed and does not return later in the run.
LOOKS WRONG, IS NORMAL (test every finding against this first):
- Negative shareholders' equity after years of debt funded buybacks.
- A tax rate that differs from the statutory rate in all three years (a steady mix of
  jurisdictions); only a single year swing is expected to revert.
- A one year tax rate far from the statutory rate, next to a disclosed impairment or discrete
  item.
- Revenue up about 2 percent in a 53 week year.
- A large impairment in one year (abnormal only if it repeats: then it is a cost).
- Net income growth far above revenue growth after a prior year one off charge.
- A fiscal year ending in May, June or August.
- Interest expense up with debt up in an acquisition year.
- Share count falling 2 to 3 percent a year under a buyback.
- Inventory up faster than sales for one year (abnormal two years running).
- Operating cash flow below net income for one year of growth.
- Cautionary outlook language in the filing is boilerplate, unless it replaces confident
  language from the prior year or comes with a guidance cut.
- Management's own commitments (purchase obligations, capex plans, supply orders) are evidence
  of what management expects: weigh them, do not dismiss them.
PRECEDENCE. Arithmetic outranks the list: a charge of the same kind (impairment, restructuring,
loss on sale) in two or more of the three years is a recurring cost, whatever its label, and is
carried into year t+1 at its year t amount (not an average: a rising charge keeps rising more
often than it falls back). Only a charge in one year alone may drop out of year t+1. A figure that fails re-derivation blocks the tie-out.
BAD INPUT. Two figures disagree (face statement versus a note): use the face statement, list
both. Fewer than three years of income statement: call on two, confidence capped at 0.6.
A restated year: use the restated figure and say so.
HOW TO ADAPT THIS PACK. Add normal lines for your sector, one per pattern, with what makes it
abnormal. Change the target (operating income, EBITDA) only in this block, before any run.
Every later prompt works from the data source chosen here and ends: "Directional second
opinion only. {{SIGNER}} owns any decision."
</rules>
Click to copy
<role>The earnings analyst from prompt 01.</role>
<task>Run prompts 05, 06 and 07 on this sample and compare with the expected output below, line
by line. MATCH is judged on substance (direction, basis, tags, working), not wording.

SAMPLE, anonymized, USD millions.
INCOME STATEMENT | Year t | Year t-1 | Year t-2
Revenue | 5,400 | 5,250 | 5,000
Cost of sales | 3,350 | 3,200 | 3,000
Gross profit | 2,050 | 2,050 | 2,000
SG&A | 1,270 | 1,250 | 1,200
Impairment of intangible assets | 400 | 0 | 0
Operating income | 380 | 800 | 800
Interest expense | 110 | 105 | 100
Earnings before income taxes | 270 | 695 | 700
Income taxes | 92 | 153 | 154
Net income attributable to parent | 178 | 542 | 546
Weighted average shares, diluted (millions) | [not provided] | 196.0 | 200.0
BALANCE SHEET | Year t | Year t-1
Receivables | 620 | 600
Inventories | 740 | 700
Intangible assets | 1,600 | 2,000
Long-term debt | 2,450 | 2,400
(No cash flow statement provided.)

Expected output (columns: item, result, tag, working):
E1 Diluted EPS year t: STOP on this figure. Year t diluted shares are missing; name the item
   needed (weighted average diluted shares, year t). The call runs on net income attributable
   to the parent, labelled as such.
E2 Gross margin 37.96 / 39.05 / 40.00 percent (2,050/5,400; 2,050/5,250; 2,000/5,000),
   down about 1 point a year. WORTH A QUESTION: does the price and cost gap keep widening?
E3 Tax rate year t 34.1 percent (92/270) versus 22.0 percent: EXPLAINED BY CONTEXT, the
   impairment year.
E4 Inventory +5.7 percent versus revenue +2.9 percent, one year only: Checked, normal.
E5 One off list: impairment 400 in year t. Net income before it, at the prior 22 percent tax
   rate: (270 + 400) x 0.78 = 522.6, versus 542 in year t-1, down 3.6 percent.
E6 Cash backing: OPEN, no cash flow statement.
E7 Call: DIRECTION INCREASE on reported net income (the 400 drops out unless it repeats),
   MAGNITUDE LARGE, CONFIDENCE 0.6 to 0.8. Drivers: the impairment dropping out; the tax rate
   returning toward 22 percent. Underlying direction before one offs: small DECREASE (margin).
   Flip line: another impairment on the 1,600 of intangibles left.
</task>
<constraints>If any line of yours differs from the expected output, name the line and STOP.
Do not load real statements until every line matches. Raising E3 or E4 as a finding counts as
a mismatch: the read must close normal items, not flag them.</constraints>
Click to copy
<role>A careful engineer building a small tool for the analyst in prompt 01.</role>
<task>Check the Python version first: run `python3 --version` (Windows: `python --version`).
edgartools needs 3.10 or newer. On 3.9, stop and install Python from python.org, then use the
versioned command (for example python3.12).
Then create this tree at {{PROJECT_DIR}}. Write every file. Do not summarise the plan back.
  pull.py          pulls one 10-K for a ticker (N = 0 latest, 1 the one before) with edgartools,
                   writes out/<TICKER>-<N>/raw_income.csv, raw_balance.csv, raw_cashflow.csv
                   (if it parses) and source.json (ticker, company name, form, accession,
                   filed date, period). Reads the SEC identity from env EDGAR_IDENTITY.
  anonymize.py     writes out/<TICKER>-<N>/input.txt: face statement rows only (drop rows
                   where dimension is True or abstract is True), USD millions, columns renamed
                   Year t, Year t-1, Year t-2. EPS and share rows labelled by XBRL concept
                   (us-gaap_EarningsPerShareDiluted and friends), not by the filer's words.
                   Remove calendar years and every word of the company name from labels.
                   Number repeated labels inside one statement ("Other", "Other [2]").
  tests/test_pull.py  fails if the diluted EPS row is missing, if year t is not the filing
                   period, or if a year, the ticker or the company name appears in input.txt.
Install into a project environment and write the test FIRST, then the code.
Mac or Linux:
  python3 -m venv .venv
  .venv/bin/python -m pip install edgartools==5.59.1 pytest==9.1.1
  EDGAR_IDENTITY="{{EDGAR_ID}}" .venv/bin/python pull.py {{TICKER}} 0
  .venv/bin/python anonymize.py out/{{TICKER}}-0
  .venv/bin/python -m pytest -q
Windows (PowerShell): the environment's Python sits in .venv\Scripts instead of .venv/bin.
  python -m venv .venv
  .venv\Scripts\python -m pip install edgartools==5.59.1 pytest==9.1.1
  $Env:EDGAR_IDENTITY = "{{EDGAR_ID}}"
  .venv\Scripts\python pull.py {{TICKER}} 0
  .venv\Scripts\python anonymize.py out/{{TICKER}}-0
  .venv\Scripts\python -m pytest -q
Later prompts write .venv/bin/python; on Windows read it as .venv\Scripts\python.
Print `ls -R out` when done.</task>
<trap>Filers word the same row differently. One labels diluted EPS "Net earnings attributable to
The [Company Name]" under a "Per Share, Assuming Dilution" header, which both hides the EPS row
and leaks the name. Another writes "Treasury shares at cost: 54.4 shares in 2025". Label by
XBRL concept and let the test find the leak; never eyeball it.</trap>
<stop>If the pull returns no 10-K, or the income statement has fewer than two year columns,
print the accession and stop. Do not fill a year from another filing by hand.</stop>
<output_format>The tree, the test result line, and source.json for each ticker.</output_format>
<review_gate>Pass condition: pytest shows every test passed and source.json names the filing you
meant. {{ANALYST}} checks year t diluted EPS against the filed 10-K once, by eye.</review_gate>
Click to copy
<role>The earnings analyst from prompt 01.</role>
<task>Chat path: from the uploaded statements, rebuild the input yourself in the same shape
as prompt 03's input.txt (face statement rows, Year t, t-1, t-2, USD millions, no names, no
dates, no segment or brand rows). Claude Code path: read out/{{TICKER}}-{{N}}/input.txt.
Then answer one question before any analysis: do you recognise this company? If you name it,
or are more than 50 percent sure, label the run CONTAMINATED and say why (scale, an unusual
line such as funds held for clients). A contaminated read still runs, and is reported as such.</task>
<trap>Removing the name is not enough. A segment row, a brand in a label, a date in a
footnote, or an unmistakable revenue scale tells the model who it is, and then it answers from
memory instead of the numbers.</trap>
<stop>If any calendar year or name remains in the input, stop and fix the input first.</stop>
<output_format>The anonymized input, then RECOGNISED: no / yes (name) and the reason.</output_format>
<review_gate>{{ANALYST}} confirms the input shows no name and no dates.</review_gate>
Click to copy
<role>The earnings analyst from prompt 01, reading blind.</role>
<task>From the anonymized input only:
0. Direction order, set before any ratio. Start from year t earnings with ONLY one year items
   removed (recurring charges stay in, at their year t amount). Move that base by the operating trend
   (revenue, gross margin, operating income before one year items). Compare the result with
   reported year t: that sets the direction. A tax rate swing alone never sets the direction;
   it moves confidence.
1. Big picture, three lines: what kind of business the statement shape suggests (margin
   structure, capital intensity, leverage), and where year t earnings sit against t-1 and t-2.
2. Notable changes: a table of line, t-2, t-1, t, change, for the lines that moved most.
3. Ratios with working: gross margin, operating margin, SG&A over revenue, effective tax rate,
   interest over debt, inventory and receivables growth versus revenue growth, operating cash
   flow over net income (if the cash flow statement is present), diluted share count change.
4. The economic story in plain words: what is driving earnings up or down.
Test every finding against the normal list in prompt 01 before you tag it.</task>
<trap>A large drop or loss in year t tends to partly reverse, and a large jump tends to fade.
Reading year t as the new run rate is the most common wrong call.</trap>
<stop>If a ratio needs a line the input does not have, mark it OPEN and name the line. Never
estimate it.</stop>
<output_format>Big picture, changes table, ratio table (ratio, t-2, t-1, t, working, tag),
three line story.</output_format>
<review_gate>{{ANALYST}} re-derives two ratios by hand before prompt 06.</review_gate>
Click to copy
<role>The earnings analyst from prompt 01, reading blind.</role>
<task>List every item that looks non-recurring: impairment, restructuring, gain or loss on
sale, litigation, debt extinguishment, discrete tax items. For each: year, amount, the input
line it sits on, and RECURRING or ONE OFF with the test applied (the same kind of charge in two or more of the
three years means RECURRING, carried into year t+1 at its year t amount). Then compute year t earnings before the one offs, taxed at the prior
year's effective rate, with the arithmetic shown, and compare with year t-1.</task>
<trap>A charge that shows up in two of three years tends to show up again. Adding it back and
calling a rebound is the most common wrong call on this method: impairments on a large
goodwill balance, and losses on a run of divestitures, repeat.</trap>
<stop>If an item's amount is not on the face of the statements, list it as a question with the
note you would need, and do not adjust for it.</stop>
<output_format>One off table, then: year t reported, year t before one offs, year t-1, the
working.</output_format>
<review_gate>{{ANALYST}} agrees the ONE OFF labels before prompt 07.</review_gate>
Click to copy
<role>The earnings analyst from prompt 01, reading blind.</role>
<task>Using prompts 05 and 06 only, call reported diluted EPS in year t+1 versus year t. Apply the
direction order from prompt 05: base without one year items, recurring charges carried at their
year t amount, moved by the operating trend; a tax swing alone moves confidence, not direction.
State the basis (reported diluted EPS, or net income if EPS is missing). Then:
DIRECTION: INCREASE or DECREASE
MAGNITUDE: SMALL (under 10 percent), MODERATE (10 to 25), LARGE (over 25)
CONFIDENCE: 0 to 1
DRIVERS: the two findings that decided it, each with its working.
FLIP LINE: the one thing that would reverse the call if it happened.
UNDERLYING: the direction before one offs, if it differs from the reported call.
NO CALL only when confidence is below 0.55 AND you can name the deciding line that is split.
"The future is uncertain" is not a reason.</task>
<trap>Direction is the reliable part of this method and size is not. A company called a small
rise can come in 30 percent up. Never let the MAGNITUDE line set a position size or a price.</trap>
<stop>If prompt 05 or 06 left a driver OPEN that would flip the call, give the call with
confidence capped at 0.6 and name the missing line.</stop>
<output_format>The call block exactly as above.</output_format>
<review_gate>Directional second opinion only. {{SIGNER}} owns any decision.</review_gate>
Click to copy
<role>The earnings analyst from prompt 01, now unblinded.</role>
<task>For every figure used in prompts 05 to 07, map it back to its source: the statement,
the line as the filer wrote it, the year, and (Claude Code path) the XBRL concept and the
accession number from source.json. Recompute each ratio from the tied figures. Verdicts: TIES
(within display rounding), MISMATCH, WRONG YEAR (equals another year's figure).
Claude Code path: add tieout.py that reads raw_*.csv and prints each figure with its concept
and accession, matching lines WITHIN each statement (the same label on the balance sheet is a
balance and on the cash flow is a change). Write its test first (year t diluted EPS equals the
EarningsPerShareDiluted fact, exit 0 only when every figure ties) and run
.venv/bin/python -m pytest -q.</task>
<trap>The same period appears in two filings: in its own 10-K and as a comparative in the next
one, sometimes restated. Match on the period, and say which filing you used.</trap>
<stop>Any MISMATCH or WRONG YEAR on a figure that feeds the call blocks the read. Name it and
stop. Only a named human re-pulling or correcting the figure unblocks it; do not reason it
away.</stop>
<output_format>Tie-out table: figure, value used, source line, year, concept, accession,
verdict.</output_format>
<review_gate>{{ANALYST}} signs the tie-out before prompt 09.</review_gate>
Click to copy
<role>The earnings analyst from prompt 01.</role>
<task>Now open {{YOUR_VIEW}}. Compare it with the blind call from prompt 07. Keep two things
apart: whether your view holds, and what the statements say. Where they disagree, list the
questions that would settle it (guidance, backlog, pricing, a known one off in year t+1) and
which document answers each. If your view was OPEN, skip to the questions the call raises.</task>
<trap>A view that disagrees with the read is not wrong because it disagrees. The statements
cannot see guidance, a new contract or a price rise already announced. Name what the view
knows that the statements cannot.</trap>
<stop>If the view rests on a figure with no source, mark it TIER 3 and ask for the document.</stop>
<output_format>View, blind call, AGREE or DISAGREE, the settling questions with their documents.</output_format>
<review_gate>Directional second opinion only. {{SIGNER}} owns any decision.</review_gate>
Click to copy
<role>The earnings analyst from prompt 01.</role>
<task>Write the one page read: company (unblinded), filing and accession, the call block, the
drivers with working, the one off table, the flip line, the tie-out verdict, and the open
questions. Then write one self-contained HTML file, earnings-read.html, with no network calls:
a header with the call and confidence, a bar chart of reported versus before-one-off earnings
for t-2, t-1 and t, the ratio table, and the open questions. Use the numbers from this run only.</task>
<trap>A clean page makes a 0.6 confidence call look certain. Print the confidence and the flip
line in the header, not in a footnote.</trap>
<stop>If prompt 08 did not clear, write the page with BLOCKED in the header and no call.</stop>
<output_format>The one page read in markdown, then the HTML file.</output_format>
<review_gate>Directional second opinion only. {{SIGNER}} owns any decision.</review_gate>
Click to copy
<role>The engineer from prompt 03.</role>
<task>Match the symptom, apply the fix, re-run the tests:
- "ModuleNotFoundError: edgar" or pip refuses: the environment is Python 3.9. Recreate .venv
  with python3.12 (or any 3.10+) from python.org.
- 403 or empty results from SEC: EDGAR_IDENTITY is unset or not a real name and email.
- The diluted EPS row is missing: the filer labels it by its own name. Select the row by the
  concept us-gaap_EarningsPerShareDiluted, not by label.
- A year or the company name leaks into input.txt: a label carries it ("shares in 2025",
  "Total [Name] stockholders' equity"). Strip text after a colon, remove four digit years and
  every word of the company name, then re-run pytest.
- tieout.py reports MISMATCH on "Inventories" or "Other": the same label sits on two
  statements, or twice in one statement. Key figures by statement and number repeats, as in
  prompt 03, then re-run anonymize.py and tieout.py.
- The cash flow statement fails to parse: continue on two statements and mark cash backing
  OPEN in prompt 05.
- Year t is not the period you expected: get_filings(form="10-K")[0] is the latest; use
  index 1 for the one before.</task>
<trap>A test that passes on one filer proves little. Run it on three companies from different
industries before trusting a batch.</trap>
<stop>If a fix is not in this list, print the full error and the accession and stop.</stop>
<output_format>Symptom, fix applied, test result.</output_format>
<review_gate>{{ANALYST}} re-runs pytest after every fix.</review_gate>
Click to copy
<role>The earnings analyst from prompt 01.</role>
<task>When a call needs more than the statements, go to these, for these reasons:
- The method: Kim, Muhn, Nikolaev (2024), Financial Statement Analysis with Large Language
  Models. https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4835311 (opens in a browser).
  Read the prompt design and the chain of thought steps, not only the headline.
- Sign of next year's earnings from ratios, before AI: Ou and Penman (1989).
  https://doi.org/10.1016/0165-4101(89)90017-7
- Nine signals from the statements: Piotroski (2000). https://doi.org/10.2307/2672906
- Why big changes reverse: Fama and French (2000), Forecasting Profitability and Earnings.
  https://doi.org/10.1086/209638
- Accruals and persistence: Sloan (1996). https://doi.org/10.2308/tar-9608042309 (opens in a
  browser)
- Inventory, receivables and margin signals: Lev and Thiagarajan (1993).
  https://doi.org/10.2307/2491270
- AI research reports and how to grade them: FinRpt (2025) https://arxiv.org/abs/2511.07322 ;
  FinRobot (2024) https://arxiv.org/abs/2405.14767
- Where models still struggle (forecasting and reasoning): FinBen (2024)
  https://arxiv.org/abs/2402.12659
- Open finance models: FinGPT (2023) https://arxiv.org/abs/2306.06031 ; PIXIU (2023)
  https://arxiv.org/abs/2306.05443 ; LLMs Meet Finance (2025) https://arxiv.org/abs/2504.13125
- The filing itself: the 10-K on SEC EDGAR, Item 7 (MD&A) for what management says about
  year t+1, and the notes for each one off in prompt 06.
- Our own runs, for reference (reported diluted EPS, statements from the prior 10-K only,
  outcome filed after the model's training cutoff). An earlier, simpler prompt, before this
  pack, with no check on whether the model knew the company: Procter & Gamble called up, 6.51
  to 6.62, right; Cisco called a small rise, 2.55 to 3.33 (+31 percent), direction right, size
  wrong. With this pack's final rules: Campbell's called down twice, 2.01 to 1.31, right. ADP called
  up, 9.98 to 10.94, right. Parker Hannifin once NO CALL (tax rate split; underlying up) and
  once called up, actual 27.12 to 28.48. Clorox called up, 6.52 to 4.81, wrong; the run had asked whether year end
  sales were pulled forward (receivables up 18 percent on flat revenue). The model recognised
  all four companies from their numbers, so none of those reads was truly blind.
- The tool: edgartools, https://github.com/dgunning/edgartools
- Bonus only: FinRobot, https://github.com/AI4Finance-Foundation/FinRobot . Its report agents
  need paid FMP and OpenAI keys, and its requirements installed on Python 3.10 in our test.
  Nothing in this pack depends on it.</task>
<trap>A paper's headline result is an average over thousands of companies. It says nothing
about the one company in front of you. Use the papers for the method, not as evidence for a
single call.</trap>
<stop>If a link does not open, say so; do not summarise a paper you could not read.</stop>
<output_format>The source that answers the open question, and what to look for in it.</output_format>
<review_gate>{{ANALYST}} reads the source before it changes a call.</review_gate>

Got the prompts. Want them wired into your actual stack? We map that on a free AI audit.

Book the free audit

Rent it forever, or own it once.

For analysts, CFOs and family office investors: a blind checklist over three years of statements that calls next year's EPS direction with its working and ties every figure to the SEC filing.

Path A · free

You just did it

The setup rail and every prompt above are free and stay free. The cost is your time, and the risk of wiring it wrong on live data.

Back to the prompts ↑
Path B · done with you

We wire it into your business

We would wire the read into your own workspace: the EDGAR pull and tie-out on a schedule for your watchlist, a scorekeeping log that grades every call once results land, and the read added to your pre-meeting pack. Done with you, then handed over so you own it.

Book a build call →
data safety

Before you use live numbers

  • • Run last quarter's numbers first. Live data is not a test bed.
  • • Nothing here uploads to us. It runs in your own Claude account, on your own machine.
  • • A named human reviews and signs every output before it reaches a board, lender, or client.
  • • Mask account numbers and names to the minimum the task needs.
the fine print

Straight answers on ownership

Prompt set authored by consultance.ai. The method follows Kim, Muhn and Nikolaev (2024), Financial Statement Analysis with Large Language Models; no affiliation implied. edgartools is an open source library by its authors. A directional second opinion, not a forecast and not investment advice. Your statements go only to your own Claude account.

Want this running in your business, not just your laptop? We build it and hand you the keys.

Book a build callBack to the library

Want this wired into your stack instead of running it yourself? That is our AI deal desk and finance automation service.

the newsletter

AI news worth opening.

The AI tools, launches, and shifts that actually matter, in plain English. New library drops the moment they land.

100% freeNo paywall, everUnsubscribe anytime

More like this

Other builds worth a weekend

All repos →
Finance and data

Free Portfolio Quant Research Desk

For family offices and serious individual investors: backtest an idea on your own portfolio history with free market data, a scheduled tax loss harvest, and a deflated Sharpe model risk gate, in your own Claude.

Setup guide →
Finance and data

Private Equity Deal Sourcing Playbook

For lower and mid market private equity origination teams: turn one mandate into a ranked, owner verified proprietary deal flow pipeline. Six Claude agents with Exa and Scrapling replace a rented deal sourcing subscription.

Setup guide →
Finance and data

Free Jira Alternative for Deal Teams

For PE deal teams and IC members still tracking a live process on a sprint board: a self hosted deal tracker your Claude can write to, plus 10 prompts that move a workstream only when the document actually lands.

Setup guide →
Get the free kitBook a call

Forward this to whoever owns the workflow.

The person drowning in this every week is the one who'll actually want it.

Forward by email
in one line

What is Blind Earnings Direction Checklist in Claude?

Blind Earnings Direction Checklist in Claude is a finance and data build in the consultance.ai AI Build Library. For analysts, CFOs and family office investors: a blind checklist over three years of statements that calls next year's EPS direction with its working and ties every figure to the SEC filing. It fits Equity analysts, CFOs, family office and RIA investment teams who want a second read on where a company's earnings are heading before a meeting or a decision. Setup difficulty is Medium, with 4 plain-English steps.

What does Blind Earnings Direction Checklist in Claude do?

For analysts, CFOs and family office investors: a blind checklist over three years of statements that calls next year's EPS direction with its working and ties every figure to the SEC filing.

Who is Blind Earnings Direction Checklist in Claude for?

It fits Equity analysts, CFOs, family office and RIA investment teams who want a second read on where a company's earnings are heading before a meeting or a decision.

How hard is Blind Earnings Direction Checklist in Claude to set up?

Medium to set up — one guided setup instruction covering 4 plain-English steps, plus 12 ready-to-run prompts on the resource page.

How would consultance.ai build this out?

We would wire the read into your own workspace: the EDGAR pull and tie-out on a schedule for your watchlist, a scorekeeping log that grades every call once results land, and the read added to your pre-meeting pack. Done with you, then handed over so you own it.

What are the licensing terms?

Prompt set authored by consultance.ai. The method follows Kim, Muhn and Nikolaev (2024), Financial Statement Analysis with Large Language Models; no affiliation implied. edgartools is an open source library by its authors. A directional second opinion, not a forecast and not investment advice. Your statements go only to your own Claude account.

Want this built into your workflow?

Blind Earnings Direction Checklist in Claude is the starting point. On a free AI audit we map where it fits your stack and what consultance.ai would build around it.

This build comes from our AI consulting and AI implementation practice — see the full AI in finance guide and how we work with CFO teams.

Book your free AI audit