The business and the problem
A marketplace connects organisations that want to outsource work with vetted providers who can do it. The match depends on a dozen things — industry, service, size, budget, timeline, location, compliance needs — and asking for all of them at once produces a form nobody finishes. The platform needed a search that felt like a conversation, dashboards for providers to manage what they were sent, and a way to track each lead from first contact to a signed engagement.
What was built
A twelve-step search wizard that people finish
The search is broken into twelve small steps, one question each, with progress saved as the visitor goes. Someone can stop on their phone, come back on a laptop the next day and continue from the same step. Every answer narrows the shortlist visibly, so the visitor sees the value of answering before the end.
Provider dashboards
Providers see the leads matched to them, respond, and track outcomes from one screen, with the information they need to decide quickly whether a lead is worth pursuing.
Lead management
Each lead moves through defined stages with a history of who did what, so the marketplace can see where matches stall and fix the step, not guess.
What changed
A form that was abandoned became a wizard that is completed, and providers gained a single place to work their leads instead of an inbox.
What this means for an SME project
Most SME sites have one form that matters — the inquiry, the booking, the quote request — and it is usually too long or too vague. The lesson from twelve steps is that people finish short, visible progress. That is how I build inquiry and booking flows for landing pages and business websites, and why an inquiry form on my own site asks for four things, not fourteen. The same thinking goes into every landing page and business website I build; if the form on your current site is the problem, website rescue starts with a written verdict.
Stack
React 19 and TypeScript with Zustand for the wizard state and TanStack Query for data, so a half-finished search survives a page reload.