• nestjs
  • nodejs
  • typescript
  • mongodb
  • postgresql
  • aws
  • react
ProfessionalBrilworks SoftwareFull-stack developer2024 — 2026Under NDA · architecture only

Service Buddy

Multi-tenant SaaS CRM and operations platform.

A CRM and operations platform used by thousands of people a day across 100+ business clients. I built the bulk product-ingestion pipeline on AWS SQS, NestJS APIs with RBAC and tenant isolation, and reusable data-table and ordering systems.

  • 5,000+

    SKUs per bulk import

  • 100+

    business clients on the APIs

  • Millions

    of event-log entries

01

Why I built it

Businesses onboarding to the platform needed to bring their whole catalogue in at once. Uploading thousands of products synchronously blocked requests, overloaded the database and created duplicates whenever a client retried. The import had to be safe to run twice and impossible to take the platform down with.

02

The problem

  • Large CSV imports (5,000+ SKUs) blocked the API and spiked database load.
  • Retries and partial failures created duplicate products.
  • Every query had to stay isolated per tenant across 100+ businesses.
  • Inventory, billing, proposals and scheduling all needed the same table and ordering UI.

03

System design

  1. 1

    CSV upload

    Column mapping, validation and a preview before anything is written.

  2. 2

    AWS SQS

    Validated rows are queued instead of written inline.

  3. 3

    Workers

    Consume batches and upsert each SKU idempotently.

  4. 4

    MongoDB

    Indexed for inventory-heavy queries; every read is tenant-scoped.

  5. 5

    NestJS API

    Modular services with RBAC and multi-tenant data isolation.

04

Decisions & trade-offs

  • Queue the import on SQS instead of writing inline

    Why: The request returns immediately and workers absorb the load at a controlled rate, so one big import can't starve the rest of the platform.

    Trade-off: Import results are eventual: the UI needs progress and failure reporting instead of a single response.

  • Idempotent SKU upserts

    Why: Re-running an import, or a message being delivered twice, updates the same product instead of creating a duplicate.

    Trade-off: Every SKU needs a stable identity key, and the mapping step has to enforce it.

05

Backend & frontend

Backend

  • Bulk ingestion pipeline on AWS SQS with idempotent upserts.
  • Modular NestJS APIs with RBAC and multi-tenant isolation for 100+ business clients.
  • MongoDB indexing and query optimisation for inventory-heavy workflows.

Frontend

  • Reusable data-table and drag-and-drop ordering systems used across inventory, billing, proposals and scheduling.
  • CSV mapping, validation and preview UI for bulk imports.

06

Design

  • Import flow designed around a preview step, so users see problems before they commit.

07

Results

  • Bulk imports of 5,000+ SKUs without duplicates or API overload.
  • One table and ordering system reused across four product modules.

What's next

  • Per-row import reports that clients can download.
Next projectLunexaA personal-finance engine built like a bank ledger.

Contact

Let's build something that holds under pressure.

Open to remote full-time roles and freelance projects with teams in North America, Europe, Australia and Asia. I work across time zones. The fastest way to reach me is email.

View resume