BillTuck

Inspiration

Bills and receipts arrive in different forms: paper, email attachments, photos, and downloaded PDFs. Saving them is easy to postpone. Later, you may remember the merchant or amount but have no idea where the original went. I built BillTuck around a simple idea: keep the document first, then make it easy to find and understand later.

What it does

BillTuck is an iPhone app for personal and work bills. You can scan a paper bill, choose a photo or file, or share a document into the app. BillTuck keeps the original PDF or image alongside its details, even when those details still need review.

You can search your library, open or share an original, and see completed bills summarized by month and provider. Amounts in different currencies stay separate. When you need a record outside the app, you can preview and share a PDF report for a selected period.

How I built it

I built the app with SwiftUI and native iPhone features for scanning, document previews, and sharing. A local library stores bill records and their originals. The capture flow saves the document before attempting to read its details, so an unavailable processing service does not make the bill disappear. Users can review suggested details or enter them manually.

I also built search, duplicate checks, summaries, PDF reports, and backup and restore flows. The same rules that determine which bills appear in a summary also determine what goes into its report.

Challenges and what I learned

The hardest part was making the app trustworthy when a document is incomplete. A saved bill might be missing an amount, have an uncertain currency, or need a duplicate decision. It still has to remain visible and useful, while staying out of totals until its details are ready. That led me to treat the original document as the foundation of each record, rather than treating extraction as the save.

Reports brought another lesson: a useful total needs an explanation. BillTuck keeps currencies separate, shows which bills contribute to a figure, and identifies records that need attention. Backup work raised a similar challenge—unfinished bills and their originals matter just as much as completed ones, so recovery needs to include both.

I tested these flows with synthetic documents, automated tests, and iPhone simulators. The next step is to test paper scanning and everyday retrieval with real users, then refine the experience based on what slows them down.

Built With

  • aiproxy
  • apple-charts
  • apple-vision
  • ios
  • openai-api
  • pdfkit
  • photosui
  • quick-look
  • revenuecat
  • swift
  • swiftdata
  • swiftui
  • visionkit
  • xcode
  • zipfoundation
Share this project:

Updates

Submission history