I Build the Software
I Invest With

A fundamental investor who engineers his own research stack.

Designed, built, deployed, and now operating 30+ production research tools, solo. A decade in public markets across healthcare, SMID equities, technology, and multi-asset investing.

30+
Production research tools
~1,350
Companies in the coverage universe
19,000+
Earnings calls indexed
1,159
Management commitments scored
Multi-provider failover GitHub Actions · Task Scheduler SQLite · SEC EDGAR Watchdog: never fail silently
01

Research Tools

A selection from 30+ automated research tools I’ve designed, built, and run, spanning the fundamental research process: idea generation, due diligence, monitoring, macro, portfolio management, and judgment development.

Idea Generation

CORPORATE STRATEGY SHIFT ALERT

Summary

Flags when a company changes what it is — a reversal of stated strategy, an acquisition that changes the business mix, or a divestiture of roughly 15% or more of revenue — across a ~1,350-name global coverage universe spanning every healthcare subsector, from biotech to hospitals to tools.

Problem

In a universe that size, the most consequential announcements are often the quietest: a CEO walking back a stated strategy on a call, or a deal that quietly changes what the company is. No price screen catches them, and no one can read every call.

Approach

Uses Claude to read earnings-call transcripts and SEC 8-K filings for the three kinds of pivot, size each one, and quote the company. Every quote is checked character-for-character against the exact text the model was shown, and a finding without its evidence is rejected rather than stored. It takes no directional view — a pivot can be a long or a short.

Why it matters

Turns “the company changed what it is” from something noticed by luck into a systematic input — at about two cents per document read.

Claude API SEC EDGAR Transcripts

FORENSIC TRIAGE

Summary

Screens the coverage universe for accounting quality concerns using sector-specific diagnostic frameworks built for healthcare services and medtech.

Problem

Accounting irregularities are often visible in filings before they affect the stock — but identifying them consistently across a large universe requires time and sector-specific knowledge that most workflows don’t support.

Approach

Built a systematic screen that evaluates every name across eight flag families — including accruals quality, revenue recognition, balance sheet trends, and disclosure patterns — using rubrics calibrated for healthcare services and medtech business models.

Why it matters

Surfaces names with elevated accounting risk before they become consensus concerns, supporting better short idea generation and reducing the risk of holding deteriorating longs.

Python edgartools Claude API

PATENT WATCH

Summary

Reads new patent and trademark filings from portfolio and core-coverage companies for clues to products that have not been announced yet.

Problem

Companies often describe future products in patent filings long before launch, but the filings are written in legal language, scattered across registries, and far too numerous to read by hand across a coverage list.

Approach

Deterministic collectors pull filings and match them to companies conservatively — an uncertain owner stays flagged for review rather than guessed. An AI research pass then reads the claims, explains what product each filing points to, and checks it against what the company has already announced, keeping disclosed fact and inference visibly separate. An early find: an IDEXX application combining wearable and video movement data with machine learning to flag mobility conditions in pets.

Why it matters

Turns a slow, under-read public record into an early read on product pipelines — with source gaps disclosed in every note rather than implied to be complete coverage.

Python SQLite AI agents

Other Modules for this Workflow

Biotech Triage

Triages 600+ US-listed biotechs on six dimensions of fundamental quality plus a sum-of-parts NPV margin of safety, so deep research goes where the risk/reward is best.

Smart-Money Consensus Tracker

Tracks the quarterly 13F and N-PORT filings of 57 elite investors and ranks ideas by conviction — how many of them are making the same move.

Activist Stake Alert

Flags new activist 13D stakes in covered companies every weekday morning, posted before the open.

Due Diligence

MANAGEMENT CREDIBILITY

Summary

Answers the question every investor asks of a management team — do they do what they say? — by extracting every commitment made on an earnings call and judging it against the company’s own later words.

Problem

Management credibility is one of the most important inputs in fundamental investing and one of the least measured. It usually lives in an analyst’s memory of a few memorable misses.

Approach

Uses Claude to read years of earnings calls, extract each promise that can be checked (guidance, targets, timelines), and rule on it using management’s own later statements. Every verdict links to its verbatim quote. As of September 2026: 33 companies graded A–F on 1,159 scored commitments.

Why it matters

Replaces an impression of management with a record — delivered, beat, partially delivered, or missed — that can be compared across companies and over time.

Claude API Python Transcripts

LEADERSHIP PROFILES

Summary

Builds a profile of each leader in the coverage universe — what motivates them, how they lead, and what that means for how the company allocates capital, takes risk, and executes — drawn from a citation-backed synthesis of everything they have said publicly.

Problem

Every CEO has a different personality, and an analyst’s read on it is usually built from a handful of earnings calls and meetings; the fuller public record — podcasts, conferences, media interviews — is scattered and impossible to track by hand.

Approach

Built a pipeline that discovers and ingests public executive interviews by company and by person, then maintains a durable people database anchored to SEC reporting-owner identities so an executive stays tracked across job changes — producing academic-style strategy and leadership profiles for ~360 current and former executives.

Why it matters

A structured, queryable read on each leader — evidence that sharpens the analyst’s own judgment on management rather than replacing it.

Claude API SQLite SEC EDGAR

THERAPEUTIC TRACKERS

Summary

A molecule-level record of drug programs, public and private, organized by therapeutic area — who owns each one, how far along it is, and how its efficacy data compares like-for-like. Obesity is the first live tracker: every program’s weight-loss data, plus how much the commercial GLP-1 class sells.

Problem

Trial results are routinely compared across different durations, populations, and statistical methods — the choice of estimand alone can move a headline figure by several points — and sell-side league tables rarely let you trace a number back to its source.

Approach

For each therapeutic area, an AI research pass gathers trial readouts, ownership, and development stage; code then gates every figure. A number is accepted only if it appears verbatim in its quoted source, and comparative figures such as placebo-adjusted results are derived only when trial, timepoint, and estimand match. Obesity alone shows why this needs a machine: as of October 2026 its tracker holds 91 molecules from 71 companies, 61 trials, and 1,090 individually sourced results, plus quarterly Lilly and Novo GLP-1 revenue — more than an analyst could keep current by hand.

Why it matters

Replaces an untraceable sell-side table with one where every efficacy number links to its source. Because the system is one molecule-centric database, each new therapeutic area is a new view, not a rebuild.

Claude Code Python Excel

Other Modules for this Workflow

Transcript Search Engine

Searches 19,000+ earnings calls by idea, not keyword — what companies are saying about the consumer, or what healthcare companies said about hospital capex — across every company at once, with each answer traced back to the actual comment.

Earnings Surprise Attribution

For every material beat or miss, finds what management said caused it, quoted from that quarter’s call, and tallies the reasons over time by company and sector.

Deep-Dive Source Collector

Gathering everything needed for a deep dive is laborious, so this automates it: one AI research notebook per company holding its full public record — SEC filings and exhibits, earnings transcripts, investor-day and conference transcripts, and IR decks and supplements.

Monitoring

EARNINGS SEASON AGENT

Summary

Runs earnings season end to end: it keeps the calendar and consensus setup for ~1,350 companies, then delivers an analyst-grade, primary-source review before the next market open for every name I own or am researching.

Problem

Earnings season compresses a quarter of information into a few weeks. Tracking dates, pulling consensus, reading the release, the 10-Q and the call, and judging whether guidance cleared the Street — for dozens of names at once — is where analysts fall behind, and where the market moves fastest.

Approach

A daily agent keeps a calendar of every confirmed report date, synced to Google Calendar and my task list. After each print it grades the result: EPS and revenue beat or miss, whether the new full-year guide clears pre-print Street consensus, and the stock’s reaction. By the next morning’s open, a review card has read the primary filings itself — guidance versus prior-year actuals, the GAAP-to-adjusted bridge, KPIs from the release and 10-Q, buybacks versus market cap, quoted takeaways from a 19,000-call transcript library, and a verdict against my written thesis.

Why it matters

The first read of every print is done before the market opens — so earnings-season hours go to judgment, not data gathering.

Python SEC EDGAR / XBRL GitHub Actions Slack API Google Calendar

COVERAGE MANAGER

Summary

Maintains a live ~1,350-name coverage universe that automatically detects new companies worth paying attention to — before they show up on anyone’s screen — so the analyst can decide how each one should be tracked.

Problem

A coverage list decays in two directions: existing names go stale, and new ones — IPOs, spin-offs, fresh listings — arrive without anyone noticing. Spin-offs are the blind spot: with no offering, they never appear on an IPO calendar.

Approach

Built a weekly pipeline that watches IPO registrations (including confidential filings before a listing), Form 10 spin-off registrations, and new exchange listings. Each new name is surfaced on Slack, where the analyst decides whether and how to track it, and a declined name is never re-proposed. Every name is then enriched from multiple fundamentals providers with automatic failover.

Why it matters

Automates the opportunity set itself. New companies arrive instead of having to be found, and the universe’s data is pushed downstream into every other monitoring workflow and scheduling tool — price alerts, earnings and event calendars, filing watches — so they all work from the same verified list.

Python Finnhub FMP

UNUSUAL STOCK MOVE MONITOR

Summary

Detects statistically abnormal moves across the ~1,350-company universe at the open, midday, and close — then explains each unusual mover in the portfolio with nine sourced answers side by side.

Problem

Significant price moves across a large universe happen constantly. Most analysts catch them for their core names but miss the periphery — and even when a move is caught, getting a fast, honest read on why, rather than one guess, is the hard part.

Approach

Scores every move against the stock’s own trailing return history and alerts three times per trading day with company, sector, and magnitude. For movers in the book, it asks six AI models in nine search configurations the same “why did this move” question and shows the answers with their sources — alongside a daily and weekly performance read across the portfolio.

Why it matters

Goes from “it moved” to “here is why, with sources” in minutes — a range of cited second opinions instead of a single guess, on every surprise in the universe and the book.

Python NumPy Multi-LLM Perplexity GitHub Actions

Other Modules for this Workflow

Catalyst Calendar

Tracks upcoming catalysts for the names I follow — picked up automatically and added by hand — covering hard catalysts like product launches and FDA decisions and soft ones like restructurings and management changes.

Macro

HEALTHCARE POLICY AND DATA MONITOR

Summary

A healthcare monitoring system that tracks policy proposals and the regularly published healthcare data on key subsectors, alongside the government rate-setting calendar that drives reimbursement.

Problem

Healthcare investing is uniquely exposed to policy and reimbursement decisions made in Washington — market-moving information that is real but almost impossible to monitor manually across subsectors.

Approach

Built three connected feeds on a healthcare-subsector spine: a running policy-news digest, an operating-conditions dashboard built from 39 industry data series, and a decade-plus calendar and history of CMS reimbursement rate cycles — all auto-published to interactive web pages.

Why it matters

Turns the most distinctive risk in healthcare — policy and reimbursement — into a variable that can be monitored like any other, rather than a source of surprises.

Python Plotly GitHub Pages

Other Modules for this Workflow

Structured Macro Data Monitor

The macro metrics that matter most to an investor, in one consistent daily format — built to show whether growth is accelerating or decelerating.

Healthcare Credit Distress Screen

A weekly screen of healthcare bonds and loans, plus a sector-wide read on provider financial distress.

Portfolio Management

DO-NOTHING PORTFOLIO

Summary

Measures whether trading actually added value — by comparing the book with what it would have done if left alone.

Problem

It is easy to remember the good trades and forget the costly ones. Without a counterfactual, there is no honest answer to whether activity helped or hurt.

Approach

At each decision date, freezes the portfolio as it stood and holds it unchanged to today, compared on a time-weighted basis against what the book actually did. Every stock sold is tracked from the sale-day close, against the S&P 500 as the benchmark — so each sell decision has its own scorecard.

Why it matters

Gives an objective scorecard for buy and sell decisions, separating skill from activity.

Python pandas Claude Code

RISK MANAGER

Summary

Combines drawdown, position-size, correlation, short-interest, thesis, and ownership risk on every position into one persistent stream of alerts — from quantitative review triggers to flags when thesis-disconfirming data emerges or when insiders and large holders are selling.

Problem

Risk signals arrive from different places at different times: a price breaking a stop, a data point that undercuts the thesis, a filing showing insiders selling. Checked separately, the one that matters is easy to miss.

Approach

Runs rule-based checks on every holding — drawdown rules on cost basis (−15%: re-underwrite the thesis; −25%: cut or add), position-size and correlation-cluster limits, short-interest flags — and layers on fundamental alerts for thesis-disconfirming data and selling by insiders and institutions. Alerts post to Slack and repeat daily until they are deliberately reviewed.

Why it matters

One place that says what in the book needs attention today — and a system that never lets a breach be ignored by default.

Python Slack API Notion API

Judgment Development

BLIND PITCH REVIEW

Summary

A daily drill for investment judgment: an old stock pitch from a high-quality source arrives automatically, I commit to a view on it blind — before knowing the outcome — then have a frontier LLM review what actually happened to the stock afterwards — and why.

Problem

Judgment improves through feedback, but investment feedback is slow and noisy: a thesis can take years to play out, and by then it is hard to remember what you believed and why. Without a written a priori call, hindsight quietly rewrites it.

Approach

Each morning a pitch is automatically sourced from high-signal venues — stock-pitch competitions judged by professional investors, and respected investor accounts and research sites — then delivered to a private Slack channel and printed. Before seeing any outcome, I write a structured read: what the market is missing, the key assumption and the strongest evidence for it, the valuation and return drivers, why now and which catalysts matter, the fact that would disprove the thesis, and pursue or pass with a confidence score and the next research step. A frontier LLM then researches what subsequently happened to the company and the stock, and explains which drivers actually decided the outcome — and which questions mattered most.

Why it matters

The point is not grading the call; it is training the instinct to find the few drivers and questions that decide an investment. It compresses years of feedback into a daily repetition — the same discipline as reviewing game film, applied to stock picking.

Frontier LLM Slack API Python

Other Modules for this Workflow

Self-Improving Article Recommender

Picks the highest-signal reads each morning from 65 curated sources plus targeted web search, and learns from my feedback on every day’s selection.

Corporate Case Studies

A growing library of what actually drove success and failure at companies at different stages — built from data, published accounts, and former-executive commentary.

02

Design Philosophy

01_

Designed to reduce time spent on manual data work and increase time spent on analysis and judgment.

02_

Built to improve consistency across the research process — the same rigor applied to every name, not just the highest-conviction ones.

03_

Focused on surfacing signal, not generating conclusions — the tools inform judgment, they don’t replace it.

04_

Structured to integrate into a fundamental, bottom-up workflow — outputs land in Slack, Gmail, Google Calendar, and PDF reports.

03

How They’re Built

01_

Cron-driven, server-free.

Runs on GitHub Actions or Windows Task Scheduler. No servers to keep alive. The system exists only when it’s executing.

02_

Observable by default.

A fleet watchdog checks that every scheduled job ran and produced output. A missed or failed run is reported, never silent.

03_

Idempotent reruns.

Re-trigger without duplicates or corruption. Scripts check state before mutation to ensure safety.

04_

Real-world data tolerance.

Holiday handling, stale-data guards, multi-currency, and robust API rate limit management.

05_

Composable, not monolithic.

Projects communicate through files (JSON/CSV), not live APIs. Failure in one node doesn’t bring down the stack.

06_

Reasoning models + structured analysis.

Claude where reasoning matters, code where structure matters. Knowing where that line goes is the primary skill.

04

About

I am a public markets investor with a decade of experience across healthcare, SMID equities, technology, and multi-asset investing. I have worked on the buy side at three $1 trillion asset managers and a start-up hedge fund, and on the sell side at an international firm. My previous experience includes entrepreneurship and venture capital investing in healthcare and deep tech.

I hold degrees from Yale, Columbia, and the University of Pennsylvania, including a Wharton MBA and a master’s in computing and information technology, along with the CFA and CAIA charters.

On the engineering side, I own the full lifecycle — workflow design, source validation, deployment, and daily operation. I reach for AI models only where reasoning genuinely helps and write deterministic code for everything that has to be reliable — and I am the demanding end user of every tool.

05

Contact