Finance analyst (FP&A) building Python tools for financial data review and auditable agent workflows. My open-source work spans AI infrastructure, Bitcoin and Lightning payments, and the reliability bugs that show up after a restart or halfway through a message.
| Project | Problem it addresses | What you can try |
|---|---|---|
| Finance File Triage | Turn messy CSV/XLSX data into row-linked review drafts across 4 finance data families: FP&A variance, brokerage positions, cash transactions, and invoices. | Browser app; files stay on your device. |
| Agent Payment Ledger | Inspect what an agent attempted, paid for, or was blocked from doing across 3 seeded runs and 6 event types. | Static walkthrough, dashboard screenshot, and case study. |
| Wallet Policy Kit | Check coin-pool separation and restart behavior with 27 conformance cases. | Downloadable Python research kit with reproducible fixtures. |
46 external public PRs merged across 37 repositories, with merges in each of the 8 weeks from August 10 to October 4, 2026. Weekly contribution log.
| Project | Change | What was hard about it |
|---|---|---|
| OpenAI Python SDK | Publicly export type_to_response_format_param |
Callers can use openai.lib instead of private parsing modules. Resolves an upstream feature request; merged October 2, 2026. |
| NSA Ghidra | PyGhidra: keep bean properties out of script globals iteration | With no program open, JPype bean properties like firstFunction throw on read, so iterating script globals (and interpreter completion) broke. Took a second round after maintainer review to cover the no-program case. |
| vLLM | ROCm fixes, incl. a cu_seqlens_q off-by-one in AITER speculative decode (#39120) and config registration before tokenizer init (#40299) |
Six merged. Most were found by reading AMD kernel paths against the backend they were supposed to match. |
| Mesh-LLM | Owner keystore and signed+encrypted message primitives (#156), then a run of Windows fixes | Nine merged in a fast-moving Rust distributed-inference project; I mostly own Windows breakage there now. |
| rust-lightning | Expose current dust exposure in ChannelDetails |
Operators can now watch how close a channel is to its dust limit, counting commitment fees as well as dust HTLCs. |
| rust-bitcoin | From<Infallible> for 31 public error types |
Small idea, wide surface: units, primitives and consensus_encoding all had to line up so generic ? code compiles. |
| HoloViz Panel | Fix nested Plotly array loss across clients | Reusing a figure dropped nested array data for the second client. Binary serialization was mutating containers that shallow copies still shared. |
| LiveKit Agents | Forward provider events through session restarts | Provider-specific realtime events were lost every time the fallback wrapper swapped its child session. |
| ordinals/ord | Warn when exporting addresses without the address index | Replaced a hard error with a warning, following maintainer direction from an earlier PR. |
- Bitcoin Core #36190: tests that the
bitcoinwrapper reports child exit status correctly on Windows. Code-review ACKed; waiting on a dependency. - x402 #1873: request-bound Lightning upfront payments for the Python SDK, with replay protection that holds across restarts.
- NEAR near-sdk-rs #1638: ABI generation failed to link on Windows MSVC hosts for about two years.
- x402 + Lightning in Python. Payment verification, settlement and replay handling. Notes: x402-work.md.
- Bitcoin research. What a private-payment wallet has to keep so it can still recover and spend after a service disappears. Reproducible experiments and their limits: bitcoin-research.
- Wallet policy kit. Try the Python-only checks for coin-pool separation, or reproduce payments and saved-wallet restarts on regtest. Report a trial or wallet use case.
- Mesh-LLM on Windows.
- bitcoin-mcp: MCP server that gives agents Bitcoin node, mempool and fee context. 50 tools, 180 tests.
- Satoshi API: self-hostable fee-intelligence API behind bitcoin-mcp, with optional x402 payments. The public hosted instance is paused.
- qlib-options: options snapshot and factor pipeline for Microsoft qlib.
The day job is FP&A. The overlap shows up in OpenBB and qlib work, variance-commentary tooling, and a lot of Python that turns messy finance data into something a person can sign off on. Case studies.
240 merged pull requests to 160 public repositories outside my account, verified October 2, 2026. Merges in every month from March through October. Dated list and search method · raw JSON · portfolio
Proof of Work, a 15-second motion study drawn frame by frame in canvas code. Watch it render live · 1080p60 with sound




