Build LogiOS
#16
2026-06-205 min read

The dedup layer had three hash schemes. CDImportSource replaced them — and four banks validated with zero per-bank code.

The an iOS budget app import layer had three coexisting hash schemes with no shared contract between them. Collapsing them into CDImportSource — a unified source-attribution model — was the structural prerequisite for universal CSV and PDF parsers that validated across Monzo, Halifax, Revolut, and HSBC.

Read post
iOSSwift
#17
2026-06-196 min read

Cursed Energy Phase C: wiring an iOS budget app's quest system to real transaction history

The an iOS budget app gamification layer had quest cards, a claim button, and a streak counter. None of it read from actual spending. Replacing a hardcoded array with a transaction-aware QuestGenerator turned decorative chrome into a feedback loop that surfaces real patterns.

Read post
Build LogiOS
#18
2026-06-195 min read

Device QA found three regressions. The simulator had approved them all.

Round-2 device QA on bb finance flagged a navigation stack popping two levels instead of one, ProMotion locked at 60Hz on a 120Hz panel, and category rules over-reaching on shared word fragments. None of them showed in the simulator.

Read post
Build LogiOS
#19
2026-06-195 min read

GOOGLE plus CLOUD matched SoundCloud. Why the fuzzy categoriser had to go.

Phase Q's fuzzy categoriser propagated category matches silently. Device QA on Phase R's part-based builder immediately surfaced an ANY-match failure: GOOGLE plus CLOUD matched SoundCloud. Version two adds exclusions and per-row overrides; the difference is that the user can now see what the matcher is doing.

Read post
Build LogiOS
#20
2026-06-185 min read

Five features, one PR: how an iOS budget app ships concurrent phase work without a merge queue

On 2026-06-14, five feat entries landed in an iOS budget app across Phases C, D, and E — all tagged 'same PR #10.' Treating commits as the concurrency primitive instead of branches let three phases advance in parallel without a merge queue or conflict chain.

Read post