About

Why Sunday Album?

Every family has a box of albums. Pages of yellowed, glare-covered prints slowly fading behind plastic sleeves. Sunday Album was built to fix that.

The problem isn't just that old photos fade — it's that digitizing them is genuinely hard. A phone camera pointed at an album page produces one photo: a wide shot of 3 or 4 smaller photos, all behind plastic that throws glare everywhere, with yellowed colors and slightly crooked compositions.

Existing tools solve part of it. Google PhotoScan reduces glare by combining multiple shots. Mobile scanning apps straighten documents. AI upscalers sharpen individual photos. But nobody built the full pipeline — take one photo of the album page, get clean individual digital photos out the other end.

Sunday Album does exactly that. Page detection, perspective correction, multi-photo splitting, AI glare removal via OpenAI diffusion inpainting, color restoration, and auto-orientation — all in sequence, all automated. The same pipeline runs locally on the Mac app and in the cloud on the web app.

It's not a subscription service. The Mac app is free and runs offline. The web app has a free tier and supports BYOK (bring your own API keys) for unlimited usage.

The processing pipeline

  1. 1LoadDecode HEIC, JPEG, PNG, or DNG — apply EXIF orientation
  2. 2NormalizeResize to working resolution; generate thumbnail
  3. 3Page detectGrabCut segmentation finds the album page boundary
  4. 4PerspectiveHomographic warp to fronto-parallel view
  5. 5Photo detectContour detection finds individual photo boundaries
  6. 6Photo splitExtract each photo as its own crop
  7. 7AI orientClaude Haiku detects rotation and gets a scene description
  8. 8Glare removeOpenAI diffusion inpainting removes glare; OpenCV fallback available
  9. 9Color restoreWhite-balance → deyellow → adaptive brightness lift → sharpen

Open, inspectable stack

The processing engine is Python — OpenCV for computer vision, Pillow for image I/O, NumPy for array operations. The web app is Next.js on AWS (App Runner + Step Functions + Lambda). The Mac app is SwiftUI wrapping the same Python CLI.

AI steps use Claude Haiku (Anthropic) for orientation and GPT-image-1.5 (OpenAI) for glare removal. Both steps degrade gracefully when keys are absent — pass-through for orientation, OpenCV fallback for glare.

Questions or feedback?

Sunday Album is a small project. Feedback on what works and what doesn't is genuinely helpful.