S·M

Software

Apps I build

I build software for problems in my own life: health, money and time. Each is a full-stack app that is deployed and in daily use, and each is a private, single-user tool, so there is nothing to download. Screenshots use synthetic demonstration data, not real records.

Housecall

Private personal tool

Your doctor in the family.

Problem
My health data lived in four separate apps (Whoop, Garmin, Withings and an Omron blood-pressure cuff), and none of them connected the numbers to what I was trying to change.
What it does
Brings all four sources into one database and dashboard: body composition, 7-day averages and trends. Every morning it composes a brief on progress toward a long-term goal and the current month’s goals, written as a change from the previous day and delivered as a push notification. Meals are logged by photo or by typing what I ate.

Built with Next.js · Prisma + SQLite · Android shell (Capacitor) · Railway

Housecall Today screen with synthetic data: four letter grades and estimated biological ages
Running locally with synthetic demonstration data. One personal navigation item hidden. Select the image to enlarge.

DoneX

Private personal tool

An AI task companion.

Problem
Tasks reached me through email, text messages and my own head, and a plain to-do list could neither sort them nor plan a day around them.
What it does
Tasks with projects, tags, subtasks and recurrence; notes and checklists; a morning briefing and a one-tap day plan; and one inbox where AI triages Gmail and forwarded texts into tasks. Voice capture uses the browser’s built-in speech recognition, so no audio goes to a third-party service.

Built with Next.js 15 · SQLite · Docker · installable PWA

DoneX Today view listing synthetic overdue, today and anytime tasks with projects, tags and priorities
Running locally with synthetic demonstration data. Select the image to enlarge.

PortViz

Private personal tool

Portfolio visualization.

Problem
Brokerage apps show a list of positions. I wanted to see a whole portfolio at once, including private holdings with no public price, and to know how close it was to a margin call.
What it does
A treemap of public holdings, grouped by sector, sized by value and colored by return over a chosen period. A register of private holdings valued at the best available market price. A 1–10 margin-call risk score.

Built with Python · FastAPI · APScheduler · yfinance · dependency-free JavaScript · PWA

PortViz treemap of a synthetic demo portfolio grouped by sector and colored by return
Running locally with synthetic demonstration data. Select the image to enlarge.

More projects

Also in use

Smaller write-ups of three more private tools.

  • Juli-a

    Private personal tool

    A health companion organized around the menstrual cycle, with a weekly AI plan that explains the reasoning behind each recommendation. Built for one user and distributed through TestFlight.

    Expo / React Native · Fastify · Postgres

  • Kindred

    Private personal tool

    A personal relationship CRM. It records who you met and what you talked about, reminds you to follow up at the right cadence, and drafts messages and pre-meeting briefs.

    Next.js · Google sign-in & sync · Web push

  • The Iron Condor

    Private personal tool

    An options-trading desk with live charts and technicals and a daily briefing. Independent AI analysts write their own takes, and an arbiter model reconciles them into one read.

    Next.js · multi-model AI pipeline · Android PWA