Skip to content
Back to work
Case study

A client portal that replaced the inbox

Replaced email threads and shared drives with a secure role-gated portal — clients track milestones, download deliverables, and see updates in one place.

Vantage Advisory2025Illustrative
  • Client portal
  • Cognito
  • Lambda
  • Next.js
  • Role-based access
By the numbers
Role-gated (client / admin)
Access model
Self-serve portal
Deliverable distribution
Built in from day one
Audit trail
how it's built
Client portalserverless · client portal
Client appNext.js · static
Cognitoauth
API GatewayREST
LambdaREST
DynamoDBprojects / updates
S3deliverables
Your projects
Atlas rebuildUpdated 2d agoIn build
Marketing siteUpdated 1w agoLive
Mobile appUpdated 3d agoReview
Projects
Atlas rebuild
Progress72%
72%Progress
14Updates
Deployed to stagingdeploy · 2d ago
Settlement schema signed offmilestone · 5d ago
Q3-report.pdfdeliverablePDF
Project detail
Role-gated
Clients see only their own projects — every read is scoped by the Cognito-issued token, never a shared view.
One place
Milestones, updates, and deliverables live in a single portal instead of scattered across email threads.
Delivery & environmentsCI/CD
Sourcegit push
CIlint · typecheck · test
BuildNext build (static) · CDK synth
DeployS3 + CloudFront · CDK
devstagingprod

Every pull request gets a throwaway preview environment; merges promote the static frontend and the API through dev → staging → prod behind a manual approval. The static export means a frontend deploy is an atomic S3 sync + CloudFront invalidation — instant, and instantly reversible.

01The problem

Vantage Advisory managed project communications across long email threads and a tangle of shared-drive folders. Status updates were delivered manually; clients had no single place to see where things stood without sending a request. The team spent hours each week on communication logistics rather than advisory work.

02The approach

We built a secure portal with Cognito for authentication and role-gated access — admins manage projects and publish updates; clients see only their own work. A Lambda and DynamoDB backend stores milestones, file references, and a structured update feed. The Next.js frontend is fully static-first: fast to load, simple to deploy, and inexpensive to run. Every action — update published, file uploaded, milestone reached — is recorded with a timestamp, giving both sides a complete audit trail.

03The outcome

The advisory team reclaimed the hours previously spent on status updates. Clients check their portal instead of sending a follow-up email. Deliverables are available on demand, and the full project history is visible to both sides — so every conversation starts with shared context.

05Start a project

Let’s write the next system into being

Tell us what you’re building. We’ll reply within two business days with a frank read on scope, shape, and whether we’re the right studio for it.