Work

What I’ve built in NetSuite, one engagement at a time.

Usually the only developer on the project, from scoping through go-live. The first conversation is about what the business needs the system to do; the last one is a handover someone else can pick up without me.

Everything ships with its error handling and logging built in: integration-log records, retry layers, audit trails. The aim is work that keeps running after I’m gone, and that says plainly when it doesn’t.

I came to NetSuite from JavaScript and enterprise infrastructure: React and Node on the front, and the job scheduling that keeps a financial institution’s overnight batch running. Governance limits, idempotent retries and an undocumented spec are familiar problems in new clothes.

Case studies

Five engagements, by industry. Numbers are the ones I can share.

  1. Biotech manufacturing

    A production platform and NetSuite that agree with each other

    The situation
    An antibody manufacturer ran production on its own platform and the business on NetSuite. Orders, lots and inventory had to move both ways, in real time, without anyone keying them twice, and the allocation of lot-tracked inventory to orders followed rules the standard commitment logic couldn’t express.
    What I built
    A bidirectional integration: four RESTlets for the real-time traffic, with a Map/Reduce backup-and-retry layer that uses file-based persistence and integration-log audit records, all engineered around NetSuite’s governance limits. Beside it, a lot-level inventory allocation engine, about 4,500 lines of User Event script running a five-step allocation cascade with inventory-detail subrecord commitment. An in-memory mapping cache replaced a hundred-plus per-transaction lookups with a single query. I was the primary technical contact, leading weekly work-track sessions, UAT cycles and the integration sequencing on an engagement of roughly 90 hours a month.
    The hard part
    Governance. A real-time RESTlet gets a fixed budget of work per call, and an allocation cascade over lots and subrecords eats it fast. The design splits the work so the RESTlet does what must be synchronous and hands the rest to Map/Reduce, with the integration log as the ledger that lets a failed step be retried without being repeated.
    Outcome
    Live in production. The same architecture was then extended to stand up a new German subsidiary.
    Biotech integration: production platform, RESTlets, NetSuite, integration log, Map/Reduce retryProduction platform and Four RESTlets exchange data; Four RESTlets to NetSuite; Four RESTlets to Integration log (audit); Integration log to Map/Reduce retry; Map/Reduce retry to NetSuite; NetSuite to Allocation engine (User Event).auditProductionplatformFour RESTletsNetSuiteIntegration logMap/Reduce retryAllocation engine(User Event)
    RESTlets carry the real-time traffic; the integration log feeds a Map/Reduce retry.
  2. Legal services

    The situation
    A national legal record-retrieval provider invoiced major insurance carriers, which take electronic bills in LEDES format through the T360 platform. Its billing ran on a legacy system that had to be retired, and the published LEDES specifications did not match the files the platform actually accepted.
    What I built
    LEDES 1998B and LEDES XML 2.0 export in NetSuite: a Suitelet for selecting and reviewing the invoices to bill, and a Map/Reduce script that builds and validates the files at volume.
    The hard part
    The documentation was incomplete and, in places, wrong. I reverse-engineered the differences between the vendor specifications and production files the platform had already accepted, and built the exporter to the files rather than to the spec.
    Outcome
    T360 acceptance, electronic invoicing to the carriers from NetSuite, and the legacy billing system switched off.
    Legal e-billing: NetSuite invoices, Suitelet, Map/Reduce, LEDES files, T360, insurance carriersNetSuite invoices to Suitelet (select, review); Suitelet (select, review) to Map/Reduce (build, validate); Map/Reduce (build, validate) to LEDES 1998B and XML 2.0; LEDES 1998B and XML 2.0 to T360; T360 to Insurance carriers.NetSuite invoicesSuitelet(select, review)Map/Reduce(build, validate)LEDES 1998Band XML 2.0T360Insurance carriers
    A Suitelet picks the invoices; Map/Reduce writes the LEDES files that T360 accepts.
  3. Consulting, internal

    Meeting notes that file themselves

    The situation
    A consultancy recorded its client meetings with a transcription service and paid for licences whose main job was turning transcripts into notes and action items that someone then copied into SharePoint by hand.
    What I built
    A meeting-intelligence pipeline: the transcription service’s webhooks into Celigo, a multi-pass LLM extraction that pulls decisions, action items and owners out of each transcript, and the Microsoft Graph API to file the result in the right SharePoint site. Designed and proved out end to end.
    The hard part
    Getting structured, trustworthy output from unstructured transcripts. One pass over a long meeting misses things, so the extraction runs in stages, each with a narrow job and a fixed output shape, and the pipeline keeps the original transcript beside the summary so anything can be checked.
    Outcome
    Projected to save about $12K a year in licensing.
    Meeting-intelligence pipeline: webhooks, Celigo, multi-pass LLM extraction, Microsoft Graph, SharePointMeeting webhooks to Celigo; Celigo to LLM extraction (multi-pass); LLM extraction (multi-pass) to Microsoft Graph; Microsoft Graph to SharePoint.MeetingwebhooksCeligoLLM extraction(multi-pass)Microsoft GraphSharePoint
    Transcripts arrive by webhook and leave as filed notes.
  4. Project-based business

    From a won deal to a project, without a form

    The situation
    Sales lived in HubSpot and delivery lived in NetSuite. Every closed deal meant someone creating the matching projects by hand, one for each line of the deal, and label and check printing needed layouts NetSuite doesn’t ship with.
    What I built
    A Map/Reduce script that watches deal-stage probability in HubSpot and creates NetSuite projects automatically, one project per deal line item. Alongside it, label and check printing rebuilt on Advanced PDF/HTML templates.
    The hard part
    Deals keep changing after they cross the line. The script has to recognise a line it has already turned into a project, pick up lines added later, and leave alone anything a project manager has edited since.
    Outcome
    Projects appear in NetSuite the moment a deal crosses the line; labels and checks print from the live record.
    HubSpot to NetSuite: deals, deal-stage probability, Map/Reduce, projects per line item, Advanced PDFHubSpot deals to Map/Reduce; Map/Reduce to NetSuite projects (one per line); NetSuite projects (one per line) to Advanced PDF templates; Advanced PDF templates to Labels, checks.HubSpot dealsMap/ReduceNetSuite projects(one per line)Advanced PDFtemplatesLabels, checks
    One project per deal line item, created when the stage probability crosses the line.
  5. Apparel manufacturing

    Purchase orders that reach the factory

    The situation
    An apparel manufacturer produced overseas. Purchase orders left NetSuite as documents, and what the factory did with them came back by email, so the order book and the factory’s view of it drifted apart.
    What I built
    An integration between NetSuite and the overseas factory’s system: purchase orders flow out as they are approved, and the factory’s side flows back into the same records.
    The hard part
    Two systems that each think they own the purchase order. The integration decides which side wins on every field, and says so in its logs when they disagree.
    Outcome
    Live, with purchase orders flowing.
    Apparel integration: NetSuite purchase orders, integration, overseas factory systemNetSuite purchase orders and Integration exchange data; Integration and Overseas factory system exchange data; Integration to Integration log.NetSuitepurchase ordersIntegrationOverseas factorysystemIntegration log
    Purchase orders out as they are approved; the factory’s side back into the same records.

Timeline

  1. Jul 2025 – Jul 2026

    Meridian NetSuite developer and consultant

    Lead integration developer across concurrent client engagements at a NetSuite partner; member of the internal AI committee.

  2. Aug 2023 – Nov 2024

    Fannie Mae Workload orchestration engineer

    Enterprise job scheduling with AutoSys for mission-critical financial systems: migrated the estate from on-premises to AWS EC2, held the primary 24/7 on-call rotation, and audited and remediated non-compliant network user IDs.

  3. Aug 2022 – Apr 2023

    Svelvet Full-stack developer, OS Labs tech accelerator

    An open-source Svelte diagramming component library on npm: snap-to-grid, grouped nodes and in-node HTML rendering; feature liaison to MIT Lincoln Labs engineers; a dependency overhaul cut the install size by 35%.

Stack, by purpose

NetSuite

  • SuiteScript 2.1
  • RESTlets
  • Map/Reduce
  • Suitelets
  • User Event
  • Scheduled scripts
  • Saved searches
  • SuiteQL
  • Custom records
  • Advanced PDF/HTML templates
  • Governance design

Integration

  • REST APIs
  • Webhooks
  • Celigo
  • Microsoft Graph API
  • Power Automate
  • LEDES 1998B / XML 2.0
  • HubSpot API

Languages and cloud

  • JavaScript / TypeScript
  • Python
  • SQL
  • AWS EC2
  • Azure
  • AutoSys

Web

  • React
  • Svelte / SvelteKit
  • Node
  • Express
  • Next.js
  • HTML
  • CSS / SCSS
viswa.one

Work

What I’ve built in NetSuite, one engagement at a time.

Usually the only developer on the project, from scoping through go-live. The first conversation is about what the business needs the system to do; the last one is a handover someone else can pick up without me.

Everything ships with its error handling and logging built in: integration-log records, retry layers, audit trails. The aim is work that keeps running after I’m gone, and that says plainly when it doesn’t.

I came to NetSuite from JavaScript and enterprise infrastructure: React and Node on the front, and the job scheduling that keeps a financial institution’s overnight batch running. Governance limits, idempotent retries and an undocumented spec are familiar problems in new clothes.

Case studies

Five engagements, by industry. Numbers are the ones I can share.

  1. Biotech manufacturing

    A production platform and NetSuite that agree with each other

    The situation
    An antibody manufacturer ran production on its own platform and the business on NetSuite. Orders, lots and inventory had to move both ways, in real time, without anyone keying them twice, and the allocation of lot-tracked inventory to orders followed rules the standard commitment logic couldn’t express.
    What I built
    A bidirectional integration: four RESTlets for the real-time traffic, with a Map/Reduce backup-and-retry layer that uses file-based persistence and integration-log audit records, all engineered around NetSuite’s governance limits. Beside it, a lot-level inventory allocation engine, about 4,500 lines of User Event script running a five-step allocation cascade with inventory-detail subrecord commitment. An in-memory mapping cache replaced a hundred-plus per-transaction lookups with a single query. I was the primary technical contact, leading weekly work-track sessions, UAT cycles and the integration sequencing on an engagement of roughly 90 hours a month.
    The hard part
    Governance. A real-time RESTlet gets a fixed budget of work per call, and an allocation cascade over lots and subrecords eats it fast. The design splits the work so the RESTlet does what must be synchronous and hands the rest to Map/Reduce, with the integration log as the ledger that lets a failed step be retried without being repeated.
    Outcome
    Live in production. The same architecture was then extended to stand up a new German subsidiary.
    Biotech integration: production platform, RESTlets, NetSuite, integration log, Map/Reduce retryProduction platform and Four RESTlets exchange data; Four RESTlets to NetSuite; Four RESTlets to Integration log (audit); Integration log to Map/Reduce retry; Map/Reduce retry to NetSuite; NetSuite to Allocation engine (User Event).auditProductionplatformFour RESTletsNetSuiteIntegration logMap/Reduce retryAllocation engine(User Event)
    RESTlets carry the real-time traffic; the integration log feeds a Map/Reduce retry.
  2. Legal services

    The situation
    A national legal record-retrieval provider invoiced major insurance carriers, which take electronic bills in LEDES format through the T360 platform. Its billing ran on a legacy system that had to be retired, and the published LEDES specifications did not match the files the platform actually accepted.
    What I built
    LEDES 1998B and LEDES XML 2.0 export in NetSuite: a Suitelet for selecting and reviewing the invoices to bill, and a Map/Reduce script that builds and validates the files at volume.
    The hard part
    The documentation was incomplete and, in places, wrong. I reverse-engineered the differences between the vendor specifications and production files the platform had already accepted, and built the exporter to the files rather than to the spec.
    Outcome
    T360 acceptance, electronic invoicing to the carriers from NetSuite, and the legacy billing system switched off.
    Legal e-billing: NetSuite invoices, Suitelet, Map/Reduce, LEDES files, T360, insurance carriersNetSuite invoices to Suitelet (select, review); Suitelet (select, review) to Map/Reduce (build, validate); Map/Reduce (build, validate) to LEDES 1998B and XML 2.0; LEDES 1998B and XML 2.0 to T360; T360 to Insurance carriers.NetSuite invoicesSuitelet(select, review)Map/Reduce(build, validate)LEDES 1998Band XML 2.0T360Insurance carriers
    A Suitelet picks the invoices; Map/Reduce writes the LEDES files that T360 accepts.
  3. Consulting, internal

    Meeting notes that file themselves

    The situation
    A consultancy recorded its client meetings with a transcription service and paid for licences whose main job was turning transcripts into notes and action items that someone then copied into SharePoint by hand.
    What I built
    A meeting-intelligence pipeline: the transcription service’s webhooks into Celigo, a multi-pass LLM extraction that pulls decisions, action items and owners out of each transcript, and the Microsoft Graph API to file the result in the right SharePoint site. Designed and proved out end to end.
    The hard part
    Getting structured, trustworthy output from unstructured transcripts. One pass over a long meeting misses things, so the extraction runs in stages, each with a narrow job and a fixed output shape, and the pipeline keeps the original transcript beside the summary so anything can be checked.
    Outcome
    Projected to save about $12K a year in licensing.
    Meeting-intelligence pipeline: webhooks, Celigo, multi-pass LLM extraction, Microsoft Graph, SharePointMeeting webhooks to Celigo; Celigo to LLM extraction (multi-pass); LLM extraction (multi-pass) to Microsoft Graph; Microsoft Graph to SharePoint.MeetingwebhooksCeligoLLM extraction(multi-pass)Microsoft GraphSharePoint
    Transcripts arrive by webhook and leave as filed notes.
  4. Project-based business

    From a won deal to a project, without a form

    The situation
    Sales lived in HubSpot and delivery lived in NetSuite. Every closed deal meant someone creating the matching projects by hand, one for each line of the deal, and label and check printing needed layouts NetSuite doesn’t ship with.
    What I built
    A Map/Reduce script that watches deal-stage probability in HubSpot and creates NetSuite projects automatically, one project per deal line item. Alongside it, label and check printing rebuilt on Advanced PDF/HTML templates.
    The hard part
    Deals keep changing after they cross the line. The script has to recognise a line it has already turned into a project, pick up lines added later, and leave alone anything a project manager has edited since.
    Outcome
    Projects appear in NetSuite the moment a deal crosses the line; labels and checks print from the live record.
    HubSpot to NetSuite: deals, deal-stage probability, Map/Reduce, projects per line item, Advanced PDFHubSpot deals to Map/Reduce; Map/Reduce to NetSuite projects (one per line); NetSuite projects (one per line) to Advanced PDF templates; Advanced PDF templates to Labels, checks.HubSpot dealsMap/ReduceNetSuite projects(one per line)Advanced PDFtemplatesLabels, checks
    One project per deal line item, created when the stage probability crosses the line.
  5. Apparel manufacturing

    Purchase orders that reach the factory

    The situation
    An apparel manufacturer produced overseas. Purchase orders left NetSuite as documents, and what the factory did with them came back by email, so the order book and the factory’s view of it drifted apart.
    What I built
    An integration between NetSuite and the overseas factory’s system: purchase orders flow out as they are approved, and the factory’s side flows back into the same records.
    The hard part
    Two systems that each think they own the purchase order. The integration decides which side wins on every field, and says so in its logs when they disagree.
    Outcome
    Live, with purchase orders flowing.
    Apparel integration: NetSuite purchase orders, integration, overseas factory systemNetSuite purchase orders and Integration exchange data; Integration and Overseas factory system exchange data; Integration to Integration log.NetSuitepurchase ordersIntegrationOverseas factorysystemIntegration log
    Purchase orders out as they are approved; the factory’s side back into the same records.

Timeline

  1. Jul 2025 – Jul 2026

    Meridian NetSuite developer and consultant

    Lead integration developer across concurrent client engagements at a NetSuite partner; member of the internal AI committee.

  2. Aug 2023 – Nov 2024

    Fannie Mae Workload orchestration engineer

    Enterprise job scheduling with AutoSys for mission-critical financial systems: migrated the estate from on-premises to AWS EC2, held the primary 24/7 on-call rotation, and audited and remediated non-compliant network user IDs.

  3. Aug 2022 – Apr 2023

    Svelvet Full-stack developer, OS Labs tech accelerator

    An open-source Svelte diagramming component library on npm: snap-to-grid, grouped nodes and in-node HTML rendering; feature liaison to MIT Lincoln Labs engineers; a dependency overhaul cut the install size by 35%.

Stack, by purpose

NetSuite

  • SuiteScript 2.1
  • RESTlets
  • Map/Reduce
  • Suitelets
  • User Event
  • Scheduled scripts
  • Saved searches
  • SuiteQL
  • Custom records
  • Advanced PDF/HTML templates
  • Governance design

Integration

  • REST APIs
  • Webhooks
  • Celigo
  • Microsoft Graph API
  • Power Automate
  • LEDES 1998B / XML 2.0
  • HubSpot API

Languages and cloud

  • JavaScript / TypeScript
  • Python
  • SQL
  • AWS EC2
  • Azure
  • AutoSys

Web

  • React
  • Svelte / SvelteKit
  • Node
  • Express
  • Next.js
  • HTML
  • CSS / SCSS