Back to projects

PROJECT 02 · CASE STUDY

Logistics SLA analytics

At Maxcess International I joined two critical Excel files—customs and stock—into a live platform built with Next.js, Supabase and Power Automate, because the commercial team needed to see each SKU from export to available stock without stopping anyone's operation.

In 30 seconds

Why

At Maxcess International I joined two critical Excel files, customs and stock, with Supabase and Power Automate to track each SKU from export to stock without stopping operations.

WHO IT'S FORCommercial, administration, customs and inventory teams
TARGETLive stock, transit and reservations per SKU

What I built

  1. Source

    Two Excel files—customs and stock—in OneDrive and SharePoint. Power Automate loads them into the database and keeps snapshots, without changing how teams fill them in.

  2. Model

    The SKU is the key to each shipment's journey. A Supabase model for 5+ users in four roles with row-level permissions, and a stock trend built from the history of snapshots.

  3. Output

    A live platform on laptop and phone: a board by stage, reservations per Strategic Account Manager, weekly alerts and a RAG assistant over the product sheets.

Tools

  • Excel
  • Power Automate
  • n8n
  • Supabase
  • Next.js
  • TypeScript
  • Azure
  • Cloudflare
  • DuckDB
  • Resend
  • RAG

The full case

Where it started

Maxcess International's commercial team sells with the inventory in hand: what's available, what's on its way and what's already reserved. That answer lived in two heavy Excel files, one for customs and one for stock and inventory, kept by different teams.

Answering for a single SKU meant cross-checking both sheets by hand: the information existed, but not in one place or at the same time.

The challenge

Join both files without asking anyone to change how they work: the Excel system already ran and couldn't stop or create friction between teams.

And do it so a SKU could be followed through its whole shipment history: export, import, international transit, customs, warehouses and available stock.

How I approached it

I started with mockups, iterated with the commercial team until they approved them. Then, on my own initiative, I proposed scaling it into a reproducible, verifiable platform, live and fed by its own users' data.

With help from neighboring teams we polished the Excel files in OneDrive and SharePoint copies, so loading them didn't depend on anyone. With the mockups approved, I designed the architecture and documented it before building.

End to end

Ingestion. A Power Automate flow brings both Excel files into the database and keeps a snapshot of every cut. Teams keep filling in their sheets as always.

Model. The SKU is the key to the whole shipment. In Supabase, on PostgreSQL, lives a model with versioned migrations and row-level permissions for four roles: admin, Strategic Account Manager, support and visitor. Every cut is stored as a snapshot, and comparing cuts shows what was added, removed or changed in each record.

App. Built with Next.js and TypeScript, with accessible components and dark mode, it works the same on laptop and phone. Alerts go out every Monday by email from a dedicated domain, through an n8n flow, and also show up in the platform's bell.

What I built

A live platform for 5+ users, with the SKU at the center of every screen.

  • Board: SKUs by stage, catalog count, available pieces, in transit and pending data, with live charts, a heat map and the stock trend by period, built from the history of cuts.
  • Catalog by technology and brand, with each product's technical sheet.
  • Shipments and shipment history: each SKU at its stage, with date and country filters.
  • Reservations per Strategic Account Manager, with an alert when a SKU is over-reserved.
  • Projects built from the history, with their PDF document.
  • Snapshots: every ingested file and its changes, record by record.
  • Follow-up: follow a SKU and get an alert when it arrives, when it changes stage and when its available or reserved quantity changes.
  • Settings: preferences, users and roles, families, brands, pending items and help.

The assistant

MAX answers about the catalog's technical sheets. It's a RAG assistant: it searches PostgreSQL by full text and by meaning, and writes the answer with a language model from what it found.

It updates every time it's reindexed: an indexer compares the corpus with its previous version, chunks it and reprocesses only what changed. Before each release, a set of test questions checks that it answers with grounding and knows how to say it doesn't know.

What changed

The commercial team sees each SKU's stock, transit and reservations live, on laptop and phone, and 5+ users work from the same information. Administration, customs and inventory keep filling in their Excel files as always, and now their data reaches everyone.

What I learned

That the best integration is the one nobody has to learn: respecting how each team works is what got the platform adopted. And that an assistant is worth as much for what it answers as for what it admits it doesn't know.

What's next

Keep adding sheets to the assistant's corpus and publish the repository when it's ready.

End-to-end stack

  1. Sources and ingestion

    Both Excel files, without changing how they're filled in

    • Excel
    • OneDrive
    • SharePoint
    • Power Automate
    • SheetJS (xlsx)
  2. Database and model

    The SKU as the key, with row-level permissions

    • Supabase
    • PostgreSQL
    • SQL
    • Versioned migrations
    • Row Level Security
    • DuckDB
    • Azure
  3. Backend

    Routes, sessions and validation

    • Next.js
    • TypeScript
    • Node.js
    • Zod
    • Supabase SSR
    • node-postgres
  4. Frontend

    The platform on laptop and phone

    • React
    • Next.js App Router
    • Tailwind CSS
    • Radix UI
    • shadcn/ui
    • Lucide
    • next-themes
    • Sonner
  5. Visualization

    Board, trend and heat map

    • Custom React charts
    • Tailwind CSS
  6. Documents

    Technical sheets and project documents

    • PDF.js
    • PDFKit
    • SheetJS (xlsx)
  7. AI

    The MAX assistant

    • RAG
    • OpenAI embeddings
    • DeepSeek chat model
    • PostgreSQL full-text search
    • pgvector
  8. Alerts and email

    The Monday bulletin and the bell

    • n8n
    • SMTP on a dedicated domain
    • Resend
    • Outlook
  9. Quality

    Tests and gates before each release

    • Vitest
    • Testing Library
    • jsdom
    • Playwright
    • ESLint
    • Git hooks
    • Python
  10. Delivery

    Publish and serve

    • Vercel
    • Cloudflare
    • GitHub

Screenshots · 12

Test or blurred data: no real client figures.