PROJECT / AUTOMATION
Earnings Call Transcript Automation
TRANSCRIPT → STRUCTURED SUMMARY
Reading earnings-call transcripts and rewriting them for posts was slow, manual work. Built a pipeline that finds new calls, cleans the text, and produces a structured summary - with optional posting to X.
- Project type
- Research / content pipeline
- Role
- Automation developer
- Systems
- Python · OpenAI · MarketBeat
- Status
- Internal system
THE STARTING POINT
Each call meant hours of reading before a short post.
During earnings season, useful transcripts show up faster than they can be read. Someone had to find the call, pull the text, extract the points that matter, and rewrite them for distribution. That does not scale across the number of companies worth covering.
THE FLOW
New transcript in. Structured brief out.
A Python monitor watches MarketBeat for transcripts that have not been seen yet, parses the conversation, stores a cleaned copy, and sends that text to GPT-4 for a fixed summary shape. Posting to X is a separate, optional step - not the default.
- 01MarketBeatPublic earnings-call transcript listings
- 02ParseSpeaker-message pairs, including nested Q&A
- 03CleanFiller removed; raw and optimized copies stored
- 04GPT-4Sentiment, guidance, summary, pros and cons
- 05Optional postX, if that module is turned on
WHAT I BUILT
Two modules. One does not require the other.
The monitor can run on its own: discover, parse, clean, and store. The summarizer reads an optimized transcript and returns a structured brief. Twitter/X posting is wired, but it is optional - manual, one file, or a batch.
PYTHON · OPENAI GPT-4 · TWITTER/X API
RETRIEVE
- Scrape MarketBeat listings for new transcripts
- Parse HTML into speaker and message pairs
PROCESS
- Strip greetings and filler; keep meaning
- Store raw and optimized JSON for reuse
DELIVER
- GPT-4 returns a fixed brief shape
- Optional post to X, with rate-limit handling
THE LOGIC
Do not summarize the same call twice. Do not dump the raw transcript into the model.
Listings are checked on a loop during market hours. A transcript is processed only if it has not already been seen. Nested Q&A on MarketBeat needed its own parse. Cleaning is a tradeoff - too aggressive and the brief suffers; too light and token cost stays high.
- 01
Detect
Scrape MarketBeat listings and skip transcripts already seen.
- 02
Parse
Turn HTML into speaker-message pairs, including nested operator Q&A.
- 03
Optimize
Clean filler and estimate token cost before calling GPT-4.
- 04
Summarize
GPT-4 returns sentiment, one-sentence guidance, a short summary, and key pros and cons.
- 05
Publish
Optionally post to X. Handle rate limits and auth if a batch is running.
WHERE IT LANDED
A repeatable path from a public transcript to a structured brief - stored locally, summarized in a consistent shape, and only posted when that step is turned on. It is a research workflow, not an investing product.
I designed and built the pipeline. It runs as an internal system.
MORE WORK
01AUTOMATION
DocuSign Automation
Contracts and forms were still created, sent, and filed by hand. Built a DocuSign pipeline so the standard path runs itself and only exceptions need a person.
VIEW PROJECT →02PRODUCT
Freelance CRM
A simple CRM I built for my own consulting work - clients, leads, opportunities, tasks, time, and invoices in one place, without fighting Salesforce-scale software.
VIEW PROJECT →
Dupey Consulting