← WorkTally
Tally product cover
Cover

1 / 17

Tally Local-first finance

A personal finance app designed around clear financial visibility, thoughtful interactions, and making imported data easy to understand and review.

Money data rarely arrives clean. I kept running into statements, receipts, pasted text, email, and manual entries that all disagreed about the same spend. Most apps treated every import as correct anyway.

I built Tally around that mess. It normalizes input, fingerprints duplicates, categorizes with confidence gates, and parks anything ambiguous in a review queue before it shapes the picture. SQLite is the on-device source of truth, and sync pushes sanitized changes through a durable outbox.

The project taught me that finance tools earn trust by making uncertain imports reviewable, not by pretending every import is correct.

Scope

Imports, review queue, finance tools, on-device SQLite, sync outbox, and privacy boundaries. Active development, no public launch claims.

Local writes first

SQLite is the on-device source of truth. Mutations write locally, enter a durable outbox, sync to Convex, and pull remote changes using an updatedAt watermark.

  1. 1.Write to SQLite
  2. 2.Queue outbox event
  3. 3.Push sanitized change
  4. 4.Resolve conflict
  5. 5.Pull by updatedAt
  6. 6.Apply locally

Interaction details

  • Local writes first: mutations land in SQLite, then enter a durable outbox before sync.
  • Confidence-gated categorization keeps uncertain automation in a review queue.
  • Raw receipt content and OAuth tokens stay out of sync payloads.
  • Demonstrations use deterministic fictional accounts and transactions.

Stack

React Native, Expo 54, Expo Router, TypeScript, SQLite, Zustand, Convex, Uniwind.

How it works

Trustworthy input

The difficult part is making inconsistent financial input reviewable rather than pretending every import is correct.

  • Text, CSV, PDF, optional Gmail receipt, and Apple Wallet Shortcut inputs.
  • Normalization and fingerprint-based deduplication across formats.
  • Editable category rules, confidence gates, and a review queue.
  • Accounts, budgets, subscriptions, debts, reminders, wishlist, tax profiles, and insights.

Privacy boundary

Raw receipt content and OAuth tokens are excluded from sync payloads. The demonstrations use deterministic fictional accounts and transactions.

Current state

Tally is in active development. No public launch, customer count, adoption, savings, or performance claim is made here.