← Selected work

Client project · Product and operations

One place for customer requests and staff work

A customer portal and staff workspace that connect requests, documents, assignments, progress, and billing reports.

Custom software for a client

Product and workflow design · Application development

The problem

One request crosses several responsibilities.

A service request involves more than an intake form. Customers need to provide documents and see progress. Staff need to know what has arrived, who is responsible, and what happens next.

I built a customer portal and staff workspace through Outermost around a common record of the work. The product connects the customer experience with the team’s queue, supporting documents, progress updates, and reporting.

Scroll across to explore the interface.

View full-size screenshot →
An anonymized customer portal branded Northline, showing sample request counts, status summaries, and recent activity.
Real client identity withheld. The working interface is shown with illustrative Northline branding and sample data.

The work

Connect visibility with responsibility.

Give customers a useful view of their work.

Customers can submit requests and follow progress from their own portal. Requests, supporting documents, and updates stay connected, so the view reflects the work the team is managing.

Give staff a shared queue.

Staff can triage, assign, and manage requests from the same underlying records. The workspace connects assignments with the documents and status information needed to carry the work forward.

Make access part of the workflow.

Customer and staff views expose the records and actions appropriate to each user. Access checks use the customer context, signed-in identity, and permitted actions, so sharing an application does not mean sharing every record.

What it provides

A common record, with different views.

The delivered application supports customer intake and visibility alongside staff assignment and follow-through. Billing summaries are brought into reporting views through a read-only import, keeping reporting available within the workspace.

A request through the platform

The request record connects the customer’s view with the team’s responsibilities.

  1. 01 · CustomerSubmit a request and documents
  2. 02 · StaffTriage and assign the work
  3. 03 · Shared recordKeep progress and documents together
  4. 04 · CustomerView updates and results
Implementation details

System architecture

The application and its infrastructure.

Selected application and integration paths
Client operations platform architectureCustomer and staff interfaces connect to a Next.js application behind an AWS load balancer on ECS Fargate. The application uses RDS PostgreSQL, S3 and KMS. An external billing data source supplies reporting imports, EventBridge and Lambda trigger notification sweeps, and Resend delivers email. Requests Operations Import Email Trigger Customer portalSubmit requestsTrack status and reports Staff workspaceTriage, assign and resolveManage customer accounts Next.js applicationReact / Auth.js / DrizzlePermissions & workflow logicRequests, documents & reportsAWS ALB → ECS Fargate Billing data sourceRead-only import ResendSign-in & notification email EventBridge + LambdaScheduled notification sweeps Amazon RDSPostgreSQL application records Amazon S3Document storage AWS KMSField encryption keys INFRASTRUCTURE AS CODEAWS CDK · Containerized application · Separate development and production stacks

Customer and staff views connect to one application, with separate services for records, documents, reporting imports, and notifications.

Providers and responsibilities
  1. Customer and staff interfaces

    Customers submit requests and view progress. Staff triage, assign, and manage the work.

  2. Next.js · AWS ECS Fargate

    A containerized React application uses Auth.js and Drizzle, with an AWS application load balancer handling web traffic.

  3. Amazon RDS, S3, and KMS

    PostgreSQL stores application records, S3 stores documents, and KMS supports field encryption.

  4. Billing data source

    A read-only integration imports billing summaries for the reporting views.

  5. EventBridge + Lambda

    Scheduled jobs trigger notification sweeps in the application.

  6. Resend

    Email delivers sign-in links and notifications.

The containerized application runs on AWS ECS Fargate behind a load balancer. Application records, documents, and encryption keys use separate AWS services. Reporting imports and notification jobs connect through the application.View the full diagram →

Access and delivery

Server-side checks combine customer context, identity, and permitted actions. Transactional records, documents, and imported reporting summaries have distinct storage and access responsibilities.

AWS CDK defines separate development and production stacks. The application ships as a Docker container, keeping deployment configuration and application code maintainable together.

Contact

What are you working through?

hello@outermost.us