Client Portal

The place every client goes to find everything I have given them. One address, permanent, and the archive belongs to them rather than to my inbox.

Live Clients only Unlisted by design No demo login

What It Is

The Client Portal is a client-facing deliverable store. The structure is clients, then engagements, then deliverables as items inside an engagement. A deliverable holds any number of named links and any number of uploaded files, PDFs today, viewable in the app and downloadable.

There are no hosted HTML deliverable bodies and there is no notes field. The brief replaced notes: a dedicated client-facing section covering the client's goals and business details, kept separate from anything internal, so a client can see that the context behind the work has actually been thought through.

It is unlisted. There is no public entry point, it is not for sale, and this page describes it rather than demonstrating it.

The Problem It Solves

Deliverables scattered across email threads, Drive links and Slack messages decay fast. Six months after delivery the client cannot find the audit, so they ask me, and I become the retrieval system for my own work. That is a poor use of both of us and it quietly makes the work look smaller than it was.

The portal makes the archive the client's, permanently, at one address. Everything I have handed over is in one place, in the order it was delivered, findable by somebody who was not in the original meeting.

Where It Gets Used

Four moments it exists for.

  • The six-month lookup. A client needs the Q2 technical audit long after delivery and finds it in one click without emailing me.
  • A new stakeholder. Somebody joins on the client side and gets one URL that holds the entire history of the engagement.
  • Circulating internally. A client downloads a deliverable to send to a team that was never part of the engagement.
  • Showing the operating model. I walk a prospect through the structure as evidence of how an engagement is actually run.

How It Works

Three levels of structure, plus the brief that sits alongside them.

Level one

Clients

Each client gets a clean address of their own, for example /trassig-corp. Everything filed under a client is visible to that client.

Level two

Engagements

Work is filed under an engagement, so a two-year relationship reads as a sequence of engagements rather than one undated pile of files.

Level three

Deliverables

Items inside an engagement. Each one holds multiple named links and multiple uploaded files, viewable in the app and downloadable.

Alongside

The Brief

A client-facing section covering the client's goals and business details, separate from anything internal, so the business context is visible to the person it is about.

Three decisions worth naming. There are no per-item permissions, deliberately: everything filed under a client is visible to that client, and the only control is turning the portal off, because a permission system invites the question of what is being withheld. Every address renders the same sign-in screen whether or not that client exists, so nobody can enumerate which clients are real. Contact records were dropped entirely, because the portal lists one point of contact and that is me.

Who It Is For

Active clients. That is the entire audience. It is not a public product, it is not for sale, and nobody outside an engagement has a reason to have an account.

This page exists so a prospect can see what they would get and how the work is kept, not so anyone can sign up. There is no demo login and no live client address linked from here.

  • Not a document editor. It stores what was delivered. Writing the deliverable happens elsewhere.
  • Not a permissions system. No per-item visibility rules, on purpose.

Status And Access

Live, in use, and deliberately closed.

Status and access

Status
Live since September 2026
Address
clients.jakelabate.com, unlisted. Clients are given their own address directly.
Sign-in
Client accounts only. No public signup, no demo credentials.
Enumeration
Every portal address renders the same sign-in screen, so no one can discover which clients exist.
Permissions
None per item. Everything filed under a client is visible to that client.
Can you use it today
Only as a client. Everything above is the walkthrough.

The Stack

Deployed on the edge, with a hosted Postgres backend and file storage behind it.

Stack

Front end
Served from Cloudflare Workers Builds.
Hosting
Cloudflare Workers, on the custom domain clients.jakelabate.com.
Backend
Supabase, reusing an existing project.
Files
Uploaded PDFs, viewable in the app and downloadable.
Repository
JakeLabate/clients-portal, private.

The Portal Comes With The Work

There is nothing to buy here. Clients get a portal because every engagement produces documents, and documents that cannot be found six months later may as well not have been written.