Automations
The system is calm because a lot of small automatic things keep it honest. This chapter lists each one, what it does, when it fires, and where you see the effect.
Timeline triggers (the ones you never see fail)
Section titled “Timeline triggers (the ones you never see fail)”These are database rules. They fire inside the database itself, in every write path, so the UI cannot forget them. Where they belong, we have added one per column.
- Stage change → Timeline entry. Whenever a person’s program stage
moves on a
person_programsrow, astage_changeinteraction is written to the Timeline with the old and new stage. You see this on the person’s record under their timeline, as “Moved from Applicant to Admitted”. - Status change → Timeline entry. Same idea for the status axis.
“On leave from Student” writes a
status_changerow with the before and after status. - New program row → Timeline entry. Adding a new program to a
person — by hand with Add to program, or automatically on a
program-specific intake — writes a
person_programs_createdentry so the office can see when a Dream Work interest first appeared. - Updated-at timestamp. The updated_at column on
person_programsis kept current on every change so the pipeline cards show “last activity” without any UI work.
Payment and enrollment
Section titled “Payment and enrollment”- on_payment_paid. The moment a deposit payment is marked paid, this trigger does three things: it flips the enrollment to active, it moves the person’s program row on the enrolment’s program to Student, and it writes a paid interaction to the Timeline. This is why the Applications page’s Mark deposit paid button, or a real QuickBooks payment webhook, makes the applicant disappear from the applications queue and reappear in the Students column of the pipeline on its own.
Email intake (the Gmail agent)
Section titled “Email intake (the Gmail agent)”- gmail-process. An edge function that takes an incoming email, asks the AI adapter to classify it (new inquiry, applicant question, current student, billing, partner, spam), matches it to a contact, logs it to the Timeline, and — where the classification isn’t spam and the agent is confident — drafts a reply in the right tone. The result lands on the Inbox page.
Forms and invites
Section titled “Forms and invites”- form-intake. An edge function that takes a submission from the
public inquiry form, creates a contact if needed, writes a
form_submission interaction, and (where the form carries a program)
creates the matching
person_programsrow at Prospect. The office sees the person appear in Contacts and in the right funnel. - invite-admin. Called from the Team page. Creates a staff invite row and sends the magic-link email.
- invite-student. Called from a student’s Person detail page. Creates a student invite row and sends the magic-link email. When the student clicks the link, a trigger on the auth system connects their new login to the pending invite and sets the person’s auth_user_id so the portal knows who they are.
Marketing
Section titled “Marketing”- marketing_sync_queue. Every stage, status and tag change that should become a Constant Contact tag is queued here. In fake mode, the office exports the queue as a CSV from the hidden Marketing export page and imports it into Constant Contact by hand. When the real adapter goes in, the queue drains automatically. See Adapters.
Student-success rules
Section titled “Student-success rules”The system raises alerts automatically from a handful of rules:
- Missed intensive. Marked as absent from an intensive they were enrolled in.
- Second missing assignment. A student with two assignments neither submitted nor accepted.
- Overdue payment. Any invoice past its due date and not paid.
Each one creates an alert row with a priority and a short summary. Alerts land on Student Success.
What is not automated yet
Section titled “What is not automated yet”- Automatic stage transitions on declaration events. Michael is
drafting the exact events that should move a person from Prospect to
Engaged, or create a
person_programsrow on a packet download. For now, these moves are done by hand on the Person detail page. - Lead-scoring formula weights. The engagement score is calculated today, but the weights are the client’s to set — Michael is drafting those too.
See Coming later for the full list.
Next: Adapters and fake mode.

