MemberPress AI Academy memberpress.ai
← Prompt Engineering 101

Lesson 15 of 19

Advanced · Production-Grade Prompts

Industry use case - finance

Project25 min

Project: Build an earnings call analysis prompt

You are an analyst who monitors five companies for a portfolio team. Every quarter, each company holds an earnings call. You need to extract the same set of data from every transcript: revenue, guidance, headcount changes, and product announcements. You also need a sentiment reading on each topic — is the executive team bullish, neutral, or bearish about each area?

The deliverable is a reusable prompt template you can apply to any transcript and get consistent, comparable output.

Why this is hard

Earnings call transcripts are long, unstructured, and full of hedged language. ("We remain cautiously optimistic about our trajectory in the second half, contingent on macroeconomic normalization...") The sentiment in that sentence is not bullish or bearish — it is a hedge. Your prompt has to handle hedged language, not just classify it as one of three labels.

Building the prompt

Step 1: Define the output schema.

{
  "company": "string",
  "quarter": "string",
  "metrics": {
    "revenue": {"value": "string", "vs_guidance": "string", "sentiment": "bullish|neutral|bearish|hedged"},
    "guidance_next_quarter": {"value": "string", "sentiment": "bullish|neutral|bearish|hedged"},
    "headcount": {"change": "string", "sentiment": "bullish|neutral|bearish|hedged"},
    "product_announcements": [{"name": "string", "description": "string", "sentiment": "bullish|neutral|bearish|hedged"}]
  },
  "risk_flags": ["string"],
  "overall_sentiment": "bullish|neutral|bearish|hedged"
}

Step 2: Write the extraction instruction.

"Extract the following fields from the earnings call transcript. For each field, classify the executive team's sentiment as bullish (confident, raised guidance, positive framing), bearish (cautious, missed targets, defensive language), neutral (on track, no change), or hedged (qualified language, contingent on external factors, both positive and negative framing)."

Step 3: Add the grounding instruction.

"Base your extraction only on statements made in the transcript. If a field is not mentioned, return null for that field. Do not infer or estimate."

Step 4: Add the delimiter.

Wrap the transcript in <transcript> tags.

Testing the prompt

Run the prompt on a real public transcript (any large public company's recent earnings call is available on their investor relations page). Check: Does the revenue figure match the announced number? Does the sentiment on guidance match what you heard when you read it? Are the risk flags real risks mentioned in the transcript or inferences?

If you get stuck

If the sentiment classifications are inconsistent between runs, add examples of each sentiment type with quotes from the transcript format: 'Revenue up 12% year over year' is bullish. 'We expect revenue growth to normalize in the second half' is hedged.

If the JSON is malformed, check that the transcript contains characters that break JSON strings (quotes inside strings, for example). Add: "Escape any quotation marks inside string values."

Deliverable

A reusable prompt template with the schema embedded. Test it on one real transcript and include the extracted JSON in your deliverable. The JSON should be valid (paste it into a validator) and the sentiment classifications should match what you observe when you read the transcript.

Try these prompts

  • Extract key metrics and sentiment from a Q3 earnings call transcript.
  • Build a prompt that converts a balance sheet into a JSON summary.
  • Write a prompt that flags risk factors in an investment memo.