Canyon Bryson

Canyon Bryson

AI Engineer + Full-Stack Developer

I write reuseable, pattern-based code that is easy to understand and maintain.

7 years experienceComputational math + CS degreeLead Engineer at ORTHOATHLETEOrthoHCP shipped in 30 days
Back to Projects

Grocery Budget

Expo React Native

Budgeting and meal-planning app: auto-budget from bank transactions (Plaid), receipt parsing with grocery subcategory splits, recipes with cost-per-serving, and AI-generated shopping lists.

React Native + ExpoTypeScriptOpenAIConvexClerkPlaid

View the Code

React Native + Expo on GitHub

View on GitHub

Problem & Context

Grocery spending is hard to track and plan. Manual budgeting is tedious; bank feeds don't tell you what you bought or how it maps to meals. Receipts pile up. Meal planning and shopping lists live in separate tools.

Grocery Budget unifies envelope-style budgeting (with Plaid auto-import), receipt capture and itemization, recipes with cost-per-serving, weekly meal planning, and AI-generated shopping lists. Receipts can link to bank transactions and split grocery spend into subcategories (e.g., Costco vs household vs eating out).

Core Pillars

  • Auto-budgeting from bank transactions Plaid integration with envelope-style budgets, parent + subcategory hierarchy, transfer tracking, and rule/AI-assisted categorization.
  • Receipt → items + grocery subcategories Camera capture, AI receipt parsing, item-level categorization, and linking receipts to transactions to split grocery spend.
  • Recipe → ingredients → cost-per-serving URL ingestion, manual entry, saved recipes, weekly meal plan with slots, and AI-generated shopping list with pricing.

Categorization Pipeline

Transactions are categorized by strict priority: user rules first, deterministic mappings second, AI only as last resort.

  1. 1. User rule cache
    Fuzzy merchant match — wins over everything
  2. 2. Deterministic mapping
    MCC codes, keywords
  3. 3. AI fallback
    Only when unknown merchant and no MCC mapping

App Structure

Dashboard Spend vs budget, alerts, sync/scan quick actions
Budget Period selector, allocations, rollover config
Transactions List, filters, category picker, receipt link suggestions
Receipts Needs review, linked/unlinked, edit parsed fields
Meals Meal plan, recipes, shopping list
Settings Account, plan, notifications, household

AI System (Paid Tier)

Every AI output stores confidence scores, sources (receipt vs web), and rationale. Low-confidence fields require review. User edits feed back into rules and caches.

  • Transaction categorization fallback
  • Receipt OCR + parse (image → structured receipt)
  • Item normalization (raw → canonical)
  • Recipe URL ingestion
  • Recipe cost-per-serving estimation
  • Shopping list generation from meal plan

Key Decisions

Guest mode with local-only storage

Anonymous users get full manual functionality via expo-sqlite (budgets, transactions, recipes, meal plan) without Convex or Plaid. On sign-in, merge flow uploads local data with local-wins conflict resolution.

Tradeoff: No offline write queue in MVP; signed-in users require connectivity for writes.

Categorization priority: rules > deterministic > AI

User merchant rules (fuzzy match) always win. MCC/keyword mapping next. AI only for unknown merchants with no mapping. Manual categorization auto-creates fuzzy rules for future transactions.

Tradeoff: AI calls are minimized and reserved for paid tier, reducing cost and latency.

Receipt linking with mismatch tolerance

Link by time, store, and total. Within 5% tolerance allows link but flags for review. Linked receipts split grocery transactions into subcategory allocations; unlinked receipts do not affect budgets.

Tradeoff: Some false matches possible; review UX handles flagged cases.

Cost-per-serving from receipt history first

Pricing priority: (1) most recent purchase within 30 days from receipts, (2) AI web search. Free tier: user selects match; paid: AI suggests, flags uncertain for review.

Tradeoff: Accuracy depends on receipt history quality; newer users get more web-sourced estimates.

Screenshots

Grocery Budget dashboard
Dashboard
Budget allocation screen
Budget
Transactions list
Transactions
Receipt capture and review
Receipts
Meal plan and recipes
Meals
App settings
Settings

What I'd Improve

  • Offline write queue for signed-in users
  • Pantry tracking with auto-consumption from recipes
  • Benchmarking (50th percentile spend) using anonymized opt-in data
  • Store routing optimization for shopping lists
  • Data export