Projects
A selection of apps and supporting tools, connected by work on local data, document formats, and understandable publishing workflows. Product details and support remain at RiantStudio.
Native app · Statements & reconciliation
PrivLedge
A private, multi-bank ledger built around statement files. Import supported PDF, CSV, or XLSX statements, review the extracted transactions, categorize activity, and reconcile running balances.
The engineering work includes interpreting document layouts, retaining the source of an imported record, and making balance inconsistencies visible for review. The import summary lets you check transaction counts and balance totals before accepting a statement.
Product details at RiantStudio · A note on reviewable imports
Native app · Conversations & media
WhatsConvo
An iPhone and iPad app for importing exported WhatsApp conversations, browsing messages and media, and searching an archive on the device.
The work includes handling export-format differences and preserving the connection between a message and its attachment. The media gallery groups images, videos, and documents, with older media surfaced as memories.
A short app preview
A seven-second PrivLedge launch animation: the app icon develops from a dark tile into the ledger-and-lock mark, with an App Store badge below. The clip has no audio.
Developer tool · Static publishing
RiantCMS
A Swift command-line publisher for Markdown content and Leaf templates. It generates HTML, static assets, and a sitemap locally, then uploads the resulting files for nginx to serve. Blog sites also use posts, tags, feeds, and search output.
The website remains a directory of published files. A separate Hummingbird service supports the author-writeup workflow; it is not needed to serve this personal site.
Developer tool · Document formats
FormatStudio
A tool for inspecting statement documents, describing their structure, and validating the transactions extracted from them. Its workflow includes PDF text and layout inspection, table views for CSV and XLSX, and per-format extraction rules.
It supports the format-authoring side of statement import. Keeping format definitions separate from ledger workflows makes it possible to investigate an extraction problem against the original document.