FabriHub on Demand.
My role.
Product & UX/UI designer across all three surfaces of the marketplace.
- The client marketplace — browsing, ordering and tracking
- The provider console — machines, quotes and fulfilment
- The admin operations layer
- One shared design system across the three
- Two-sided marketplace: clients with files, workshops with machine time
- Three connected products on one system
- Monetisation had to live inside the design, not be bolted on
- Trust in unverified suppliers had to be visible
The brief.
Custom manufacturing — laser cutting, CNC routing, 3D printing, molding, casting — mostly runs on phone calls, WhatsApp threads and a guy who "knows a guy." A client with a CAD file has no fast way to find a workshop that can actually make it, and a workshop with open machine time has no fast way to find that client.
FabriHub set out to be the marketplace in between: upload a file, get it made.
The idea.
Instead of a request form, we designed the order around the file itself. A client doesn't describe what they need in a paragraph — they choose a process, attach the part file, and let a few spec fields do the rest. Providers, in turn, only see requests that match machines and categories they've actually listed on their own profile.
Everything sits on three connected surfaces sharing one system: a client marketplace, a provider console, and an admin operations layer that keeps the other two honest.
One list, every shop.
The category grid a client sees when placing an order — Laser Cutting, CNC Routing, 3D Printing, Molding, casting and more — is the marketplace's actual shape. Each tile maps to the machines and processes a provider has declared on their own profile, so a category isn't just a label, it's a filter.
Order around the file, not a form.
A client doesn't write a spec in prose — they upload the part file and answer four fields: quantity, material, thickness, process. That file becomes the single source of truth a provider quotes against, not a paragraph someone has to re‑read three times.
Quote, don't guess.
Every order rides a status ladder that providers, clients and admins all watch: New → Quoted or Rejected — always with a reason, never a silent no — → In progress → Shipped. Confirmation is the moment a client hands the file over and that ladder starts moving.
Two doors, one marketplace.
Clients and providers share the same shell — same login screen, same visual language — then branch into completely different consoles: one places orders and compares suppliers, the other manages machines, quotes and an incoming queue of files. An admin layer sits above both.
Key decisions.
-
Order around the file, not a form
Why A part file plus four fields — quantity, material, thickness, process — becomes the single source of truth a provider quotes against, instead of a paragraph someone re-reads three times.
-
Make the category list the marketplace's real shape
Why Each category maps to machines and processes a provider has declared, so providers only see requests they can actually make.
-
Every rejection carries a reason
Why A silent “Rejected” reads as the platform failing. A reason turns a dead end into information a client can act on.
-
Show verification as a badge
Why A supplier passing document checks in the backend helped nobody until the status was visible to a client before they ordered.
Trade-off Verification tiers — documents, then a site audit and ISO record — have to be maintained as well as displayed.
The ship.
FabriHub shipped as three connected products sharing one design system: the client marketplace for browsing, ordering and tracking; a provider console for managing machines, quotes and fulfillment; and an admin layer built for running the business, not just moderating it — near‑delivery and late‑job alerts, a manufacturing‑cost report comparing partner price to quoted price, and a top‑requested‑services view the team used to decide which categories to grow next.
Monetization lived inside the same design rather than bolted on afterward: a free listing tier next to paid Premium and "Golden Page" placements, unlocked by a verification ladder — business documents first, then a site audit and ISO record for shops that wanted the top slot.
What shipped.
An order that used to start with a phone call or a WhatsApp thread now starts with the part file itself, and moves along one status ladder the client, the provider and the admin all read.
What I'd do again.
Design the margin report like a product screen. The admin's manufacturing‑cost view — partner price versus quoted price — was the one screen the business actually ran on. It deserved the same care as the client‑facing order form, not a leftover spreadsheet export.
A rejection needs a reason. "Rejected" with no explanation just reads as the platform failing. Pairing every decline with a reason turned a dead end into information a client could act on.
Trust has to be visible, not just verified. A supplier passing document checks in the backend didn't help anyone until that status became a badge a client could actually see before they placed an order.