- Role
- Design, engineering and deployment
- Type
- Client project
- Stage
- In use
- Client
- Victors Holdings
- Read time
- 2 min read
01 · The problem
Collecting the details needed to launch Victors Holdings' campaigns — pricing, delivery, payment and customer information — over WhatsApp was slow, incomplete and impossible to keep organised.
02 · Approach
How I approached it
Give the client one private link to a step-by-step form that asks exactly what's needed, in the language of their industry, and saves the answers where the team already works: Google Sheets.
Rather than hard-coding one form, I built a template system: each industry template defines its questions, answer types and follow-up questions, so new clients don't need new code.
Key decisions
Templates are copied onto each link
A link stores the template it was created with, so improving a template later never changes a form a client has already received — while built-in templates can still be upgraded deliberately.
Google Sheets as the data store
The client team already worked in Sheets. Writing there removed the need for a separate admin tool for reading submissions and kept the data in a familiar place.
Duplicate-safe submissions
Each submission's reference is derived from its link, so a retried or double-clicked submit can't create a second record.
03 · Solution
What I built
Private, unguessable setup links with optional expiry
Create, copy, extend, disable, replace and delete links
Step-by-step form with a progress checklist and review step
04 · Engineering
How I engineered it
End-to-end validation
Every answer is validated against the template on the server with Zod — required fields, option lists, number formats and conditional questions — regardless of what the browser sends.
Keyless access to Google
The app authenticates to Google Sheets through Workload Identity Federation with Vercel's OIDC tokens, so no service-account key is ever created or stored.
Abuse protection
Rate limiting on submissions, unguessable tokens, expiry and disable checks on every request, and admin pages protected by signed session cookies.
05 · Technologies
Under the hood
Frontend
- Next.js (App Router)
- Server-rendered pages for the client form and admin area
- React & TypeScript
- Multi-step form, template-driven fields and admin tools
- Tailwind CSS
- Responsive, accessible interface
Backend & data
- Next.js route handlers
- Submission and link-management APIs
- Zod
- Validation of templates and every submitted answer
- Google Sheets API
- Stores setup links and submissions
Infrastructure
- Vercel
- Hosting and deployment
- Google Cloud Workload Identity Federation
- Keyless authentication to Google APIs
06 · Results & lessons
What it achieved
- In use for Victors Holdings' campaign setup: the client completes their information in one guided session.
- Every submission arrives complete, validated and in a consistent format, ready to plan the campaign from.
What I learned
Separating the client's identity from the form template made the platform reusable for other industries without code changes.
What’s next
- Add templates for more industries as new clients come on board.
More case studies
View allOmniForce Talent Marketplace
Engineering contributions to an enterprise talent marketplace.
Read case study
Kudziemuks Lead Capture & Enquiry Experience
My own site: positioning, enquiry capture, campaign pages and source tracking.
Read case studyReferral-to-Revenue Tracking System
Connecting referrals to real purchases and tracking the commission owed.
Read case studyWhere are you losing customers?
Get a free Customer Leak Audit. I'll check how your business handles enquiries, what happens after a quote, and where customers slip away, then show you what to fix first.
No assumptions about the solution before understanding the problem.
