diff --git a/CHANGELOG.md b/CHANGELOG.md index 64011a6..73d1f44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,33 +1,100 @@ # Changelog -All notable changes to GFPriceChecker will be documented in this file. +Release history for the **GF PriceChecker website** ([gfpricechecker.com](https://gfpricechecker.com)). + +Changes to the iOS app are tracked separately in the [app repository](https://github.com/CuWilliams/GFPriceChecker). The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Versioning + +The site is a continuously deployed static site: every merge to `main` is live within a minute or two. Tags mark meaningful states rather than deployments. + +- **Minor** (`1.1.0` → `1.2.0`) — a content release: new pages, a substantive rewrite, or a new site feature. +- **Patch** (`1.2.0` → `1.2.1`) — corrections, copy fixes, dependency-free housekeeping. +- **Major** — a redesign or a change in what the site is for. + +Routine blog posts and announcements are content edits, not releases, and don't get tags. + +To cut a release: move the `[Unreleased]` entries below into a new version heading, then tag `main`. + +``` +git tag -a v1.2.0 -m "Short description of the release" +git push origin v1.2.0 +``` + +--- + ## [Unreleased] +### Changed +- Rewrote site copy to describe the app as it works today: unit price differential adjusted for + package size as the headline metric, the three-step capture review (name, price, size), optional + size entry, and the receipt verification flow. +- Removed claims that the app's reports are CRA-compliant or accepted by the Canada Revenue Agency. + The Medical Expense Tax Credit is now presented as context for why the app exists, with the + ~3%-of-net-income threshold stated plainly. This matches the app, which removed agency branding + from its own interface in April 2026. +- Updated the advocacy section on the home page: petition e-6853 was declined by the government in + March 2026. +- Replaced the "Coming Soon" / waitlist calls to action with links to the TestFlight beta, live + since January 2026. +- Corrected the privacy claim on the features page — backup files are not encrypted. +- Rewrote `README.md` to document this website repository rather than the iOS app. +- Repurposed this changelog for the website; it previously tracked app development. +- Archived the original build plans to `Documents/archive/`. + ### Added -- Manual product entry with price comparison -- Camera scanning with OCR for shelf price tags -- Receipt verification and fuzzy product matching -- PDF and CSV export for CRA tax filing -- Data backup/restore functionality -- Onboarding tutorial -- VoiceOver accessibility support -- MIT License and project documentation +- Announcement covering build 8 and the move to unit pricing. +- FAQ entries on unit pricing, optional size capture, receipt verification, and data storage. +- Notes above the screenshot carousel and walkthrough videos flagging that they show an earlier + build. ### Fixed -- OCR price detection with spatial analysis (Session 25) -- Multi-line receipt format support (Session 16) -- Data import security-scoped resource access (Session 26) -- PDF page layout overlapping (Session 26) -- Image viewer first-tap loading (Session 26) +- The pre-JavaScript status banner fallback still read "Coming Soon! GF PriceChecker is currently in + development" on five of six pages, contradicting the beta call to action alongside it whenever + JavaScript was slow, blocked, or disabled. +- Announcements rendered as a single unbroken block with Markdown links shown as literal text. + Paragraph handling now uses the same `preserveLineBreaks` helper as the blog, promoted from + `blog-loader.js` into the shared `utils.js`. +- The home page printed the entire text of the latest announcement instead of a preview. +- Every blog post and announcement date displayed one day early for readers west of UTC — including + everyone in Canada. `YYYY-MM-DD` strings were parsed as UTC midnight and then rendered in local + time; they're now built as local dates. +- Stale `lastmod` dates in `sitemap.xml`; `blog.html` claimed January while carrying posts through + August. + +--- + +## [1.1.0] - 2026-08-12 + +Pre-overhaul snapshot: the site as it stood before the content rewrite above. -### Known Issues -- OCR accuracy varies with lighting conditions -- Fuzzy matching may need tuning for non-Sobeys receipts +### Added +- Beta page with TestFlight instructions, testing focus areas, and the public join link. +- Developer blog rendered from `data/blog.json`, with a GitHub Actions workflow that emails a + reminder to write one whenever a pull request merges. +- Three walkthrough videos with poster images, and a fourteen-slide screenshot carousel. +- "Why GF PriceChecker Exists" section on the home page covering the Medical Expense Tax Credit and + Celiac Canada's advocacy. +- Cloudflare Web Analytics across all pages. +- Custom domain via `CNAME`. + +### Changed +- Extracted the navigation and footer into runtime-injected components under `components/`. +- Extracted shared helpers into `assets/js/utils.js` (`fetchJSON`, `escapeHtml`, `formatDate`, + `renderEmptyState`, `renderCard`). +- Site-wide status moved from "coming soon" to public beta. -## Release Notes +## [1.0.0] - 2026-01-03 -No releases yet. App currently in field testing phase. +Initial public site. + +### Added +- Home, features, announcements, FAQ, privacy, and terms pages. +- JSON-driven content system for announcements, FAQ entries, and the status banner. +- Design system with shared tokens (`DESIGN-SYSTEM.md`), base and component stylesheets. +- SEO metadata, Open Graph tags, JSON-LD structured data, `sitemap.xml`, and `robots.txt`. +- Accessibility pass: skip links, ARIA labelling, keyboard-navigable carousel. +- MIT license. diff --git a/Claude.md b/Claude.md index 6eabec5..c7907c9 100644 --- a/Claude.md +++ b/Claude.md @@ -42,6 +42,7 @@ This project follows **DESIGN-SYSTEM.md** guidelines: / ├── index.html # Home page ├── features.html # Features page with carousel +├── beta.html # TestFlight beta instructions ├── blog.html # Developer blog posts ├── announcements.html # News and updates page ├── faq.html # Frequently asked questions @@ -50,17 +51,20 @@ This project follows **DESIGN-SYSTEM.md** guidelines: ├── sitemap.xml # XML sitemap for SEO ├── robots.txt # Search engine crawl rules ├── CNAME # GitHub Pages custom domain -├── README.md # GitHub repository description +├── README.md # How the site is built, run, and added to +├── CHANGELOG.md # Site release history and versioning approach ├── Claude.md # This file - project documentation ├── DESIGN-SYSTEM.md # Design guidelines and tokens ├── Documents/ -│ ├── EXECUTION_PLAN.md # Phased implementation plan -│ └── TECHNICAL_REQUIREMENTS.md # Technical specifications +│ └── archive/ # Original build plans (historical) +│ ├── EXECUTION_PLAN.md +│ └── TECHNICAL_REQUIREMENTS.md ├── assets/ │ ├── css/ │ │ ├── base.css # Design tokens, reset, utilities │ │ └── components.css # Component library styles │ ├── js/ +│ │ ├── utils.js # Shared helpers (window.GFUtils) - load first │ │ ├── main.js # Mobile nav, component initialization │ │ ├── components.js # Component loader for navbar/footer │ │ ├── content-loader.js # Dynamic content from JSON @@ -309,27 +313,81 @@ Dynamic content will be managed via JSON files in `/data/`: --- -## Placeholders and Future Work +## Content Conventions -### Current Placeholders -- ❌ Logo files (need SVG and PNG) -- ❌ App screenshots (12+ images for carousel) -- ❌ Instructional videos (MP4, <50MB, 720p) -- ❌ Cloudflare Analytics token (in index.html) -- ❌ Open Graph image -- ❌ Favicon +### Don't claim tax compliance -### Future Pages (Phase 3) -- features.html -- announcements.html -- faq.html -- privacy.html -- terms.html +The app deliberately carries no Canada Revenue Agency branding in its interface. Agency references +and specific tax line numbers were stripped out in April 2026 — tracking price differences is what +the app does, and what a user does with those records at tax time is between them and their +accountant. **The site follows the same rule.** -### Future Features (Phase 4) -- Horizontal screenshot carousel with stacked effect -- HTML5 video player for instructional content -- Lazy loading for images +- Explain the Medical Expense Tax Credit as context for why the app exists. That's fair and useful. +- Never describe the app's exports as CRA-compliant, approved, accepted, or endorsed. +- Never promise anyone a deduction. Where it's relevant, mention that the credit only applies to + medical expenses above roughly 3% of net income — a modest year may not reach it. + +Before merging copy changes, sweep for regressions: + +``` +grep -rn "CRA\|Tax Compliant\|tax compliance\|Line 33099" --include=*.html --include=*.json . +``` + +Every surviving hit should be explanatory context, never a claim about the app's output. + +### Describe the app as it currently works + +The headline metric is the **unit price differential** — cost per unit, scaled back to the size +actually purchased — not the package-to-package difference, which is kept beside it for reference. +Copy that leads with package price is out of date. Likewise, capturing a product is a single review +screen with three steps (name, price, size), and **size is optional**. Don't describe it as +mandatory or as a separate screen. + +When the app changes, the blog gets updated first (there's a GitHub Actions reminder on every merged +PR). The static pages have no such prompt and are the ones that quietly rot — check them against +`data/blog.json` and the app's release notes whenever a feature lands. + +### Don't overclaim on privacy either + +Local-only storage, on-device text recognition, no accounts, no sync: all true, all worth saying. +But backup files are **not** encrypted. Don't say they are. + +--- + +## Outstanding Work + +The original launch placeholders — logo, favicon, Open Graph image, Cloudflare Analytics token, +screenshots, and videos — were all resolved during January 2026, and every page planned in the +original build now exists (plus `beta.html` and `blog.html`, which came later). What follows is +what's actually outstanding. + +### Media is out of date +The three walkthrough videos were recorded January 17–24 2026 and the majority of the carousel +screenshots on January 3. Both predate the move to unit pricing as the headline figure (April 2026) +and the rebuilt three-step capture review (July 2026), so they show screens that no longer exist. +Both sections carry a `.media-note` saying so. Replacing them needs a device or simulator session: + +- Re-record the three walkthroughs against the current build. +- Re-capture screenshots 08–14 (capture flow, receipt views, product detail, list, export, + dashboard). +- Keep video files under 50MB — `receipt-management.mp4` is already at 49MB. + +### Videos have no captions +No VTT track exists for any video. This was deferred at launch and is still open; it's the site's +most significant remaining accessibility gap. + +### Canonical domain is inconsistent +`CNAME` holds `www.gfpricechecker.com`, but every canonical link, Open Graph URL, JSON-LD entry, +sitemap URL, and `robots.txt` reference uses the bare `gfpricechecker.com`. One of the two is wrong. +Pick the canonical host, then sweep all of them to match. + +### Legal review +`privacy.html` and `terms.html` were revised on January 25 2026 and no longer carry placeholder +banners, but they have never had professional legal review. + +### Not built +A community product database was once advertised on the features page as "Planned". It was never +built and the card has been removed rather than left promising something that isn't coming. --- @@ -586,80 +644,12 @@ This project strictly follows DESIGN-SYSTEM.md: ### Placeholder Content Status -**Assets Requiring Replacement Before Launch**: - -1. **Logo Files** (Priority: HIGH): - - Location: `/assets/images/logos/` - - Required formats: SVG (primary), PNG (fallback) - - Currently: Placeholder references in HTML - - Used on: All 6 pages in navbar - -2. **App Screenshots** (Priority: MEDIUM): - - Location: `/assets/images/screenshots/` - - Required: 12+ screenshots (9:16 aspect ratio, iPhone format) - - Current state: Placeholder via.placeholder.com images - - Used on: features.html carousel - - Replacement instructions: Update `data-src` attributes in features.html:103-161 - -3. **Instructional Videos** (Priority: LOW): - - Location: `/assets/video/` - - Required files: - - `getting-started.mp4` - - `price-tracking.mp4` - - `receipt-management.mp4` - - `tax-reports.mp4` - - Requirements: MP4 format, H.264 codec, 720p max, <50MB each - - Current state: Placeholder poster images, video files referenced but not present - - Used on: features.html video grid - -4. **Open Graph Image** (Priority: MEDIUM): - - Location: `/assets/images/og-image.png` - - Recommended size: 1200x630px - - Current state: Referenced in meta tags but file doesn't exist - - Used on: All pages for social media sharing - -5. **Favicon** (Priority: LOW): - - Location: `/assets/images/favicon.png` - - Current state: Referenced but file doesn't exist - - Used on: All pages - -6. **Cloudflare Analytics Token** (Priority: HIGH): - - Location: HTML `
` section of all pages - - Current state: Commented out with "TODO" note - - Action required: Replace "YOUR_TOKEN_HERE" with actual Cloudflare site tag - - Affects: All 6 pages - -### JSON Data Files Status - -**✅ status.json**: -- Current state: "coming-soon" -- Message: "Coming Soon! GF PriceChecker is currently in development." -- Status: Ready for launch -- No changes needed - -**✅ announcements.json**: -- Contains launch announcement dated 2026-01-02 -- Status: Ready for launch -- Future updates: Add new announcements to array as needed - -**✅ faq.json**: -- Contains 3 comprehensive FAQ items -- Covers: What is GF PriceChecker, tax deductions, availability -- Status: Ready for launch - -### Legal Content Status - -**⚠️ privacy.html**: -- Status: **PLACEHOLDER - REQUIRES LEGAL REVIEW** -- Prominent note displayed: "This is placeholder content. Final privacy policy will be prepared with legal review before app launch." -- Last updated: January 2, 2026 -- Action required: Professional legal review and finalization before app launch - -**⚠️ terms.html**: -- Status: **PLACEHOLDER - REQUIRES LEGAL REVIEW** -- Prominent note displayed: "This is placeholder content. Final terms of use will be prepared with legal review before app launch." -- Last updated: January 2, 2026 -- Action required: Professional legal review and finalization before app launch +> **Historical.** This section recorded the state of the site at the end of the January 2026 build, +> when the logo, screenshots, videos, Open Graph image, favicon, and Cloudflare Analytics token were +> all still outstanding, and `privacy.html` and `terms.html` carried placeholder banners. All of +> those were resolved during January 2026 — the analytics token is live on every page and the legal +> placeholder banners are gone. For what is genuinely still open, see +> [Outstanding Work](#outstanding-work) above. ### Final Validation Checks @@ -715,15 +705,8 @@ This project strictly follows DESIGN-SYSTEM.md: - [x] All links tested and functional - [x] Legal content flagged for review -**Pending Tasks (Before Production Launch)**: -- [ ] Replace logo placeholder with actual logo files -- [ ] Add Cloudflare Web Analytics token to all pages -- [ ] Add Open Graph image for social sharing -- [ ] Add favicon -- [ ] Privacy policy: Professional legal review and finalization -- [ ] Terms of use: Professional legal review and finalization -- [ ] Optional: Add app screenshots (can use placeholders initially) -- [ ] Optional: Add instructional videos (can use placeholders initially) +**Pending Tasks**: every item on this list except legal review was completed during January 2026. +See [Outstanding Work](#outstanding-work) above for what remains. **Deployment Notes**: - GitHub Pages will serve from `main` branch root directory @@ -763,11 +746,17 @@ This project strictly follows DESIGN-SYSTEM.md: ## Contact & Support **Repository**: https://github.com/CuWilliams/GFPriceChecker.github.io -**Documentation**: See `Documents/` folder for detailed requirements and execution plan +**Getting started**: See `README.md` for how the site is built, run locally, and added to **Design Guidelines**: See `DESIGN-SYSTEM.md` for design tokens and patterns +**Release history**: See `CHANGELOG.md` for the versioning approach and past releases +**Original build plans**: See `Documents/archive/` — historical, kept for reference only --- -*Last Updated: January 2, 2026 - All Phases Complete (1-6)* +*Last Updated: August 12, 2026* -**Project Status**: Ready for deployment with noted placeholders. Legal content requires professional review before app launch. +**Project Status**: Live at [gfpricechecker.com](https://gfpricechecker.com), serving an app in +public TestFlight beta. The Phase 1–6 sections below the design and conventions material are a +historical record of the January 2026 build, not a description of the site today. Outstanding items +are listed under [Outstanding Work](#outstanding-work): media showing an older build, missing video +captions, the `www` vs. bare-domain inconsistency, and legal review. diff --git a/Documents/EXECUTION_PLAN.md b/Documents/archive/EXECUTION_PLAN.md similarity index 96% rename from Documents/EXECUTION_PLAN.md rename to Documents/archive/EXECUTION_PLAN.md index 2b2e185..791d461 100644 --- a/Documents/EXECUTION_PLAN.md +++ b/Documents/archive/EXECUTION_PLAN.md @@ -1,3 +1,9 @@ +> **Archived — historical record.** This is the phase-by-phase plan used to build the site in +> January 2026. All six phases were completed and the site has changed considerably since. It is +> kept as a record of how the site was originally constructed; it does not describe the site as it +> stands today. For current documentation see [README.md](../../README.md) and +> [Claude.md](../../Claude.md). + # GF PriceChecker Website - Execution Plan **Version:** 1.0 diff --git a/Documents/TECHNICAL_REQUIREMENTS.md b/Documents/archive/TECHNICAL_REQUIREMENTS.md similarity index 93% rename from Documents/TECHNICAL_REQUIREMENTS.md rename to Documents/archive/TECHNICAL_REQUIREMENTS.md index bc625f5..341f312 100644 --- a/Documents/TECHNICAL_REQUIREMENTS.md +++ b/Documents/archive/TECHNICAL_REQUIREMENTS.md @@ -1,3 +1,8 @@ +> **Archived — historical record.** These are the requirements the site was originally built +> against in January 2026. They were met, and the site has changed considerably since. Kept as a +> record of the original brief; it does not describe the site as it stands today. For current +> documentation see [README.md](../../README.md) and [Claude.md](../../Claude.md). + # GF PriceChecker Website - Technical Requirements Document **Version:** 1.0 diff --git a/README.md b/README.md index 2b66d7d..ad6a0ce 100644 --- a/README.md +++ b/README.md @@ -1,96 +1,102 @@ -# GFPriceChecker +# GFPriceChecker.github.io -iOS app for tracking gluten-free vs regular product price differentials for Canadian tax deductions. +The marketing and documentation website for **GF PriceChecker**, an iOS app that helps Canadians measure and document the price premium on gluten-free groceries. -## Overview +Live at [gfpricechecker.com](https://gfpricechecker.com). The app itself lives in a separate repository: [CuWilliams/GFPriceChecker](https://github.com/CuWilliams/GFPriceChecker). -GFPriceChecker helps individuals with celiac disease document the price difference between gluten-free and regular products for Canadian Revenue Agency (CRA) medical expense claims. The app provides camera-based OCR scanning, receipt verification, and professional PDF/CSV export reports. +## How the site is built -## Status +A static site served directly by GitHub Pages from the root of `main`. There is **no build step, no bundler, and no dependencies** — hand-authored HTML, CSS, and vanilla JavaScript. Push to `main` and it deploys. -**Active Development** - Currently in field testing and refinement. +Two ideas do most of the work: -This is a personal project built primarily for family use, made available to the broader celiac community at no cost. +**Shared components are fetched at runtime.** Every page contains `` and ``. On load, `assets/js/components.js` fetches `components/navbar.html` and `components/footer.html` and injects them, then re-runs the nav initializers from `main.js` against the newly inserted DOM. Edit the nav or footer once, in `components/`, and every page picks it up. -## Features +**Content that changes often lives in JSON.** Blog posts, announcements, FAQ entries, and the status banner are data files under `data/`, rendered client-side by `content-loader.js` and `blog-loader.js`. Adding a post means editing JSON, not HTML. -- Manual product entry with price comparison -- Camera scanning with OCR for shelf price tags and receipts -- Receipt verification and product matching -- PDF and CSV export for CRA tax filing -- Data backup/restore -- No ads, no tracking, completely free +## Layout -## Requirements +``` +├── index.html # Home +├── features.html # What the app does, screenshots, walkthrough videos +├── beta.html # TestFlight instructions and testing focus areas +├── blog.html # Developer blog (rendered from data/blog.json) +├── announcements.html # Release announcements +├── faq.html # Frequently asked questions +├── privacy.html, terms.html # Legal +│ +├── components/ # navbar.html, footer.html — injected at runtime +├── data/ # blog.json, announcements.json, faq.json, status.json +├── assets/ +│ ├── css/ # base.css (tokens, reset, utilities), components.css +│ ├── js/ # utils.js, components.js, content-loader.js, +│ │ # blog-loader.js, main.js +│ ├── images/ # logos, favicon, OG image, screenshots/, video posters +│ └── video/ # walkthrough videos (keep under 50MB each) +│ +├── Documents/archive/ # Historical build plans from the site's construction +├── CHANGELOG.md # Site release history +├── DESIGN-SYSTEM.md # Design tokens and component reference +└── Claude.md # Working notes and conventions for this repo +``` -- **iOS:** 18.0 or later -- **Xcode:** 16.1.1 or later -- **Swift:** 6.0 -- **Device:** iPhone with camera (recommended for OCR features) +Script load order matters: `utils.js` defines `window.GFUtils` and must come before `content-loader.js` and `blog-loader.js`, which consume it. -## Installation +## Running locally -1. Clone the repository ``` -git clone https://github.com/CuWilliams/GFPriceChecker.git +python3 -m http.server 8000 ``` -2. Open project in Xcode -``` -cd GFPriceChecker -open GFPriceChecker.xcodeproj +Then open `http://localhost:8000`. A server is required rather than opening the files directly — the component includes and JSON loading both use `fetch()`, which browsers block on `file://` URLs. + +## Adding content + +**A blog post** — prepend an object to `data/blog.json`: + +```json +{ + "id": "2026-08-12-post-slug", + "date": "2026-08-12", + "title": "Post Title", + "content": "First paragraph.\n\nSecond paragraph." +} ``` -3. Build and run -- Select target device or simulator -- Press `Cmd+R` to build and run +Separate paragraphs with `\n\n`. Content is escaped before rendering, so write plain prose — Markdown is not parsed, and any HTML you include will be shown as literal text. Posts are sorted by date, newest first, so file order doesn't matter. The `id` becomes the anchor (`/blog.html#post-${escapeHtml(withBreaks).replace(/<br>/g, '
')}
${escapeHtml(withBreaks).replace(/<br>/g, '
')}
When testing, pay attention to these areas:
- GF PriceChecker simplifies tracking gluten-free product price differentials, helping Canadians with celiac disease or gluten intolerance maximize their medical expense deductions. + GF PriceChecker measures the real cost premium on gluten-free groceries — comparing cost per unit rather than package to package — and keeps the receipts and photographs that back every figure up.
+ Some of these screenshots were captured in January 2026 and show an earlier build. + The current release leads with the unit price differential and uses a three-step + review when capturing a product. New screenshots are on the way. +
- GF PriceChecker is an iOS app designed specifically for Canadians who need to track the incremental cost of gluten-free products for tax purposes. If you have celiac disease or gluten intolerance, the Canada Revenue Agency (CRA) allows you to claim the price differential between gluten-free and regular products as a medical expense. + GF PriceChecker is an iOS app for Canadians tracking the incremental cost of eating gluten free. For someone with celiac disease, that premium is a medical expense, and Canada's + Medical Expense Tax Credit + recognizes the difference in price between a gluten-free product and its regular equivalent — provided you can document it.
- Our app makes this process simple and accurate, helping you maintain proper documentation and maximize your eligible deductions without the hassle of manual tracking and calculations. + The app's job is the documenting: capture both products, capture both sizes, keep the receipt, and calculate the difference honestly. What you do with those records at tax time is between you and your accountant. The app makes no claim about what you're eligible to deduct, and the credit only applies to medical expenses above a threshold of roughly three percent of net income.
- Easily compare prices between gluten-free and regular equivalent products. Our app calculates the differential automatically, ensuring accurate records for your tax claims. + Gluten-free products don't only cost more — they frequently contain less. A $7.99 400g + gluten-free loaf next to a $3.99 675g regular one looks like a $4.00 gap. Compared by + cost per gram and scaled back to the size you actually bought, the premium is $5.63. + The app leads with that size-adjusted figure everywhere and keeps the plain package + difference alongside it for reference.
- Scan and organize your receipts in one place. Keep digital copies of your purchases with timestamps and categorization for easy retrieval during tax season. + Enter size the way the shelf tag gives it to you: type the package size directly, or + enter the posted unit price and let the app work backwards from it — in cents or + dollars, whichever the tag uses. Size is optional. Skip it when you're in a hurry and + the app simply tells you which items sat out of the unit price totals.
- Generate comprehensive reports that summarize your gluten-free product expenses and calculated differentials. Export-ready formats make filing your taxes straightforward. + Photograph the shelf tag and the app reads it on device. A single review screen walks + you through three steps — tap the product name, tap the price, tap the size — with the + scan results staying in front of you the whole time. Nothing is committed until you + confirm it, and anything the scan misses can be typed in by hand.
- Access a growing database of gluten-free products with price history and equivalents. Save time by leveraging community data while maintaining your personal tracking. + Choose the products from a shopping trip, scan the receipt, then work through them one + at a time, tapping the line on the receipt that matches. The app flags a suggested line + to save you hunting for it. Confirmed products are marked verified and stay linked to + the receipt image, which travels with them into your exports.
- Built with CRA medical expense guidelines in mind. Our reports include the documentation format accepted by the Canada Revenue Agency. + Export a year as a PDF report or a CSV spreadsheet: every product itemized with both + prices, both sizes, both differentials, the purchase date, and the receipt image that + backs it up. Products still lacking a receipt are listed separately rather than + quietly folded into the totals.
- Your financial and health data stays on your device. We prioritize your privacy with local-first storage and optional encrypted backups. + Your financial and health data stays on your device. Text recognition runs on device, + there are no accounts and no cloud sync, and backups are files you control and store + wherever you choose.