User Guide

How to use ExpDater to track expiration dates and get notified by SMS and/or Email.

On this page

What “OCR” means

In this context, OCR stands for Optical Character Recognition, a technology that converts text in images into machine-readable text. When we say “We OCR it to extract dates,” it means the software automatically finds and pulls out date information from your uploaded image (e.g., a scanned receipt or form). This eliminates manual data entry, making the process faster and reducing errors.

Quick Start

  1. Open Home and create a user with your Email and optional Phone. Note your User ID.
  2. Click SMS & Email in the top navigation to save your phone and send test messages.
  3. Use either:
    • Capture to snap a photo of a bill, ID, or document, or
    • the Upload section on Home to choose a file (JPG/PNG/PDF).
    Enter your User ID, optionally set an alert date, tick SMS and/or Email, and submit to receive alerts.
Tip: Use the “Notification preferences” buttons (SMS / Email / Both) on the Home page to prefill the checkboxes on Capture/Upload.

Capture or Upload & process a document

ExpDater supports two equivalent ways to send a document into the system:

Both flows feed into the same OCR + reminder pipeline; they only differ in how the file is selected.

Capture / Upload (camera-first flow)

From the Capture page you’ll see a form like:

Capture / Upload
Snap a photo of the document (or choose from your library). Optionally set the alert date manually.

When you click Submit:

Upload & process a document (file-first flow)

  1. Enter your User ID (shown after you create a user).
  2. Choose the file (JPG/PNG/PDF). We OCR it to extract dates (e.g., “expires 2026-03-15”).
  3. Optionally set the Alert date manually if you don’t want OCR to guess the date.
  4. Choose SMS alerts and/or Email alerts for this upload.
  5. Click Process. You’ll see results and we’ll schedule reminders based on ALERT_INTERVAL_DAYS.

Configure SMS & Email

Go to SMS & Email settings (from the top navigation):

Note: For US local sender numbers, ensure A2P 10DLC registration is complete on Twilio to avoid filtering.

Reminder schedule (how often we notify)

ExpDater schedules reminders relative to the expiration date (either user-specified or OCR-detected from Capture/Upload). The cadence is controlled by ALERT_INTERVAL_DAYS in your .env.

Default (as shipped):

# .env
ALERT_INTERVAL_DAYS=30,14,7,3,1

Customize examples:

# include a same-day reminder
ALERT_INTERVAL_DAYS=30,14,7,3,1,0

# include overdue nudges (1 and 3 days after)
ALERT_INTERVAL_DAYS=30,14,7,3,1,0,-1,-3

Which channels send? For each upload or capture, your selections map to flags: should_sms and/or should_email. If no date is detected, no reminders are scheduled. Each document schedules its own reminders (no deduplication by default).

Apply changes: after editing .env, restart the scheduler to pick up the new cadence:

docker compose up -d --build scheduler
Want a consistent time-of-day (e.g., 9am local) for reminders? You can extend the scheduler to support something like ALERT_HOUR_LOCAL.

Notification preferences

On the Home page, pick SMS only, Email only, Both, or None. This saves locally (browser storage) and fills the Email/SMS reminder checkboxes automatically on both Capture and Upload forms.

FAQ & Troubleshooting

I didn’t receive the SMS.

I didn’t receive the email.

Capture/Upload fails or doesn’t detect dates.

Privacy & storage

Need help? Reach out to support or check the API Docs for programmatic integration.