Local-first workflow
A desktop application keeps the working experience close to the person operating it. Local-first does not mean that every connected service or AI request runs offline.
Applied AI
For seven years I kept my salon’s books, and whenever a figure looked wrong I wanted the software to explain why. Arcturion Finance is the accounting application I am building to do exactly that.
The work in three steps
Years of keeping my salon’s books produced one firm requirement, that every number should arrive with a clear account of how it was produced.
Transactions require review before they can support a useful report. I defined a workflow for categorization, reconciliation and reporting, then directed its AI-assisted implementation.
In the saved synthetic example, a $40 lunch moves from Uncategorized to Meals, while three records still await categorization. For June 1–2 the books close at $60, and a supplied ending balance of $99.99 returns BLOCKED, with a difference of −$39.99.
The broader June 1–6 report shows $100 in revenue, $93.75 in expenses and $6.25 in net income. That period differs from the reconciliation period, and a balanced report does not resolve the classifications that remain open.
Follow the recorded example →Saved backend outputs · Fictional ledger · Recorded October 4, 2026. The controls below select recorded results and do not execute the application.
Running a salon meant managing the books alongside appointments, services and client relationships. A report was valuable only when I could understand what had gone into it.
That experience shaped this project, a desktop accounting workflow with an AI assistant designed to answer questions using the books themselves as context.
I contributed the bookkeeping workflow and defined the requirements for reviewing transactions, reconciling records and interpreting reports, choices informed by years of working in QuickBooks. I directed the AI-assisted implementation, reviewed each resulting workflow and gave precise direction for every revision.
A desktop application keeps the working experience close to the person operating it. Local-first does not mean that every connected service or AI request runs offline.
Transactions and ledger entries underpin both reports and reconciliation. A well-presented report still depends on verified calculations beneath it.
An assistant can help explain the records, but its responses require supporting data and review. Generated text is not, in itself, financial verification.
A difference should remain visible until it is explained. Concealing it would make the interface simpler and the workflow less trustworthy.
These captures render the actual application source in a fresh browser context. The workspace contains a fictional sample entity with no transactions or accounts; amounts are hidden, and every network request is blocked.


This is the application’s browser rendering rather than a screenshot of the native macOS shell. It demonstrates the structure of the interface only and does not verify reporting calculations, live bank connections or the desktop integration.
These results were produced by the Finance backend from a fictional six-transaction ledger. This presentation replays the saved outputs; it is neither a recording of the desktop interface nor a live banking connection.
Record g1 moved from Uncategorized to Meals through the application’s categorization function. Three other records remain uncategorized.
| ID | Date | Description | Category | Amount |
|---|---|---|---|---|
| g1 | 2026-06-01 | Lunch | Meals | -40.00 |
| g2 | 2026-06-02 | Client payment | Salon Income | +100.00 |
| g3 | 2026-06-03 | Target Store 1234 | Uncategorized | -15.00 |
| g4 | 2026-06-04 | TARGET STORE #9999 | Uncategorized | -22.50 |
| g5 | 2026-06-05 | Other Vendor 1234 | Uncategorized | -9.25 |
| g6 | 2026-06-06 | Target Store 5555 | Meals | -7.00 |
Reconciliation covers June 1–2 only, a $40 expense and $100 in income against an opening balance of $0.00. Both statement rows match the books.
RECONCILED: two statement rows matched for June 1–2. Both the supplied ending balance and the book closing balance are $60.00.
The report covers June 1–6, a different period from the reconciliation above. Revenue: $100.00. Expenses: $93.75. Net income: $6.25. The recorded balance sheet check returned BALANCED, with assets of $6.25.
Expenses total $40.00 + $15.00 + $22.50 + $9.25 + $7.00 = $93.75. Subtracted from $100.00 in income, they leave $6.25 in net income. Uncategorized expenses total $46.75. A balanced equation does not establish that every classification is correct.
No real records or accounts are connected. Switching scenarios selects saved outputs and does not rerun the application.
On October 4, 2026, an isolated run passed 45 selected tests covering categorization and recovery, reconciliation and loading, and reporting and guards, with no failures, errors or skipped tests.
The demonstration above records actual backend outputs from synthetic records. This selected run was not a full-suite execution.
The desktop interface, live bank connections, tax calculations and real-world accounting correctness were not verified by this run.
Arcturion Finance is an independent application in development, not a commercial product. It prepares information and estimates, it does not file taxes, and this demonstration uses only synthetic records.
The isolated browser captures now make the structure of the interface visible. The next step is to verify the same sample-data walkthrough in the native desktop interface and to test additional datasets and accounting edge cases. Backend outputs, browser rendering and desktop integration remain separate forms of evidence.