I built this after going through the immigration process with my wife twice. Compiling relationship evidence for strict visas (US K-1, UK, Schengen) is incredibly stressful. Couples have to organize hundreds of photos, chat logs, and travel history into consulate-standard A4 PDFs. Generic tools like Word or Canva usually result in massive file sizes, broken formatting, and layout shifts when exporting.
VisaAlbum is a micro-SaaS specifically tuned to solve this one workflow.
Here are a few technical hurdles I had to solve to make it work in the browser:
Browser-Based A4 Rendering: I initially used html2canvas but kept hitting walls with modern CSS. I moved to html-to-image to properly support high-fidelity gradients while respecting exact A4 print dimensions so the final PDF export doesn't shift by a single pixel.
Global Media Deduplication: Uploading 300+ images for an immigration album bloats storage fast. I implemented a client-side SHA-256 content hashing system. Every image is mathematically hashed before upload to prevent redundant files in our Supabase buckets.
Spatial AI Auditing: Instead of just using an LLM to generate captions, I built an "AI Audit Officer." It takes low-res screenshots of the rendered A4 pages and sends them to OpenAI Vision. Because the AI actually sees the spatial layout, it catches empty photo slots and scores the dossier based on target destination rules.
Stack: Next.js 15 (App Router), Tailwind, Supabase (Postgres/RLS), and Stripe.
It's a niche tool, but it solves a very high-stakes problem. I’d love for you to try out the layout builder and tear apart the UX or the rendering engine. Happy to answer questions about the tech stack or the architecture!