πŸ“Έ Spend Sight iOS Β· OCR Β· Core Data Β· Charts

Spend Sight

Spend Sight is an iOS receipt scanning app that converts physical receipts into structured financial data using on-device OCR (Apple Vision) and Core Data. Users can scan or upload a receipt, extract key purchase details, assign a spending category, and view daily/weekly spending trends through interactive charts.

Overview

The goal of Spend Sight is to take unstructured receipt text and turn it into data you can actually use: totals, dates, merchants, categories, and spending trends. It’s built entirely with native iOS tooling to keep performance high and data local.

SwiftUI Vision OCR Core Data Swift Charts UIKit ImagePicker
Key Features

πŸš€ Features

  • πŸ“· Scan receipts using camera or photo library
  • πŸ”Ž On-device OCR using Apple’s Vision framework
  • 🧾 Extracts store name, total amount, and date (best-effort parsing)
  • 🏷 User-selected spending category before saving
  • πŸ” Rescan an existing receipt to replace stored details
  • πŸ—‘ Delete receipts at any time

πŸ“Š Insights

  • Daily spending chart (filled for missing days)
  • Weekly spending chart (grouped by calendar week)
  • 30-day summary: total spent + average daily spend
  • Designed to scale into monthly trends and category breakdowns
App Views

πŸ“· Scanner View

Scanner View Screenshot

The Scanner view is the primary entry point. Users can either take a new photo of a receipt or upload one from their library. After selecting an image, the app runs Vision OCR asynchronously to avoid blocking the UI. When OCR completes, the raw text is parsed into structured fields (store, total, date) and displayed as a clean preview card.

  • Scan options: camera capture or photo library upload
  • Processing state: shows a loading indicator while OCR runs
  • Preview card: displays extracted Store Name, Total, and Date
  • Category selection: user picks a category (e.g., Groceries, Dining, Transport)
  • Save flow: saves structured data + raw OCR text to Core Data

🧾 Receipt List View

Scanner View Screenshot

The Receipt List view displays all saved receipts pulled from Core Data using a fetch request. Receipts are sorted by date (newest first). Each row shows the merchant, total, category, and date for quick scanning. Tapping a receipt opens a detail page.

  • Core Data fetch: persistent list across app launches
  • Readable rows: store name + total + category + date
  • Navigation: tap a receipt to view details

🧾 Receipt Detail View

Scanner View Screenshot

The Receipt Detail view shows the saved receipt summary and the original OCR output line-by-line. This is useful both for transparency and debugging OCR edge cases. Users can delete a receipt or rescan it to replace all stored details while keeping the same record in Core Data.

  • Summary: store name, total, category, date
  • OCR transparency: displays scanned text line-by-line
  • Rescan + replace: choose a new image β†’ OCR β†’ parse β†’ overwrite fields
  • Delete: removes the record from Core Data with confirmation

πŸ“Š Insights View

Scanner View Screenshot

The Insights view aggregates receipts into daily and weekly totals, then visualizes them using Swift Charts. Daily totals are grouped by calendar day and missing dates are filled with $0 to keep the chart continuous. Weekly totals are grouped by week start date. A summary card displays total spending over the selected window and average daily spend.

  • Daily chart: 30-day daily totals (continuous timeline)
  • Weekly chart: grouped by week (last 12 weeks)
  • Summary metrics: total spent + daily average
  • Extensible: ready for category breakdowns and monthly analytics
Tech Stack
  • SwiftUI β€” UI framework
  • Vision Framework β€” Optical Character Recognition (OCR)
  • Core Data β€” Local data persistence
  • Swift Charts β€” Spending visualizations
  • UIKit (ImagePicker) β€” Camera & photo library integration
How to Run

Swift Charts requires iOS 16+. Camera capture requires a physical iPhone.

Clone repository:

git clone https://github.com/chukaufo/Spend-Sight.git
  • Open Spend Sight.xcodeproj in Xcode
  • Ensure deployment target is iOS 16+
  • Run on simulator or device (camera needs a real iPhone)
Future Improvements
  • Category breakdown (pie chart / stacked bars)
  • Monthly + yearly trend analysis
  • Budget tracking and alerts
  • Improved item-level parsing (line items, quantities)
  • Search / filter receipts (merchant, date range, category)
  • iCloud sync
  • Export to CSV
Project Purpose

Spend Sight was built to explore how unstructured financial data from physical receipts can be transformed into structured insights using native iOS technologies. The project highlights OCR processing, parsing, persistence, and visualization end to end in a clean user flow: Scan β†’ Preview β†’ Categorize β†’ Save β†’ Analyze.