SaaS · affiliate marketing

Affiliate reactivation system: read-only analytics and a personal win-back sequence for lapsed partners

A system that reads an affiliate-tracking platform strictly read-only, picks the lapsed affiliates most likely to return and runs a personal four-step win-back sequence in their own language.

Client
Client confidential
Industry
SaaS · affiliate marketing
Year
2026

Challenge

The client's affiliate program had many partners who had stopped sending traffic or sales. Nobody could say which of them were worth a personal message, or whether a message had brought anyone back. The data lived in the client's affiliate-tracking platform, and the integration had to be unable to change anything there.

Solution

We built a system that syncs the tracking platform read-only, first with a full import and then incrementally, computes activity metrics with data-quality flags, segments affiliates and gives each a reactivation score. A dry-run shortlist states the reason for every pick. The sequence has four steps in the affiliate's own language and re-checks the tracking platform before each step, so an affiliate who becomes active again leaves automatically. Any human reply stops the sequence, is classified by AI and becomes a task for an affiliate manager.

How it connects

  1. 01 Read-only sync
  2. 02 Activity metrics & data quality
  3. 03 Segment & score
  4. 04 Dry-run shortlist
  5. 05 Four-step sequence with re-checks
  6. 06 Replies become manager tasks
  7. 07 Reactivation tracking

What we delivered

  • Read-only integration with the client's affiliate-tracking platform through a PHP bridge to its official API client
  • Activity metrics, segmentation, priorities and a reactivation score
  • Dry-run shortlist with the reason for each pick
  • Four-step sequence with a template set in five languages
  • IMAP reply handling with AI classification into manager tasks
  • Reactivation detection and attribution on a dashboard
  • About 90 automated tests run on SQLite and PostgreSQL, plus a local demo mode against a fake API

Functionality

  • Read-only by construction: only an allow-list of read operations is callable, enforced in two layers, and a test proves a full import makes read calls only
  • Rate-limited transport: one request per second, back-off on throttling and automatic re-login
  • Timezone normalization to UTC and idempotent upserts with sync cursors
  • Missing click dates are never invented; each profile carries a data-quality grade
  • Business rules exposed as settings: activity windows, segment and priority thresholds
  • Weekly job that enrolls newly lapsed affiliates
  • Re-check against the tracking platform before every step of the sequence
  • Template language chosen from the partner's profile
  • Role-based dashboard

Integrations

  • Affiliate-tracking platform API, read-only, via its official PHP client
  • SMTP sending and IMAP reply handling
  • Google Gemini API for reply classification

Technologies

  • Python 3.12
  • FastAPI
  • SQLAlchemy 2 + Alembic
  • PostgreSQL 16
  • Jinja2
  • PHP (API bridge)
  • httpx
  • APScheduler
  • Docker Compose
  • Nginx + Let's Encrypt
  • pytest

Result

Built and tested. Sending stays in dry-run mode until the client approves a pilot. The read-only guarantee is covered by an automated test, so the integration cannot write to the tracking platform even by mistake.

The system shares its outreach core and global suppression list with the startup discovery & outreach platform, and runs as a separate instance with its own database and dashboard.

Discuss your project

Tell us about your project