CALIBRATING GRID [ 00% → 100% ]
[01 INDEX]CASE STUDY // 01
imvoy
ROLELead Product Designer & Design Engineer(Solo 0→1 Ownership)
TIMELINE6 MonthsDiscovery to Launch
TOOLSFigma · Antigravity · Claude · Next.js · Cloudflare R2 · Paystack
IMPACT₦2M+ Generated · 4.5k Downloads21 Active Photographers

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.

Imvoy photographer studio OS dashboard
₦2,021,546+Client Invoice Volume generated across shoots
4,290+Client Gallery Views (46% Lagos, 28% Abuja)
3,461Full-Resolution Downloads (100% quality preserved)
219Production Galleries shipped across 21 photographers
[01 // THE HOOK]

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.

CORE VALUE EQUATION

Direct Cloudflare R2 presigned streaming + Zero-login magic links + Decoupled private invoicing = 100% client access completion and zero compression complaints.

[02 // CONTEXT & PROBLEM]

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:

POWER USER // THE PHOTOGRAPHER

High Volume & Disparate Apps

Managing rapid shoot schedules, gigabyte-heavy RAW/JPEG exports, proofing revisions, and fragmented payment tracking across disparate banking apps.

END CONSUMER // CLIENT & EXTENDED CIRCLE

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

01

Compression & Quality Loss

Delivering high-res deliverables over WhatsApp severely degrades photo quality, generating persistent client complaints.

02

Access Barriers & Drop-Off

Google Drive links require Google accounts, present difficult multi-folder navigation on mobile screens, and strip away studio branding.

03

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.

04

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.

05

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.

[03 // DISCOVERY]

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.

Qualitative Research Matrix: Studio & Community Findings
7 Studios · 5 Groups
Delivery Methods01
DIRECT EVIDENCE & DATA

4 out of 5 photographers used WhatsApp or Google Drive as primary pipeline despite client friction.

DESIGN IMPLICATION

Replace unstructured folders with an editorial masonry gallery optimized for mobile and webview rendering.

Payment Handling02
DIRECT EVIDENCE & DATA

5 out of 5 respondents typed bank details into WhatsApp chats; tracking balances was completely manual.

DESIGN IMPLICATION

Build an automated, dedicated invoice screen that auto-populates Nigerian bank details from the photographer's profile.

Proofing Workflow03
DIRECT EVIDENCE & DATA

Reviewing selections required manual cross-referencing between chat lists and Lightroom catalogs.

DESIGN IMPLICATION

Implement an in-gallery, heart/checkmark interactive selection engine with a live floating quota counter.

Client Authentication04
DIRECT EVIDENCE & DATA

Non-technical clients regularly dropped off or requested re-sends when prompted to register accounts.

DESIGN IMPLICATION

Enforce a strict Zero-Login Architecture using cryptographically secure magic links that resolve instantly on mobile.

Pricing Validation05
DIRECT EVIDENCE & DATA

100% of survey respondents confirmed positive purchase intent for a flat ₦2,500–₦5,000 monthly tier over variable USD.

DESIGN IMPLICATION

Standardize localized pricing at ₦3,500/month natively billed via Paystack debit rails.

[04 // DECISIONS]

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:

DECISION 01 // DATA ARCHITECTURETWO INDEPENDENT TOKENS

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.

Creation Success: Decoupled Public & Private TokensLaunch Modal
Imvoy Launch Engine: Decoupled Public Magic Link Gallery & Private Invoice URLs
DECISION 02 // PROOFING ENGINEZERO-LOGIN PROOFING

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.

Client In-Gallery Proofing & Quota InterfaceLive Client View
Imvoy In-Gallery Proofing with Sticky Quota Tracking Bar
Studio Dashboard: Real-Time Proofing ReviewPhotographer View
Imvoy Studio Dashboard Proofing Review & Selected Photos Manifest
DECISION 03 // INFRASTRUCTURE$0/GB EGRESS

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.

DECISION 04 // LIFECYCLE TRACKER8-STAGE STATE MACHINE

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.

The Official Written Flow
Generated ──► Gallery Sent ──► Gallery Opened ──► Proofing Complete ──► Invoice Sent ──► Invoice Viewed ──► Paid ──► Archived
(Note: Pre-publish creation drafts prior to link generation expand as Draft ──► Generated ──► ...)
Shoot Lifecycle State Machine: 8-Stage Definitions & Triggers8 Deterministic Stages
1. Generated (or Draft)(Neutral)
TRIGGER

Links created and ready; not yet delivered to client.

ACTOR / ACTION

System initializes gallery & invoice records upon upload completion.

TOKEN: --color-status-generated (Neutral)
2. Gallery Sent(Blue)
TRIGGER

Photographer shares the gallery link with the client (via WhatsApp or link copy).

ACTOR / ACTION

Photographer triggers share action or copies shareable URL.

TOKEN: --color-status-active (Blue)
3. Gallery Opened(Amber)
TRIGGER

Client visits the public gallery URL (/a/[token]).

ACTOR / ACTION

Client opens link; system logs GalleryStatusEvent (status: 'viewed').

TOKEN: --color-status-pending (Amber)
4. Proofing Complete(Amber)
TRIGGER

Client finishes selecting favorite photos and submits proofing list.

ACTOR / ACTION

Client taps submit in proofing drawer; in-app notification sent.

TOKEN: --color-status-pending (Amber)
5. Invoice Sent(Blue)
TRIGGER

Photographer dispatches the private invoice link.

ACTOR / ACTION

Photographer sends or copies private invoice URL (/i/[token]).

TOKEN: --color-status-active (Blue)
6. Invoice Viewed(Amber)
TRIGGER

Client opens the private invoice link to see breakdown and banking details.

ACTOR / ACTION

Client accesses invoice page; system logs view event.

TOKEN: --color-status-pending (Amber)
7. Paid(Green)
TRIGGER

Photographer confirms payment receipt (bank transfer) and marks job settled.

ACTOR / ACTION

Photographer clicks 'Mark as Paid' from dashboard or invoice view.

TOKEN: --color-status-complete (Green)
8. Archived(Grey)
TRIGGER

Engagement concluded; shoot moved out of active tracking view.

ACTOR / ACTION

Photographer archives the job.

TOKEN: --color-status-neutral (Grey)
[05 // ENGINEERING]

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.
Color Palette & Contrast TonesCore Palette
Imvoy Design System - Core Color Palette
Design System Token Roles & UsageFigma Specification
Imvoy Design System - Color Roles & Token Architecture

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:

1. Agent Persona & Operating Directives
AGENTS.mdCore AI engineer persona, non-negotiables (mobile-first 375px WhatsApp browser, presigned uploads, route isolation), and decision trees.
2. Product Requirements & Architectural Blueprints
PRD.mdSingle source of truth for user journeys, MVP scope vs out-of-scope, and the 8-stage state machine tracker.
architecture.mdPrisma ORM & PostgreSQL schema, third-party APIs (Cloudflare R2, Paystack, Termii), security boundaries, and data flows.
forms.mdMulti-step creation wizard specifications, inline validation rules, field constraints, and mobile ergonomics.
design-system.jsonMachine-readable design tokens for Outfit typography, semantic color roles, spacing, and elevation scales.
3. Domain Skills & Implementation Standards (/skills)
skills/colors.mdSemantic lifecycle tokens & brand constraints
skills/typography.mdOutfit scale, line heights & Material Design hierarchy
skills/upload-logic.mdDirect-to-R2 presigned protocol & chunk retries
skills/api-handler.mdAPI route patterns, error envelopes & transaction safety
skills/accessibility.md44px min touch targets, contrast & ARIA landmarks
skills/components.md & error.mdComposition slots, recovery states & error UX
4. QA Audits, Test Suites & Production Verification
CODEBASE-AUDIT-REPORT.mdComprehensive engineering audit scoring SOLID, Murphy's Law, YAGNI, CQS, and DRY with refactoring priority matrices.
QA-FINAL-REPORT.md & P1 VerificationFull QA test suite execution, regression fixes, edge-case coverage, and launch-blocker resolution.
mobile-responsive-plan.mdTargeted viewport adaptation strategies for budget Android screens and WhatsApp in-app browser engines.
imvoy_production_feature_manifest.mdGranular launch checklist verifying feature readiness across all 5 core application pillars.
[06 // THE EXPERIENCE]

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.

Photographer Command Center & Live TelemetryStudio Dashboard
Imvoy Photographer Command Center Dashboard
Client Engagement Activity & Notifications DrawerDrawer View
Imvoy Real-Time Client Engagement Activity Drawer

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.

Step 1: Client Metadata & Engagement ScopeCreation Flow
Imvoy Gallery Creation: Client Details Step
Step 2: Resumable Direct-to-R2 Upload EngineUpload Step
Imvoy Gallery Creation: Direct Upload Engine
Step 3: Instant Launch & Decoupled LinksSuccess Modal
Imvoy Gallery Creation: Launch & Shareable Magic Link Modal

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.

Studio Invoices Ledger: Collected vs OutstandingBilling Ledger
Imvoy Invoices Ledger: Outstanding vs Collected
Itemized Client Invoice & Direct Bank SettlementPrivate Invoice URL
Imvoy Itemized Client Invoice with Instant Bank Settlement

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.

White-Label Studio Identity & Workspace SettingsStudio Settings
Imvoy Studio White-Label Customization & Workspace Architecture

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 Public Acquisition & Studio OnboardingLanding Page
Imvoy Commercial Landing Page & Brand Positioning
[07 // PRODUCTION IMPACT]

Commercial & operational milestones

₦2,021,546+Invoiced Volume Facilitated

Successfully settled for Nigerian photographers through structured client invoicing and direct bank settlements.

4,290+Verified Client Views

Organic distribution across Lagos (46%), Abuja (28%), Port Harcourt (14%), and Diaspora (London & NYC: 12%).

3,461Full-Res Downloads

Byte-for-byte image integrity preserved with zero file compression complaints across 219 completed client galleries.

100%Zero-Login Completion

Zero customer support tickets regarding account registration, lost passwords, or link access failures.

Production Analytics & Geographic Distribution SnapshotGoogle Analytics Verified
Imvoy Google Analytics Production Reports Snapshot
Verified Studio Testimonials
“
★★★★★
“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.”
BM IMAGERY
2,696 Photos Delivered
“
★★★★★
“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.”
Almas Studio NG
171 Photos Delivered
“
★★★★★
“Enjoying it very well, so easy and smooth. My customers appreciate it. They say, this is a professional vibes 💯”
DkSTUDIO
1,343 Photos Delivered
[08 // REFLECTIONS]

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.

WHAT I WOULD BUILD NEXT

In-App Client AnnotationsPrecise cropping and retouching notes on individual proofing images directly in the lightbox.
Automated WhatsApp WebhooksLive WhatsApp alerts pinging photographers the second a client opens their gallery or submits proofing picks.