yoconn
← Back to portfolio

Case Study

Customer Ordering Portal for NetSuite

Replaced an emailed Excel order-form workflow with a production customer portal integrated with NetSuite.

Role: Project manager & lead developer · Highland Cabinetry Inc.

Next.jsTypeScriptNetSuite SuiteScriptSDFAzureSQLREST APIs

Problem

Customers submitted orders through emailed Excel forms, which account managers manually reviewed and entered into NetSuite. The process created extra administrative work, slower order handling, and more opportunities for data-entry mistakes.

Constraints

External users, internal system of record

400+ customer users needed to create and manage orders themselves, but the system of record is NetSuite. Order data had to land in the ERP cleanly — without account managers re-keying anything.

Approval had to be earned

Replacing a process the business ran on required stakeholder buy-in first. The prototype had to make the new workflow concrete enough to approve before full investment.

Replacing a live process

The emailed Excel workflow was actively handling real customer orders. The portal had to take over that volume as the primary ordering channel, not run as a side experiment.

Architecture

Customers400+ external users
Next.js PortalTypeScript · order lifecycle UI
REST APIsSuiteScript services · SDF
NetSuite ERPsystem of record
Orders flow from customers straight into NetSuite — account managers work the same records, minus the manual entry. Azure hosts the surrounding internal systems and dashboards.

Frontend

A Next.js + TypeScript web application covering the full order lifecycle for external customers — creating orders, reviewing them, and managing them over time. The production app grew directly out of the approved prototype.

Backend

NetSuite SuiteScript services, deployed with SDF, handling order submission, customer order management, and workflow automation inside the ERP itself.

Integration & hosting

REST APIs connect the web application to NetSuite, with SQL for supporting data and Azure hosting the surrounding internal systems and operational dashboards.

Key decisions & tradeoffs

Prototype first, spec second

Instead of pitching the replacement on paper, I built a working Next.js recreation of the ordering workflow and used it to win stakeholder approval. The same codebase was then hardened into the production portal — no throwaway work, no gap between what was approved and what shipped.

Backend inside the ERP

Order logic lives in NetSuite as SuiteScript services rather than in a separate middleware layer. Order data lands directly in the system account managers already work in, so there is no sync layer to build, monitor, or reconcile.

Remove the re-keying, keep the oversight

The portal eliminated manual order entry, not the account managers. They continue to work orders in NetSuite as before — the difference is the data arrives structured and customer-entered instead of transcribed from emailed spreadsheets.

Outcome — First 6 Months in Production

The portal replaced the emailed Excel order-form process. Customers now manage their orders directly through the web application, and order data flows into NetSuite without manual account-manager entry — eliminating an estimated 314 hours of administrative work in the first six months.

Volume processed
$6.5M+
order and payment volume
Orders processed
3,500+
without manual account-manager entry
External users
400+
customers managing their own orders
Manual work eliminated
~314 hrs
of order-entry admin (est., 6 months)

Code

The production code is proprietary to Highland Cabinetry. I'm happy to walk through the architecture, data model, and design decisions in as much depth as you'd like.