©Code byMilanParmar

Personalization platform

A generic personalization platform for generating large volumes of individualized web experiences from reusable templates and contact data. Users upload CSV, Excel, Google Sheets, JSON, or other supported datasets, map fields to variables such as {{contact.firstname}}, configure templates, preview the result, and generate unique personalized pages at scale. I built it as a microservice architecture with NestJS, PostgreSQL, Redis, background queues, Cloudflare storage, and a dedicated video-processing service so large generation workloads run asynchronously.

Category
SaaS
Industry
Marketing technology
Type
Personalization & campaign platform
Year
2026
Result
A generic personalization platform capable of turning large contact datasets and reusable templates into thousands of individualized web experiences, with asynchronous processing, personalized video, forms, analytics, and exports.

The product

One template. Thousands of personalized experiences.

The platform lets a company upload a contact dataset, map its fields to reusable variables, provide a template, and generate an individualized web experience for every contact.

The idea

Personalization without building every page by hand.

Instead of creating separate pages for every recipient, the platform takes one reusable template and combines it with contact data to automatically produce unique experiences.

Data

Start with the contact list.

Users can import large datasets from supported sources, map their fields to the platform's variables, validate the data, and preview how a real contact will appear before generation begins.

Templates

Give the platform the page you want to generate.

Users can provide an HTML template and use variables such as {{contact.firstname}} or {{contact.company}} wherever personalization is needed.

  1. 01

    Contact dataset

  2. 02

    Variable mapping

  3. 03

    Template

  4. 04

    Job queue

  5. 05

    Workers

  6. 06

    Personalized pages

  7. 07

    Responses & analytics

Scale

100,000 contacts shouldn't mean one giant request.

Large generation workloads are broken into background jobs using Redis and queues. Workers process contacts independently, track progress, retry failures, and allow the application to remain responsive while generation continues.

Personalized video

The same system can personalize more than HTML.

Dedicated video blocks allow predefined video content to use contact information such as names, company information, and existing contact images. Video processing is separated into its own microservice so it doesn't block the main generation pipeline.

Generated pages

Every contact gets their own experience.

Each generated page receives its own unique URL based on the campaign's configured identity, allowing individualized experiences to be shared and tracked separately.

Forms

The page can start a conversation too.

Generated pages can contain configurable forms. Submissions are stored with their campaign and contact context so the responses can be reviewed later in the dashboard.

Analytics

See what happens after generation.

Campaign owners can monitor generated pages, activity, interactions, submissions, processing status, and other campaign-level information from the dashboard.

Architecture

Built to process the heavy work in the background.

The platform uses a microservice architecture with NestJS, PostgreSQL, Redis, background workers, Cloudflare storage, and a dedicated video service to separate user-facing operations from expensive processing workloads.

  1. 01

    React

  2. 02

    NestJS APIs

  3. 03

    PostgreSQL

  4. 04

    Redis

  5. 05

    Generation workers

  6. 06

    Video service

  7. 07

    Cloudflare storage

Campaign lifecycle

Import. Generate. Engage. Learn.

The platform connects the entire campaign lifecycle — from importing contacts and configuring a template to generating pages, collecting responses, analyzing activity, and exporting the final dataset.

  1. 01

    Import contacts

  2. 02

    Configure template

  3. 03

    Generate

  4. 04

    Publish pages

  5. 05

    Visitor interaction

  6. 06

    Collect responses

  7. 07

    Export CSV

The result

A reusable engine for personalized campaigns.

The result is a generic platform that can turn large contact datasets into individualized web experiences without requiring a developer to manually build every page.

Features

  • Multi-format data import

    Campaigns start from CSV, Excel, Google Sheets, JSON, or other supported tabular sources, with column mapping, validation, and duplicate handling.

  • Variable mapping

    Contact fields become reusable variables such as {{contact.firstname}}, {{contact.company}}, and {{contact.image}}, with fallbacks and missing-field handling.

  • HTML template system

    Users provide the page structure, insert variables throughout text, images, links, buttons, forms, and metadata, then preview with real contact data.

  • Bulk page generation

    One template plus a contact dataset produces individualized pages, each with a unique URL based on campaign identity, username, identifier, or slug.

  • Async job queues

    Redis-backed queues break generation into contact-level jobs so workers can process, retry, resume, and track progress without blocking the app.

  • Personalized video

    Dedicated video blocks can insert contact names, images, and company data. Video generation runs in its own microservice so it does not stall HTML generation.

  • Dynamic forms

    Generated pages can collect submissions with custom fields. Responses stay associated with the campaign and contact, then show up in the dashboard.

  • Campaign analytics

    Owners can monitor generated pages, views, link interactions, form submissions, processing progress, and failed generations.

  • CSV export

    Collected campaign data can be exported with original contact information, generated URLs, form responses, activity, and processing status.

Outcomes

  • Generic personalization platform
  • Large dataset import
  • CSV / Excel / Google Sheets / JSON support
  • Contact field mapping
  • Reusable HTML templates
  • Variable-based personalization
  • Live template preview
  • Unique personalized URLs
  • Redis-backed job queues
  • Background generation workers
  • Retry and failed-job handling
  • Personalized video blocks
  • Dedicated video microservice
  • Dynamic forms
  • Campaign analytics
  • Response collection
  • CSV exports
  • Microservice architecture
  • Authentication and authorization
  • Production infrastructure

Results

  • ~100K

    contacts

  • ~1 hour

    generation