Eight workflows. None of them quote a price. Every pricing question in every workflow routes to a human or to the advisory call booking at bookings.appbo.io.
1. Completion Capture and Path Assignment
Trigger: course completion event, or an opportunity moving to Completed on the Student Success pipeline.
Steps:
- Write course_completed_code, completion_date, completion_band, attendance_rate_at_completion, tutor_name, cohort_name.
- Apply alumni, completed-[course_code] and grad-window. Create the opportunity in Just Completed.
- Resolve the progression map: branch on completion_band, then on who funded the last course, then on alumni_segment if already known. Write next_course_recommended and progression_path, and apply path-[next_course_code].
- If no path resolves, write progression_path as none and apply no path tag. These records get workflow 8 only.
- Check prerequisite_met against the recommended course. If a prerequisite is missing, substitute the bridging course rather than sending an offer the person cannot accept.
- Send the certificate email with the Completion Reflection form as the single call to action. Nothing else goes out on day 0.
- Wait 3 days. If the reflection is not submitted, send one reminder. Wait 5 more days, one final SMS: "Hi [first name], two minutes on how [course name] went would really help us: [link]". Then stop asking.
Branches: if the contact carries complaint-open, skip the reflection and all of workflow 2, and create a task for the program lead instead.
Stop conditions: do-not-market applied at any point stops everything except the certificate itself.
2. Graduation Window Sequence, Days 0 to 30
Trigger: grad-window applied. This is the highest-value sequence in the build and the one most often wasted.
Conditions: requires progression_path not equal to none, and no complaint-open or detractor tag.
Steps:
- Day 3, email from the tutor. Subject: "What you did well, and what comes next". One personal paragraph on their work, then one sentence on the mapped next course and a link to the progression page. No offer, no price, no urgency.
- Day 7, email. One piece of genuinely useful content from the next course - a real lesson, a tool, a worked example. The point is to demonstrate rather than describe.
- Day 14, taster invitation. Email plus SMS with two or three dated taster sessions and the seat count. SMS: "Hi [first name], we're running a free hour of [next course name] on [date] with [tutor name]. Want a seat? [link]"
- Day 21, branch on engagement. If interest_score has moved at all, hand to workflow 4. If it has not, send the alumni webinar invitation and nothing more aggressive.
- Day 28, one direct ask. Email naming the next cohort start date, what the course covers and the Next Step Interest form. This is the only message in the window that asks directly, and the only one framed as a decision.
- Day 30, close the window. Remove grad-window, apply grad-30d, move the opportunity to Nurture.
Stop conditions: any form submission, taster booking or advisory booking exits to workflow 4 or 5. email-opt-out suppresses the email legs, sms-opt-out the SMS leg.
3. Progression Path Nurture, Month 2 to Month 12
Trigger: stage moves to Nurture.
Steps:
- Send one path-specific content email every 21 days, drawn from the content set for progression_path. Four pieces of content cycling with a fifth slot that carries a dated cohort announcement.
- Every third message is an invitation rather than content: a taster, a webinar, or the Next Step Interest form.
- At each cohort enrollment deadline for next_course_recommended, send one dated announcement to the whole path: the start date, the application close date, remaining seats. Real dates and real seat counts only - never a fabricated scarcity line.
- At 90 days apply grad-90d, at 180 days grad-180d, at 365 days grad-12m. Use these to vary tone, not frequency.
- Every message carries a single secondary call to action: refer a colleague, with the shareable referral link.
- At 12 months with no engagement at all, hand to workflow 8's dormancy branch.
Branches: graduates whose employer funded the last course get one extra message per cycle framed for forwarding to a manager, with the business-case asset attached.
Stop conditions: interest-hot, any booking, Enrolled Next, Closed - Not Progressing, or any opt-out.
4. Interest Scoring and Hot Handoff
Trigger: any tracked engagement event.
Scoring, additive, with a 60-day rolling decay:
- Progression page visit, 5. Third visit or more in 14 days, 15 instead.
- Syllabus download, 20.
- Pricing or fees page visit, 25. The strongest single passive signal in the build.
- Webinar registration 10, attendance 20.
- Taster registration 25, attendance 40.
- Next Step Interest form submitted, 50.
- Reply to any progression message asking a question, 30.
- Three or more email opens with no clicks, 5. Weak, but not zero.
Steps:
- Write interest_score, increment interest_signal_count, write last_engagement_date and last_engagement_type.
- At 30 or above, apply interest-warm and shorten the nurture interval from 21 days to 10.
- At 60 or above, apply interest-hot, move to Interest Shown, pause workflows 2 and 3, and create a task for advisor_assigned due in 2 working hours.
- Send one SMS from the advisor by name: "Hi [first name], [advisor name] here from [provider]. Saw you were looking at [next course name] - happy to talk through whether it's the right fit, no pitch. 20 minutes: [advisory link]"
- Wait 24 hours. If no booking, the advisor calls. Wait 48 more hours, one email with two suggested times.
- If no response after 5 days, remove interest-hot, return to Nurture at the shortened interval, and keep interest-warm.
Stop conditions: booking made, or do-not-market. Decay the score by 10 points per 30 days of no engagement so a record cannot sit hot forever on old signals.
5. Taster and Webinar Follow-up
Trigger: taster or webinar registration.
Steps:
- Confirmation immediately with date, joining link and what will be covered. Move to Taster Booked.
- Reminders at 2 days and 1 hour before. SMS for the one-hour reminder, with the joining link only.
- Attended branch, same day within 3 hours: email with the session recording, the syllabus, and one question - "Does this look like the right next step for you?" A question gets replies; a brochure does not. Apply taster-attended, add 40 to interest_score, which usually triggers the hot handoff on its own.
- Wait 48 hours. If no reply and no booking, the tutor who ran the taster sends one short personal note. A message from the person who taught the hour outperforms one from an advisor at this exact point.
- Wait 4 days, then the advisory call offer if the hot handoff has not already fired.
- No-show branch: within 2 hours, the recording plus the next two dates. One message. Do not treat a no-show as a lost lead - calendar conflicts are the usual cause, and they re-register at a decent rate.
Stop conditions: advisory call booked, enrollment, or opt-out.
6. Advisory Call, Outcome Capture and Enrollment
Trigger: booking on the Next Step Advisory Call calendar.
Steps:
- Move to Advisory Call Booked, apply advisory-booked, write advisory_call_date, pause every automated sequence. A live human conversation always outranks a drip.
- Confirmation with an agenda in three bullets and a brief on what to think about beforehand. Reminder 24 hours and 1 hour before.
- Brief the advisor automatically: an internal note with completed course, band, tutor, NPS score, their own words from the reflection, every signal in last_engagement_type, and the mapped recommendation.
- After the call the advisor must set advisory_call_outcome: enrolling now, wants the next cohort, objection held, not progressing, or no show. The workflow blocks on this field, by design.
- Enrolling now: move to Enrolled Next, send enrollment and payment links, write offer_sent_date, and chase at 2 days, 5 days and 9 days if offer_status is still open, then hand to a human.
- Wants the next cohort: move to Waitlisted, write cohort_target_start and waitlist_position, and schedule one message 30 days before that cohort opens plus one when it does.
- Objection held: write objection_primary and objection_notes, move to Objection Held, hand to workflow 7.
- Not progressing: move to Closed - Not Progressing with a reason, suppress all progression messaging, keep them on the webinar and advocacy lists only.
- No show: one rebooking message within 2 hours, one call task, then return to Nurture with interest-warm retained.
Stop conditions: enrollment confirmed, or closed.
7. Objection-Specific Follow-up
Trigger: stage moves to Objection Held. Branch on objection_primary and do something genuinely different in each branch. A generic follow-up sequence here wastes the most qualified records in the build.
- Cost: no automated message about money. Create a task for the advisor to discuss funding routes and installment options on a call, and send only a short note saying the advisor will call with options. Pricing conversations are human-only in this build.
- Timing: write follow_up_date from what they said, move to Waitlisted if they named a cohort, and go silent until 21 days before that date. Then one message referencing the exact reason they gave: "You mentioned [reason] would be sorted by now - is [cohort date] workable?"
- Employer approval: send the business-case asset within 1 hour, with an explicit offer for the provider to speak to their manager. If they supply employer_contact_email, start the employer track: Employer Team Training Review invitation, then two follow-ups at 4 and 9 days, and a task for the account owner.
- Relevance: treat this as a map error, not an objection. Task the academic lead to review, and send nothing until a human has decided whether a different course fits. If none does, close honestly.
- Confidence: send one message with a named past learner's consented story at a similar starting point, plus an offer of a conversation with the tutor rather than an advisor. Then one follow-up at 14 days and stop.
- Every branch sets follow_up_date and creates a dated task. No objection record is ever left without a next action and a date.
- At the follow-up date, if nothing has changed, return to Nurture keeping the objection tag, so the next cohort announcement is phrased around that objection.
Stop conditions: enrollment, or an explicit no, which closes the record.
8. Advocacy, Referral and Dormancy
Trigger A, advocacy: Completion Reflection submitted.
- Branch on nps_score. 9 to 10: apply promoter. Wait 1 day, send the review request naming one platform with a direct link. Wait 3 days, if no review, one reminder, then stop. Separately send the testimonial and consent form.
- 7 to 8: apply passive. No review request. One email asking what would have made it a ten, which routes to the program lead.
- 0 to 6: apply detractor and complaint-open, suppress every progression sequence immediately, and create an urgent task for the program lead to call within one working day. Never send a review request or an upsell to a detractor.
- On review detected, set review_left, thank them, and at day 14 send the referral ask with the shareable link.
- On testimonial and consent submitted, set testimonial_consent with the exact scopes ticked, apply testimonial-cleared, and queue it for the social planner with the consented attribution only.
Trigger B, referral: referral link used or referral form submitted.
- Increment referral_count on the referrer, apply referrer.
- The referred person enters as a new lead tagged referred-by-[contact id]. The first message says who referred them, what the course is, and offers an immediate opt-out in the first line.
- If the referral enrolls, increment referrals_enrolled, update reward_status per whatever the client's reward scheme is, and notify the referrer with a genuine thank you.
- Notify the advisor on every referral - referred leads convert better than any other source in this build and deserve a human within a day.
Trigger C, dormancy: last_engagement_date more than 12 months ago.
- Send one re-permission email: here is what we send, here is how often, confirm you still want it.
- Wait 14 days. No response, send one final notice. Wait 7 days. Still nothing, apply dormant-12m, move to Dormant, and stop all sending.
- Keep dormant records on file for a single annual announcement only if the client's consent basis supports it, and suppress them entirely otherwise.
Stop conditions: do-not-market or complaint-open stops every branch of this workflow immediately.