CASE STUDY / CUSTOMER COMMUNICATIONS

Every message.
Accountable delivery.

VectaSinq is an event-driven notification platform for safe, template-led customer communications. It delivers LeCore identity, account, payment, profile, and KYC notifications through email and an authenticated in-app inbox.

Java 21Spring BootKafkaPostgreSQLAngular
2delivery channels
16supported notification types
0tokens in Kafka

01 / Overview

Notifications are a system of record, not a side effect.

Financial applications cannot treat email as an afterthought. A lost reset notification creates a support burden; a duplicated security alert erodes trust; an exposed action token becomes a security incident.

VectaSinq separates notification delivery from LeCore’s banking and identity decisions. It owns templates, recipient preferences, channel selection, delivery attempts, retries, and history—without reading or writing LeCore databases.

02 / Design goals

Deliver safely, recover visibly.

Safe boundaries

Kafka events carry stable IDs, type, correlation ID, channel permissions, and safe display data—not passwords, sessions, email addresses, or action tokens.

Reliable delivery

Idempotent intake, persisted request state, SMTP attempts, bounded retry, and dead-letter records make message handling inspectable.

Human operations

Angular operations screens and Grafana telemetry turn delivery health, failures, and lag into evidence a support team can act on.

03 / Architecture

LeCore decides. VectaSinq delivers.

LeCore Identity
decisions + tokens
safe event
Kafka
versioned contract
idempotent intake
VectaSinq
templates + delivery
SMTP
Email provider
SendGrid (locally + prod)
PostgreSQLRedisOpenTelemetryPrometheus + Grafana

LeCore synchronizes the necessary recipient address through an authenticated internal API. For reset and verification messages, VectaSinq fetches a one-time action URL from LeCore only while rendering; the URL is never persisted in VectaSinq.

07 / Integrations

One delivery boundary across the platform ecosystem.

LeCore

LeCore identity, gateway, customer, account, payment, and ledger services publish versioned notification requests through Kafka outboxes. Identity-service synchronizes recipient addresses and resolves short-lived action links only while an email is rendered.

Einhaltung

Einhaltung is LeCore’s separate compliance and AML platform. It consumes approved LeCore events through its own gateway and compliance services; VectaSinq remains the communication boundary and does not read Einhaltung or LeCore databases.

Delivery and operations

PostgreSQL stores templates and delivery state, Kafka carries safe events, MailHog supports local inspection, SendGrid provides production email, and Prometheus, Grafana, Jaeger, and OpenTelemetry provide operational evidence.

08 / End-to-end notification flow

Every channel starts with a safe, traceable event.

  1. 1LeCore writes the identity change, recipient-sync work, and safe notification request to its transactional outbox.
  2. 2Recipient sync securely upserts the address into VectaSinq; the outbox publishes only after that succeeds.
  3. 3VectaSinq deduplicates the Kafka eventId, selects the active email template, and persists a delivery request.
  4. 4For verification or reset, VectaSinq resolves an opaque correlationId with LeCore at render time.
  5. 5LeCore generates and hashes a short-lived token; VectaSinq uses the returned URL only in memory for the outgoing email.
  6. 6Delivery attempts are persisted. Transient failure retries; terminal failure is retained and emitted as a dead-letter event.
  7. 7For profile completion and KYC, customer-service emits customer.profile_updated, customer.kyc_submitted, and customer.kyc_approved to both permitted channels. Administrator approval resolves the target customer’s stable identity before its outbox record is written.
  8. 8The customer inbox is scoped to the authenticated LeCore user; delivery status, retries, dead letters, and lag are visible to authorized operations users in the dashboard and telemetry.

05 / Security

Identity stays with identity.

LeCore owns identity

LeCore owns account status, session validation, password changes, action-token issuance, expiry, and consumption.

Messaging stays focused

VectaSinq owns only messaging data and validates LeCore sessions for its operations API.

Boundaries stay distinct

Internal recipient sync and action-link calls have distinct service authentication boundaries.

Operations stay controlled

The Angular operations dashboard requires an OPS_ADMIN LeCore session; Grafana remains an engineering-only surface.

09 / Observability

Delivery you can explain.

Evidence at every hop

Actuator metrics, OpenTelemetry traces, Prometheus, Grafana, and Jaeger provide operational visibility. MailHog supports local inspection without exposing real recipients.

Purpose-built operations UI

The Angular dashboard presents safe delivery aggregates, retry and dead-letter counts, recent status, and access-controlled operational context for demos and support workflows.

10 / Current and planned features

Expand VectaSinq deliberately.

The platform’s current vertical slice is operational; planned extensions preserve the same safe event and delivery boundaries.

Available

In-app notifications

Persistent customer notifications with unread counts, read state, authenticated user scoping, email templates, and in-app delivery.

Available

Versioned templates

Active email templates are seeded and versioned by notification type, with safe variable validation and channel-aware rendering.

Available

Transactional outboxes

Identity, account, payment, ledger, and customer services persist notification events with their business changes before Kafka relay.

Available

Recovery and evidence

Intake mappings, delivery attempts, exponential retry, dead-letter records, provider evidence, and operational metrics make failures explainable.

Planned

SMS, push & WhatsApp

Provider adapters with channel policy, consent, and provider-specific delivery evidence.

Planned

Preferences

Opt-in/out controls, quiet hours, suppression rules, and an encrypted recipient directory.

Planned

Rate limits

Redis-backed per-recipient and per-channel limits to prevent alert fatigue and provider overload.

Planned

Retry & dead-letter operations

Configurable backoff, replay tooling, reason codes, and operations runbooks for failed delivery.

Planned

Analytics

Channel success rates, delivery latency, engagement, and tenant-level operational reporting.

Outcome

A messaging platform that respects the boundary around money and identity.

VectaSinq demonstrates that customer communication can be distributed, observable, and failure-aware without broadening the attack surface of the banking core.