Anonymized engineering case study

AI-Assisted Customer Portal

Current focus

A modern customer portal concept combining authenticated customer access, support workflows, intelligent document search and AI-assisted communication.

  • Angular
  • Node.js
  • Express
  • MongoDB
  • AI integration

My contribution

Designing the portal and API architecture, and the integration boundary that lets AI-assisted search and communication be added to a business application without compromising authorization or data ownership.

Key capabilities

  • Angular customer portal
  • Node.js APIs
  • Secure authentication
  • AI integration architecture
  • Knowledge retrieval
  • Support workflows

Project context

Customers of a business application usually have a small number of recurring needs: see my own records, find a document, ask a question, get an answer. Traditionally each of those is a separate screen and, eventually, a support email.

This is a current technical focus rather than a delivered client project: a portal concept where authenticated customer access, support workflows and AI-assisted retrieval are designed together instead of layered on afterwards.

Technical challenge

Adding AI assistance to a business application is mostly an authorization problem wearing a different hat. A retrieval layer that can read everything will happily answer a question using a document the person asking was never allowed to see.

The design question is therefore not which model to call, but where the boundary sits — how retrieval stays scoped to the requesting customer, and how the application remains fully functional and correct if the assisted layer is unavailable.

  • Scoping retrieval to what the requesting user may access
  • Keeping the assisted layer optional, never load-bearing
  • Preventing customer data leaking across tenants
  • Designing an integration boundary that can outlive one provider

Architecture

The portal is an Angular application over the same class of Express and MongoDB API as the rest of my work, with authentication and per-customer scoping enforced server-side.

The AI-assisted capability sits behind an internal interface rather than being called directly from the UI. Retrieval is filtered by the caller’s permissions before anything is passed onward, so the assisted layer can only ever work with documents that user could already open. That indirection also means the underlying provider is a swappable implementation detail.

  • Angular portal with authenticated, per-customer scoping
  • Express and MongoDB API layer
  • Permission-filtered retrieval ahead of any AI call
  • Provider-agnostic interface rather than direct UI calls
  • Graceful degradation when assistance is unavailable

Features

The capability set the architecture is being designed around.

  • Authenticated customer access to their own records
  • Support request workflows with visible status
  • Intelligent search across permitted documents
  • AI-assisted drafting of customer communication
  • Knowledge retrieval scoped by role and ownership
  • Full functionality retained without the assisted layer

Security considerations

The governing rule is that assistance never widens access. Retrieval runs against a permission-filtered set, so there is no path by which an answer can be composed from data the requester could not have opened directly.

  • Per-customer data isolation enforced server-side
  • Retrieval scoped by permissions before any model call
  • No credentials or provider keys exposed to the browser
  • Assisted output treated as a draft for human review

UX considerations

Assistance should feel like a shortcut, not a black box. Results point back to the underlying document, drafted text is clearly a draft, and every task remains completable the ordinary way for anyone who would rather do it themselves.

  • Answers linked back to their source documents
  • Assisted text presented as an editable draft
  • Conventional navigation always available alongside search
  • Clear indication when assistance is offline

Lessons learned

Designing the permission boundary before the feature is what makes assisted retrieval safe to add at all. Retrofitting scoping onto a retrieval layer that already reads everything is a much harder problem.

Treating the assisted layer as optional keeps the product honest: if the application is only usable when assistance is working, the assistance has quietly become a dependency rather than a benefit.

Technologies

  • Angular
  • TypeScript
  • Node.js
  • Express
  • MongoDB
  • Authentication
  • Knowledge retrieval

Next step

Have a similar system to build?

Tell me what you are working on — the business problem, the constraints, and where the current setup falls short.

kreshnik.zabergja1@hotmail.com+383 44 919 372