Aller au contenu
PrimeTelecom · Customer Portal

Customer Self-Service Portal

The subscriber-facing half of the PrimeTelecom stack — built so customers rarely need to call support at all.

Lecture ~2 min
Année 2024
Durée 4 months
Équipe 2 engineers
Statut Live · December 2024

Un aperçu du produit.

After the operations dashboard launched, PrimeTelecom's support team was still fielding ~2,400 tickets per month — roughly 60% of them trivial: bill questions, plan changes, password resets. Routine things that shouldn't need a human on either end.

We built PTKE, the customer-facing portal, on the same stack as PrimeAdmin so both systems could share components, infrastructure, and domain models. The mission wasn't to add features — it was to move the boring 60% of support load to self-service, letting the team focus on the 40% that actually needs them.

Defi

Telecom subscribers range from tech-fluent urban users who expect app-quality UX to retired subscribers in rural areas who call support because they can't find their last invoice. A portal that only serves the first group is a failure — we needed interactions that degrade gracefully for the second.

The portal also had to integrate with everything PrimeAdmin orchestrated: live billing, plan catalog, ticketing, network status. It couldn't be a static marketing site with a password field grafted on.

Approche

PTKE uses the same Laravel + Inertia + Vue stack as PrimeAdmin. Shared team knowledge, shared UI components, shared infrastructure — but completely separate authentication realms, data access rules, and deploy pipelines. PrimeAdmin operators can never accidentally view a subscriber portal page and vice versa.

The billing integration is live: subscribers see real-time balance updates after paying (Reverb WebSockets), and their invoices are generated on-demand as PDFs. Horizon handles the billing reconciliation jobs in the background.

Scramble auto-generates OpenAPI 3.1 docs from Laravel routes, which turned out unexpectedly valuable — PrimeTelecom's mobile app team consumed the same API, and shipped their iOS/Android apps against a stable, versioned contract without having to coordinate with us on every endpoint change.

A portal that only serves tech-fluent users is a failure — we built for the retired subscriber who can't find their last invoice.

Principales fonctionnalités livrées.

  • Self-service plan changes, add-ons, upgrades, and cancellations
  • Billing history with downloadable PDF invoices (generated on-demand)
  • Online payment via Stripe (international) and Netopia (Romanian cards)
  • Support ticket creation with status tracking and chat-style replies
  • Password and account recovery flows without any support contact
  • Auto-generated OpenAPI 3.1 docs powering PrimeTelecom's mobile app
  • Real-time balance and service status updates via WebSockets
  • Responsive design tested on older Android devices and slow networks

Des résultats concrets, mesurés en production.

Routine Tickets
–48%
Drop in first 3 months post-launch
Activation Rate
28%
Subscribers using self-service within 60 days
API Stability
100%
Mobile app shipped against stable contract
Time to Launch
4 mo
Concept to production, 2-person team

Routine support tickets dropped 48% in the first 3 months. 28% of subscribers activated self-service within 60 days. The mobile app team shipped against the auto-generated API contract with zero breaking changes.

Technologies utilisées, regroupées par rôle.

Backend
Laravel 12 PostgreSQL Laravel Horizon Laravel Reverb
Frontend
Inertia.js Vue 3 TailwindCSS 4
Intégrations & API
Scramble (OpenAPI) Stripe Netopia