Imvoy: Client Gallery Delivery, Proofing & Naira Invoicing Platform
A localized, zero-login client gallery delivery, photo proofing, and invoicing SaaS built specifically for Nigerian photographers.

Bridging high-ticket craft and low-friction delivery
Nigerian wedding, studio, and commercial photographers regularly charge ₦150,000–₦500,000 per shoot, yet deliver their deliverables through compressed WhatsApp threads or confusing Google Drive trees, chasing balances with raw bank account numbers pasted in chat. Foreign alternatives like Pixieset demand fluctuating USD subscriptions and force non-technical clients to create accounts.
Imvoy eliminates this friction through a unified, 10-minute web workflow combining direct Cloudflare R2 uploads, zero-login public magic links, interactive proofing selects, decoupled private invoicing, and native Paystack subscription rails.
Direct Cloudflare R2 presigned streaming + Zero-login magic links + Decoupled private invoicing = 100% client access completion and zero compression complaints.
Two user archetypes, five structural bottlenecks
In Nigeria's creative economy, photography is an experience business built heavily on referrals and social prestige. The workflow involves two distinct user archetypes:
High Volume & Disparate Apps
Managing rapid shoot schedules, gigabyte-heavy RAW/JPEG exports, proofing revisions, and fragmented payment tracking across disparate banking apps.
Mobile Webview & Mobile Data
Couples, corporate marketing leads, and family members viewing galleries on budget Android devices or iPhones directly within the WhatsApp in-app browser over fluctuating mobile networks.
THE 5 REAL PROBLEMS IN PRODUCTION
Compression & Quality Loss
Delivering high-res deliverables over WhatsApp severely degrades photo quality, generating persistent client complaints.
Access Barriers & Drop-Off
Google Drive links require Google accounts, present difficult multi-folder navigation on mobile screens, and strip away studio branding.
Proofing Chaos
Selecting client favorites for post-processing has historically involved messy WhatsApp text strings (e.g., 'give me 004, 019, 022, 114'), leading to miscommunication and delayed print production.
Financial Exposure & Invoicing Friction
Photographers paste bank account numbers into chat threads. When an invoice is bundled into a general gallery link, forwarding the link to friends and wedding guests exposes confidential contract pricing.
Foreign SaaS Barriers
Western tools charge recurring USD pricing that surges with local currency devaluation and relies on virtual cards that frequently fail on recurring debits.
Field findings across 7 studios & 5 communities
Field discovery was conducted through qualitative interviews with 7 professional studio, corporate, and wedding photographers, followed by structured workflow audits across 5 active Nigerian photography communities.
4 out of 5 photographers used WhatsApp or Google Drive as primary pipeline despite client friction.
Replace unstructured folders with an editorial masonry gallery optimized for mobile and webview rendering.
5 out of 5 respondents typed bank details into WhatsApp chats; tracking balances was completely manual.
Build an automated, dedicated invoice screen that auto-populates Nigerian bank details from the photographer's profile.
Reviewing selections required manual cross-referencing between chat lists and Lightroom catalogs.
Implement an in-gallery, heart/checkmark interactive selection engine with a live floating quota counter.
Non-technical clients regularly dropped off or requested re-sends when prompted to register accounts.
Enforce a strict Zero-Login Architecture using cryptographically secure magic links that resolve instantly on mobile.
100% of survey respondents confirmed positive purchase intent for a flat ₦2,500–₦5,000 monthly tier over variable USD.
Standardize localized pricing at ₦3,500/month natively billed via Paystack debit rails.
| Area Investigated | Direct Evidence & Data | Design Implication |
|---|---|---|
| Delivery Methods | 4 out of 5 photographers used WhatsApp or Google Drive as primary pipeline despite client friction. | Replace unstructured folders with an editorial masonry gallery optimized for mobile and webview rendering. |
| Payment Handling | 5 out of 5 respondents typed bank details into WhatsApp chats; tracking balances was completely manual. | Build an automated, dedicated invoice screen that auto-populates Nigerian bank details from the photographer's profile. |
| Proofing Workflow | Reviewing selections required manual cross-referencing between chat lists and Lightroom catalogs. | Implement an in-gallery, heart/checkmark interactive selection engine with a live floating quota counter. |
| Client Authentication | Non-technical clients regularly dropped off or requested re-sends when prompted to register accounts. | Enforce a strict Zero-Login Architecture using cryptographically secure magic links that resolve instantly on mobile. |
| Pricing Validation | 100% of survey respondents confirmed positive purchase intent for a flat ₦2,500–₦5,000 monthly tier over variable USD. | Standardize localized pricing at ₦3,500/month natively billed via Paystack debit rails. |
Architecture trade-offs that solved edge-case friction
Building for low-bandwidth mobile devices in Nigeria required rigorous trade-offs between authentication, cloud compute, and security:
The “One Creation Flow, Two Links” Architecture
The Challenge: Providing a public, shareable gallery for family and event guests without exposing confidential pricing or invoice terms.
Options Considered: A single password-protected gallery housing photos and billing side-by-side vs. a single creation engine that splits out two independent, cryptographically signed URLs.
My Reasoning: A single portal either forces the couple to share financial details with wedding guests, or causes guests to constantly ask the couple for gallery access passwords.
The Consequence: The unified creation flow generates two independent tokens: a public, view-only Magic Link Gallery meant for wide social sharing, and an isolated Private Invoice Link strictly for the paying client.

In-Gallery Proofing with Floating Selection Quotas
The Challenge: Enabling clients to pick their retouched favorites directly on mobile without breaking the zero-login requirement.
Options Considered: Forcing client account creation to persist favorites in a database session vs. local-storage backed state paired with signed session cookies and one-tap payload submissions.
My Reasoning: Forcing account creation kills the completion rate for mobile-first clients browsing over lunch or in transit.
The Consequence: Built an interactive, tap-to-select interface directly within the gallery lightbox. A sticky floating pill tracks picks in real-time against agreed quotas (e.g., “18 of 25 selected”). On submit, it routes an automated selection manifest directly to the photographer's dashboard and email.


Direct-to-Cloudflare R2 Presigned Upload Pipeline
The Challenge: Supporting multi-gigabyte batch uploads of uncompressed JPEG/RAW shoots without crashing serverless compute or incurring unsustainable egress fees.
Options Considered: Standard multipart form uploads processed through Next.js server actions vs. client-to-bucket direct presigned streaming via Cloudflare R2 object storage.
My Reasoning: Routing large image payloads through application compute risks Vercel serverless timeouts and inflates bandwidth costs.
The Consequence: Imvoy's upload engine requests short-lived presigned upload URLs, streaming photos directly from the photographer's local device to Cloudflare R2 at $0/GB egress, featuring granular per-photo progress bars and network retry logic.
Lifecycle State Machine for Shoot Visibility
The Challenge: Photographers lose track of whether a client opened a link, selected favorites, or defaulted on balance payments.
Options Considered: Generic unstructured status tags (Active, Completed) vs. a deterministic 8-stage state machine tracking exact client interactions.
My Reasoning: Real control requires tracking behavioral inflection points so photographers know exactly when to follow up.
Links created and ready; not yet delivered to client.
System initializes gallery & invoice records upon upload completion.
--color-status-generated (Neutral)Photographer shares the gallery link with the client (via WhatsApp or link copy).
Photographer triggers share action or copies shareable URL.
--color-status-active (Blue)Client visits the public gallery URL (/a/[token]).
Client opens link; system logs GalleryStatusEvent (status: 'viewed').
--color-status-pending (Amber)Client finishes selecting favorite photos and submits proofing list.
Client taps submit in proofing drawer; in-app notification sent.
--color-status-pending (Amber)Photographer dispatches the private invoice link.
Photographer sends or copies private invoice URL (/i/[token]).
--color-status-active (Blue)Client opens the private invoice link to see breakdown and banking details.
Client accesses invoice page; system logs view event.
--color-status-pending (Amber)Photographer confirms payment receipt (bank transfer) and marks job settled.
Photographer clicks 'Mark as Paid' from dashboard or invoice view.
--color-status-complete (Green)Engagement concluded; shoot moved out of active tracking view.
Photographer archives the job.
--color-status-neutral (Grey)| Stage | Trigger / Meaning | Actor / System Action | UI Token Mapping |
|---|---|---|---|
| 1. Generated (or Draft) | Links created and ready; not yet delivered to client. | System initializes gallery & invoice records upon upload completion. | --color-status-generated (Neutral) |
| 2. Gallery Sent | Photographer shares the gallery link with the client (via WhatsApp or link copy). | Photographer triggers share action or copies shareable URL. | --color-status-active (Blue) |
| 3. Gallery Opened | Client visits the public gallery URL (/a/[token]). | Client opens link; system logs GalleryStatusEvent (status: "viewed"). | --color-status-pending (Amber) |
| 4. Proofing Complete | Client finishes selecting favorite photos and submits proofing list. | Client taps submit in proofing drawer; in-app notification sent. | --color-status-pending (Amber) |
| 5. Invoice Sent | Photographer dispatches the private invoice link. | Photographer sends or copies private invoice URL (/i/[token]). | --color-status-active (Blue) |
| 6. Invoice Viewed | Client opens the private invoice link to see breakdown and banking details. | Client accesses invoice page; system logs view event. | --color-status-pending (Amber) |
| 7. Paid | Photographer confirms payment receipt (bank transfer) and marks job settled. | Photographer clicks "Mark as Paid" from dashboard or invoice view. | --color-status-complete (Green) |
| 8. Archived | Engagement concluded; shoot moved out of active tracking view. | Photographer archives the job. | --color-status-neutral (Grey) |
Systems architecture & AI-assisted delivery
[Photographer Dashboard] │ (Single 10-Min Creation Flow) │ ┌───────────────────────┼───────────────────────┐ ▼ ▼ ▼ [Cloudflare R2] [Magic Link Engine] [Paystack Engine] (Presigned Direct) (Zero-Login Web Token) (Bank Token / ₦ Billing) │ │ │ ▼ ▼ ▼ [Original Quality] [Masonry Gallery + [Private Invoice Page + (Byte-for-Byte) Proofing Selection] PDF Receipts & Status]
1. Unified Tokenized Design System
Designed in Figma, exported and structured into tokenized JSON, and compiled directly into CSS custom properties and Tailwind tokens using Antigravity:
- Typography Scale: Outfit typography system following Material Design principles, mapped across strict display, headline, title, body, and label hierarchies for effortless scannability and clear visual weight on mobile screens.


2. Mobile-First Ergonomics & WhatsApp Webview Optimization
Over 70% of gallery traffic originates from WhatsApp links on Android and iOS devices. Imvoy incorporates:
- Dynamic Social Previews: Automated OpenGraph meta engines pull designated hero cover images, providing rich previews when shared in WhatsApp chats.
- Masonry Grid Performance: Pure CSS column masonry with lightweight intersection observers, deferring full-resolution loading until the lightbox is explicitly engaged.
- Zero-Touch Client Lightbox: Large touch targets, full-screen swipeable carousels, and dual download triggers (single full-res photo vs. full shoot ZIP bundle).
3. Documentation-Driven AI Engineering with Antigravity
Governed through a strict multi-tier context and constraint architecture. Rather than ad-hoc prompting, Antigravity operated as an autonomous software engineer adhering to non-negotiable PRD boundaries, machine-readable design tokens, and verified QA matrices:
Five pillars of the finished platform
1. Photographer Command Center & Real-Time Tracker
OBJECTIVE:Deliver complete visibility over shoots, revenue, proofing actions, and client engagements at a single glance.
CAPABILITIES:Live stat cards (invoiced volume, client views, active galleries), deterministic lifecycle tags, and a Direct Action Toolbar with one-tap copyable links and pre-formatted WhatsApp payment reminder templates.


2. Guided Shoot Creation Flow (<10 Minutes)
OBJECTIVE:Unify gallery delivery, proofing setups, branding, and billing into one linear session.
CAPABILITIES:Step-by-step wizard capturing client data, drag-and-drop batch asset uploads with real-time error handling, hero cover image selection, proofing quota toggles, and itemized naira balance breakdowns.



3. Private Invoicing & Bank Detail Automation
OBJECTIVE:Streamline payment collection without awkward chat-based follow-ups.
CAPABILITIES:Standalone private URL displaying itemized shoot charges, auto-populated Nigerian bank account details (Bank Name, Account Number, Account Name) with one-click copy buttons, downloadable PDF invoices, and an instant manual 'Mark as Paid' status toggle.


4. Studio White-Label Customization & Workspace Architecture
OBJECTIVE:Elevate the photographer's brand authority with high-paying commercial and wedding clients.
CAPABILITIES:Permanent admin access, studio subscription tiering, storage management, billing schedules, and custom brand profiles.

5. High-Converting Landing Page & Product Positioning
OBJECTIVE:Position Imvoy as the premier luxury OS for Nigerian studio photographers directly on the public homepage.
CAPABILITIES:Editorial acquisition homepage framing the 3-step delivery journey, interactive demo gallery previews, and transparent pricing in Naira.

Commercial & operational milestones
Successfully settled for Nigerian photographers through structured client invoicing and direct bank settlements.
Organic distribution across Lagos (46%), Abuja (28%), Port Harcourt (14%), and Diaspora (London & NYC: 12%).
Byte-for-byte image integrity preserved with zero file compression complaints across 219 completed client galleries.
Zero customer support tickets regarding account registration, lost passwords, or link access failures.

“As a photographer, I was facing two major challenges: invoicing and the automatic deletion of albums after they expired. IMVOY solved both by making invoicing seamless and allowing albums to be archived after a set period instead of being deleted. I love the overall experience, the easy navigation, and the subtle branding options for my business.”
“Using Imvoy has greatly improved the way I deliver photos to my clients. It's professional, user-friendly, and makes the entire delivery process seamless. All I need to do is log in, upload the images, copy the link, and send it to my clients. Simple and efficient. One of my favorite features is the invoice creator, which helps me manage payments professionally while keeping everything organized in one place. If you're a photographer looking for a better way to deliver galleries and manage client interactions, Imvoy is definitely worth trying.”
“Enjoying it very well, so easy and smooth. My customers appreciate it. They say, this is a professional vibes 💯”
What I learned & what's next
Engineering Decisions Define User Experience
Choosing direct-to-bucket Cloudflare R2 uploads wasn't just an infrastructure choice—it unlocked the core product proposition: allowing clients to download original, full-resolution files without blowing up server bandwidth costs.
Remove Authentication to Drive Completion
B2B SaaS conventional wisdom often insists on user registration. In emerging markets where sharing happens on WhatsApp, zero-login magic links with signed tokens eliminated onboarding drop-off completely.
Local Context Demands Native Mechanics
Western platforms build around credit cards and USD pricing. In Nigeria, combining Paystack recurring subscriptions (₦3,500/mo) with pre-populated local bank details on private invoices proved to be the core driver of user conversion.