Logo Light

How to Build a Client Project Progress Portal

Sep 28, 2026

Clients asking "how's my project going" usually forces someone to stop what they're doing, count up finished tasks, count up the total, do the division, and type up a status update — just to answer a question that should be visible at a glance. Do that every week for every client, and it becomes its own small project on top of the actual work.

In this tutorial, we'll build a Client Project Progress Portal — a Project table where completion percentage calculates itself from linked tasks, shared with each client as a live, view-only window into their own project. No status update emails required.

Why this matters

A percentage is only trustworthy if it's recalculated the moment the underlying tasks change. A progress update typed into an email is a snapshot of a single moment — it's stale before the client even finishes reading it.


Table Columns

Here's what we're working with — a Project table holding the client and project name, linked to a Task table through a One-to-Many relationship, with a Task Name and a Completed checkbox on each task.

  • Project — Client Name, Project Name
  • Task — Project (linked), Task Name, Completed

![[]]

ProjectTask
1.project-task-table-columns.png1.project-task-table-columns.pngProject and Task table columns showing the One-to-Many link between themProject and Task table columns showing the One-to-Many link between them

Step 1: Add Your Projects and Tasks

Add a project, then break it down into several tasks, marking a few as already completed.

Project table populated with a website redesign project for client Marina ColeProject table populated with a website redesign project for client Marina Cole

Task table showing multiple tasks linked to the project with some marked as completedTask table showing multiple tasks linked to the project with some marked as completed

For this walkthrough, assume the Marina Cole — Website Redesign project has the following tasks:

  • Wireframes → Completed
  • Homepage Design → Completed
  • Content Migration → Completed
  • Mobile Responsive Testing → not completed
  • Final QA → not completed

Right now, this table shows five tasks in a list. Nothing here tells you, or Marina, what percentage of the project is actually done.


Step 2: Calculate Progress Percentage

Since a plain column can't be converted into Custom Logic after the fact, go to the Project table and create a brand new column, setting its type to Custom Logic from the start.

Adding a new Custom Logic column on the Project table for Progress PercentageAdding a new Custom Logic column on the Project table for Progress Percentage

Describe what you want — calculate the percentage of linked tasks where Completed is checked, out of the total number of linked tasks.

Describing the logic to calculate percentage of completed tasks out of total linked tasksDescribing the logic to calculate percentage of completed tasks out of total linked tasks

Confirm the clarification screen, checking that it correctly understood you want completed tasks divided by all linked tasks, not just a fixed number.

Clarification screen confirming the percentage calculation divides completed tasks by total linked tasksClarification screen confirming the percentage calculation divides completed tasks by total linked tasks

Save it, and the project's progress fills in instantly:

  • Marina Cole — Website Redesign → 60%

Project table showing Progress Percentage automatically calculated at 60 percentProject table showing Progress Percentage automatically calculated at 60 percent

What just happened under the hood

Because this calculation aggregates across every linked task rather than referencing fields on the same row, Ambisius evaluates it as a trigger-based calculation — re-checked through on_add, on_update, and on_delete triggers whenever a task under this project changes. The percentage always reflects the current state of every task, not the state they were in when you last looked.


Step 3: Watch Progress Move as Tasks Get Done

Let's prove that live. Mark Mobile Responsive Testing as completed.

Marking Mobile Responsive Testing task as CompletedMarking Mobile Responsive Testing task as Completed

The moment it's saved, the project's progress updates on its own, without touching the Project table at all.

Marina Cole — Website Redesign changes from 60% → 80%.

Project progress percentage updated to 80 percent after a task was marked completedProject progress percentage updated to 80 percent after a task was marked completed

Now add a brand new task to the same project — Client Feedback Round — left unchecked.

Adding a new task called Client Feedback Round to the project, left uncompletedAdding a new task called Client Feedback Round to the project, left uncompleted

Progress recalculates again, this time dropping slightly because the total task count grew.

Marina Cole — Website Redesign changes from 80% → 67%.

Project progress percentage adjusted to 67 percent after a new incomplete task was addedProject progress percentage adjusted to 67 percent after a new incomplete task was added

What this replaces

Tracking this manually means recounting completed tasks against the total every time something changes, and remembering to actually tell the client. Here, both a task finishing and a new task being added correctly shift the percentage on their own — nothing has to be recounted by hand.


Step 4: Share a View-Only Portal With Your Client

Progress that only your team can see doesn't remove the "how's it going" emails — it just moves the bottleneck. Create a new view on the Project table, filtered to just Marina Cole's project, and share it with her directly with view-only access.

Sharing a filtered project view with client Marina Cole set to view-only accessSharing a filtered project view with client Marina Cole set to view-only access

Marina now has a link she can open any time, showing her project's live Progress Percentage — no login setup, no separate spreadsheet copy, and no ability to accidentally edit anything.

Client-facing view showing only Marina Cole's project with its live progress percentageClient-facing view showing only Marina Cole's project with its live progress percentage

The wow moment

The next time a task gets marked complete, Marina's number updates on her screen without anyone sending her anything. She's not reading a status update — she's looking at the same live number your team sees, just scoped to her project alone.


Recap

  1. A Project table linked to a Task table via One-to-Many
  2. A Custom Logic field aggregating completed tasks into a live Progress Percentage
  3. A live demonstration of progress shifting both when a task completes and when a new task is added
  4. A view-only shared view, filtered to a single client, giving them direct access to their own live progress
What you had beforeWhat you have now
Manually counting completed tasks to report progressProgress percentage calculated automatically
Status update emails that go stale immediatelyA live number the client can check anytime
One shared file with no way to scope access per clientA view-only portal scoped to exactly one client's project

This same aggregation-plus-sharing pattern extends well beyond client projects — course completion percentages for students, application progress for job candidates, or renovation status for homeowners can all be built the same way.

Try it yourself

This exact setup is available as a ready-made template. Duplicate it, explore it live, and make it yours in a few clicks.

Try the Live Preview

On this page

Related articles

Explore more product articles and best practices for teams building with Ambisius.

Still Using Spreadsheets?
You Should Try This.

Turn familiar spreadsheets into a structured system built for your business

Try Ambisius for Free

No commitment. No credit card required.

Logo Light

© 2026 Ambisius. All rights reserved.