07 / Automation

Lifecycle Reengagement Automation

One reengagement engine that finds dormant records, writes to them, and sends on schedule, with the system of record swapped underneath.

Summary

The engine finds records that have gone quiet in whichever system holds them, generates outreach written to that specific record, and delivers it on a schedule. It runs today against Follow Up Boss, ResMan and AppFolio. It turns cold pipeline back into conversations without anyone being assigned to work the list.

Context

The pile of quiet contacts grows on its own in any business with inbound volume, and nobody has the hours to write to them one at a time, so the list sits there. The wrinkle here is that the records do not all live in the same place: leasing and property management run on their own platforms while the sales side runs on a CRM, so any solution that only spoke to one of them would only solve part of the problem.

What I built

  • Dormancy detection measured against activity in the source system, so quiet is defined by what that system actually records
  • A per-platform adapter for each system of record, so the same engine reads Follow Up Boss, ResMan and AppFolio
  • Outreach generated per record with GPT against what that record contains, rather than filled into a template
  • Scheduled delivery that spreads sends over time instead of firing a single blast
  • Tracking of what was sent, per record
  • Results written back to the source system, so a record that has been contacted stops looking dormant on the next pass
  • Built in Google Apps Script

Diagram

One engine, three interchangeable systems of recordFollow Up Boss, ResMan and AppFolio each connect through their own thin adapter into a single reengagement engine. Inside the engine the stages run in sequence: detect, personalize, schedule, send. Outreach goes out to the recipient, and the result returns to whichever source system the record came from.THE ENGINE IS THE CONSTANTOne engine, three systems of recordEach platform gets a thin adapter. The reengagement logic does not change.SOURCE SYSTEMSFollow Up BossSales CRMResManProperty managementAppFolioProperty managementADAPTERSadapteradapteradapterREENGAGEMENT ENGINEOne place, four stagesDetectDormancy against activityPersonalizeGPT drafts per recordScheduleSpread over timeSendOutreach goes outRecipientThe quiet record, written to directlyBACK TO ITS OWN SYSTEMTrack, write backThe record leaves the dormant pool
One engine, three interchangeable systems of record. Each platform gets a thin adapter, and the result returns to whichever system the record came from.

How it works

  • 01

    Read

    The engine pulls records through the adapter for whichever platform holds them.

  • 02

    Detect

    Dormancy is measured against activity in that system, not against a separate copy of the data.

  • 03

    Personalize

    GPT drafts the outreach against what the record actually contains.

  • 04

    Schedule

    Delivery is spread over time instead of going out as one blast.

  • 05

    Send

    The outreach goes out to the record.

  • 06

    Track

    What was sent is tracked, and the outcome is written back to the source system so the record leaves the dormant pool.

Detail

The system of record is an input

The interesting part is not the generation, it is that the engine treats the system of record as an input. Reengagement logic, dormancy rules, generation and scheduling sit in one place, and each platform gets a thin adapter. Adding a fourth system is an adapter, not a rewrite. That is why the same engine covers a sales CRM and two property management platforms at once.

Outcome

Quiet records become conversations on a schedule with no one assigned to the list, and it runs the same way across three platforms.

My role

Designed and built it end to end.

Stack

  • Google Apps Script
  • GPT
  • Follow Up Boss
  • ResMan
  • AppFolio