Skip to content
Thomas Foundry
← All cases

Nauteda B.V. · 2026 · B2B · portal

Nauteda — a trading portal for Andalusian olive oil

A B2B portal for partner-side sales of extra virgin olive oil from Sierra de las Nieves. Magic-link login, partner-specific price lists, quote builder, Resend notifications. Live in NL and EN.

nauteda.com
Nauteda — extra virgin olive oil from Sierra de las Nieves, Andalusia
Nauteda B.V.·2026
Next.js 16SupabaseResendnext-intlVercel

The problem

Nauteda is a family business in Sierra de las Nieves — a UNESCO biosphere reserve in Andalusia — that sells its own extra virgin olive oil to a small network of buyers across Europe. Small, premium, personal.

The way that network was being served, though, was keeping the company small in the wrong way. Every partner had its own price agreements, its own stock allocation, its own preferred language. The broker sent daily PDFs with manually updated rates. Orders came back via email, often missing VAT numbers and shipping details. One person spent the entire day inside Outlook — not because the orders were complex, but because the system around them wasn't.

When I came on board the question wasn't "build us a webshop." It was: how do we keep what works personal personal, and automate what has become busywork?

Approach

No webshop. No classic storefront with checkout and payment provider. What Nauteda needed was a gated partner portal where each buyer sees only their own price list, their own contact person, their own order history.

The architecture came in three layers:

  1. Magic-link login with PKCE — no passwords, no reset emails, no account-creation flow. A partner gets a one-time invite, clicks the link in their inbox, and is in. For <500 partners that's the right call; SSO and Auth.js would be overkill.
  2. Quote builder with partner-scoped price lists in Supabase. No Stripe, no Tax engine — Nauteda still invoices manually, because in B2B olive-oil trade the margins and per-country VAT rules are something their accountant handles, not a payment provider. The portal generates PDF quotes; human approval stays a feature, not a bug.
  3. Notification layer via Resend. The partner gets a confirmation in their language. The broker gets an internal email with the summary and a direct link to the quote in the portal. Two templates, both versioned.

Tech stack

Next.js 16 with App Router, Supabase Postgres for data + auth, Resend for mail, next-intl for /nl and /en from the same markup, hosted on Vercel with edge caching for marketing pages. No Redis, no queue system, no websockets. That's deliberate: anything that looks real-time but doesn't need to be is a failure mode you can't sell to a family business.

The RLS policies in Supabase do all the heavy lifting for partner isolation. A partner literally cannot see a price list that isn't theirs, even via a hand-crafted API call. That helps me sleep.

War story

Week four, two days before soft launch, the first real test landed: an Italian partner tried to log in from a hotel in Madrid. The magic link didn't work. The link in his inbox brought him to a blank page.

It turned out to be the Outlook link protector. Microsoft "improves" every link in a mail by running it through their Safe Links service first, and somewhere in that process our PKCE flow was losing its code verifier. Five hours of debugging later, the fix was twofold: write the PKCE code verifier to a secure cookie before sending the email, and validate the redirect URL against a whitelist that doesn't assume links come back unchanged.

A lesson for anyone shipping B2B SaaS: your users live in corporate Outlook, not Gmail. Test there.

Result

The portal went live in Q1 2026. The number of open quotes is countable for the first time; before, that was estimated. The broker no longer lives in Outlook — he uses it the way it's meant to be used, for real conversations with buyers, while the routine quote flow runs through the portal.

Concrete conversion numbers will follow after one full quarter. What I can already say: one partner doubled his annual volume by the end of March without any extra headcount on Nauteda's side. That's what a portal is supposed to do.

What I learned

Premium B2B doesn't ask for less custom work — it asks for better defaults. The temptation is to make everything configurable; the discipline is to limit configuration to what partners actually toggle. Four price lists with good defaults beat fourteen with stray checkboxes.

The biggest tech decision wasn't a tech decision. It was the choice to explicitly not integrate Stripe. Any SaaS architect by reflex would build a payment flow. But this client earns more on margin than on transaction speed. Human-in-the-middle wasn't a technical limitation — it was the business model.

CTA

Building something similar — a B2B portal with tiered partners, custom price lists, or multilingual quote flows? Send me a note. I'm curious where your Outlook pain lives.

Image fragments

nauteda.com/partners
Nauteda — partner portal interface
nauteda.com/collection
Nauteda — collection and provenance

Next project →

Sealr — a secure workspace for commodity brokers

The secure workspace for brokers, buyers and sellers in international commodity trade. NDAs, IMFPAs, dealing rooms and commissions in one sealed platform. Web + iOS, €9.95 per workspace per month.