Oscar Welch

Computer Science graduate with an interest in fintech, AI and wealth management. Below are some projects I built in my spare time.

Selected work

OWL — Portfolio tracker & analysis

A personal finance dashboard that brings investments, pensions, cash, property and debt into one place, with tools to explore the holdings beneath a portfolio.

TypeScript · React · Cloudflare · EODHD
View project →
← back to selected work

OWL — Portfolio tracker

TypeScript · React · Cloudflare Workers & D1 · EODHD

I built OWL to bring personal finances together and make it easier to understand what a portfolio actually contains. It combines an overview of accounts and assets with analysis of direct investments and reported underlying fund holdings.

Demo walkthrough

The portfolio data in this demo is fictional. Market prices are sourced from EODHD and may be delayed. Changes to demo accounts can create jumps in the portfolio history.

Watch on YouTube

What it does

  • Brings investment accounts, pensions, cash, property and debts together in a net worth overview.
  • Supports manual holdings and portfolio imports from supported CSV statements, including AJ Bell exports.
  • Uses market prices to value supported holdings and shows individual price history and recorded portfolio valuations.
  • Estimates underlying company, country, sector and industry exposure using available fund holdings and company classifications.
  • Identifies overlapping holdings across funds and direct shares, and summarises concentration, cash and pricing coverage.

Screenshots

Development approach

I used OpenAI’s GPT-6 Astra models for complex reasoning tasks, including portfolio valuation logic, interpreting market data and debugging inconsistent account totals. I used models such as GPT-6 Sol for more routine implementation work, including interface changes, styling and content updates.

I set the requirements, reviewed the outputs and tested the resulting behaviour, refining the imports, valuations and portfolio analysis as issues emerged. The approach was to match the model to the task, using deeper reasoning where the financial logic needed careful scrutiny.

How it works

The interface is built with TypeScript and React, with Cloudflare Workers handling server requests and D1 storing account and tracking data. EODHD supplies market pricing and available fund holdings.

Portfolio insights are calculated from the recorded holdings and available data. Fund exposure is estimated from position values and reported fund weights. Coverage varies by instrument, so OWL shows unclassified exposure and missing or stale pricing rather than treating every breakdown as complete.