Selected work Β· 2024β€”now

Projects, collected
in one working ledger.

A practical index of things I’ve designed, shipped, and kept improvingβ€” from native applications to speech systems.

/software-development

Software Development

05 projects
Nov 2025 β€” Feb 2026

Horizon

Electron Browser App

Case study

Chromium-based browser native to macOS with deep system integration

ElectronSwiftTypeScriptChromiummacOS
Build notes
  • Chromium based browser native to macOS with deep system integration.
  • Bridges Chromium Embedded Framework to TypeScript through Swift.
  • Support for Chrome V3 extensions.
System map

The Native Bridge

Two distinct ecosystems living side-by-side that do not speak the same language β€” Node.js/Electron (the consumer) and Native macOS (the producer).

  1. Native Core

    A standard macOS Framework project in pure Swift and Objective-C. Handles all OS-level logic β€” window styles, Spotlight search, system interactions. Knows nothing about Node.js or V8.

  2. The Glue (swift_addon.mm)

    Objective-C++ translation layer. Imports <napi.h> to talk to JS, and imports <Horizon/SwiftBridge.h> to talk to Swift.

  3. The Builder (binding.gyp)

    Tells the compiler to build the glue file and link it against the compiled Horizon.framework.

Data flow

JavaScript β†’ Napi::String (V8) β†’ std::string (C++) β†’ NSString (Obj-C) β†’ Swift β†’ NSString β†’ const char* β†’ Napi::String β†’ JavaScript. The connection relies almost entirely on Strings β€” the 'Dumb Pipe' pattern.

2025

GoodBurger

Food Ordering App

Case study

Full-stack food ordering application with frontend caching and multi-entity database

ReactTypeScriptDatabaseCachingFull-Stack
Build notes
  • A full-stack food ordering application.
  • Frontend caching for performance.
  • Database with 4+ entities.
  • Complete build pipeline with yarn dev/build/preview.
Feb 2026 β€” Present

Focus

Budgeting & Accounting App

Case study

Personal budgeting and accounting app β€” track spending, manage accounts, and stay on top of your finances

ExpoReact NativeSupabasePlaidTypeScript
Build notes
  • Personal budgeting and accounting app built with Expo for iOS, Android, and Web.
  • Connect financial accounts securely through Plaid for real-time balance and transaction tracking.
  • Privacy-first design β€” data is never sold, never leaves the platform, and is deleted after 180 days of inactivity.
  • Production grade architecture with Supabase auth, row-level security, and encrypted data at rest.
Interface captures
Focus screenshot 1Focus screenshot 2Focus screenshot 3Focus screenshot 4Focus screenshot 5
2025 β€” Present

Banking Ledger

MCP Server

Case study

Model Context Protocol server for deterministic banking and brokerage workflows

MCPTypeScriptPlaywrightBankingAutomation
Build notes
  • Model Context Protocol server for deterministic banking and brokerage workflows.
  • AI clients only see high-level financial institution tools β€” raw browser automation lives under src/utils.
  • Supports Bank of America and Fidelity with full login, account listing, transaction views, and statement access.
  • Uses persistent Playwright browser profiles so session data survives across calls.
Interface captures
Banking Ledger screenshot 1
System map

MCP Architecture

The server surface is kept small, predictable, and safe to grow. Implementation capabilities are internal utilities, not public MCP tools.

  1. src/tools/

    MCP-facing institution tool definitions. What the AI can call.

  2. src/utils/browser/

    Internal Playwright runtime β€” ensureBrowser, navigate, click, fill, screenshot, getVisibleText.

  3. src/utils/api/

    Internal HTTP request functions for deterministic server-side workflows.

  4. toolHandler.ts

    MCP call dispatcher that resolves tools to configured bank/action routes.

Data flow

MCP Client β†’ high-level tool (e.g. bank_of_america_view_transactions) β†’ toolHandler resolves route β†’ bank runtime calls browser utilities in deterministic sequence β†’ AI receives only the result.

2025

typelessOS

Effortless macOS Experience

Case study

Multi-layered macOS application for a seamless AI and terminal experience

macOSSwiftAITerminal
Build notes
  • Multi-layered macOS application where different windows interact to provide a seamless AI and terminal experience.
  • Designed for an effortless macOS workflow.
  • Native Swift application with deep system integration.
/machine-learning

Machine Learning

02 projects
2024

VITS SVC Data Collector

Audio Processing Pipeline

Case study

Workflow for processing audio from your favorite artists

PythonAudioMLData Pipeline
Build notes
  • Automated workflow for processing audio from your favorite artists.
  • Handles audio segmentation, cleaning, and formatting for voice model training.
  • Designed for VITS-SVC voice conversion pipelines.
2025 β€” Present

Somali TTS

CosyVoice Training & Pause Alignment

Case study

A local-first Somali speech pipeline: preserve the voice, recover its timing, and train a model that can carry both pronunciation and rhythm.

CosyVoice 3PythonElevenLabs ScribeParquetSomaliSpeech ML
Build notes
  • Built a reproducible corpus pipeline around long-form Somali recordings: segmentation, denoising, loudness normalization, transcription, timestamp-aware review, and training manifest generation.
  • Kept audio and text as separate, auditable artifacts so text improvements never overwrite the recordings that define the speaker's identity and delivery.
  • Prepared 8,745 non-empty audio/transcript pairs with a deterministic 98/2 train-development split for controlled experiments.
  • Fine-tuned CosyVoice's language model and Flow components independently, so pronunciation and linguistic timing can be evaluated separately from acoustic rhythm and rendering.
Research note

Building Somali prosody from the signal, not a punctuation guess

The project started with a practical constraint: Somali speech data is valuable only when the transcript, the speaker, and the timing remain connected. The pipeline turns approved long-form recordings into short, trainable clips without treating transcription as a one-way export. Each stage leaves a reviewable artifact behind β€” cleaned FLAC, source transcript JSON, derived text, metadata, manifests, and training outputs β€” so mistakes can be corrected without destroying provenance.

The most important research question became pauses. Raw transcripts often flatten a natural delivery into a stream of words, while the recording still contains the breath, hesitation, emphasis, and sentence boundary. ElevenLabs word timestamps make that recoverable. For adjacent words, the gap is computed as next.start minus current.end; conservative thresholds then propose ordinary commas, periods, or ellipses. The audio never changes, and there are no invented pause tags. Instead, normal punctuation becomes an alignment cue the model can learn from repeated audio-text examples.

CosyVoice separates the work into two learnable pieces. The LLM maps Somali text toward speech tokens, where pronunciation, phrasing, and linguistic timing live. The Flow model maps those tokens toward acoustic detail and temporal realization. Training both on the same aligned corpus is deliberate: the goal is not a second dataset of artificial rhythms, but better preservation of the rhythms already spoken in the source material. Independent checkpoints make it possible to compare an LLM-first change, a Flow-first change, and a paired change against the same held-out clips.

The current workflow is designed like an experiment loop rather than a one-shot training run. Dataset revisions are versioned, timestamp-derived punctuation is sampled for human listening review, short natural phrases and held-out passages are compared across checkpoints, and only then are the best model pairings promoted into local inference. That makes improvements in Somali pronunciation measurable without losing sight of the thing that makes a voice feel human: where it waits, breathes, lands, and continues.

8,745Audio-text pairs
98 / 2Train-dev split
24 kHzFinal mono FLAC
LLM + FlowSeparate checkpoints
System map

The Training Paradigm

Every layer is built to preserve an evidence trail from the original spoken performance to a repeatable CosyVoice experiment. The same aligned corpus serves both modules; the ablation plan reveals which module is responsible for an audible change.

  1. 1. Source recordings & clip boundaries

    Long-form Somali recordings are segmented with Silero VAD into approximately 20–30 second clips. The processing runner refuses partial or conflicting outputs, preserving a clean source-to-clip relationship.

  2. 2. Signal preparation

    DeepFilterNet 3 denoising and loudness normalization are applied once per clip batch. Final artifacts are mono, 24 kHz, 16-bit lossless FLAC β€” consistent input for training without duplicate temporary WAVs.

  3. 3. Transcript, timestamps & pause alignment

    ElevenLabs JSON retains transcript text plus per-word start/end timing. Derived punctuation uses word gaps and conservative thresholds: short gaps stay unmarked; mid gaps suggest commas; larger boundaries suggest periods; ellipses remain reserved for genuine long holds or hesitation.

  4. 4. Corpus build & validation

    Normalized text and audio paths become manifests, feature shards, and Parquet metadata. Mechanical checks catch missing files, duration and text anomalies, or split leakage; listening checks verify that the proposed punctuation still matches the speaker.

  5. 5. LLM and Flow fine-tuning

    The LLM is adapted for Somali text-to-speech-token mapping, including pronunciation and phrasing. Flow is adapted for speech-token-to-mel acoustics. HiFT remains frozen; checkpoints are exported in a runtime-compatible form for local macOS inference.

  6. 6. Evaluation & iteration

    A held-out development set and a small prosody listening suite compare base Flow + fine LLM, fine Flow + base LLM, and the paired model. Only a repeatable gain in clarity and pacing earns the next dataset or checkpoint revision.

Data flow

Authorized Somali recordings β†’ VAD clips β†’ denoise + normalize β†’ ElevenLabs transcript JSON with word timestamps β†’ derived punctuation review β†’ normalized manifests / Parquet β†’ separate LLM and Flow fine-tunes β†’ held-out listening comparisons β†’ local zero-shot and checkpoint inference.