Daily AE pre-meeting briefing in Slack
Every weekday at 7am, brief each AE on today's external meetings with the prospect's recent web and intent activity, sent as a Slack DM.
Build me an AE pre-meeting briefing workflow. Every weekday at 7am in the AE's local timezone, brief them on the external meetings they have that day with the most relevant recent activity from Factors.ai, delivered as a Slack DM.
Trigger: cron, weekdays at 7:00 in the user's timezone.
Steps:
1. Use Google Calendar List Events on the primary calendar to fetch every event that starts today (between 00:00 and 23:59 in the user's timezone). Expand recurring events into single instances.
2. For each event, look at the attendee list. Identify the AE's own company email domain (the domain of the authenticated Google account). Treat any event with at least one external attendee (an attendee whose email domain is not the AE's own domain and not a generic free-mail domain like gmail.com, outlook.com, yahoo.com) as a candidate briefing. Skip events with no external attendees, declined events, and all-day events.
3. For each candidate meeting, pick the primary prospect domain. If multiple external attendees share a domain, use that. If they span domains, pick the first one and note the others in the brief.
4. For each unique prospect domain, call Factors.ai Get Account Journey with the domain and a trailing 14-day window (from = today minus 14 days, to = today). The endpoint is read-only and account-scoped by domain; the response is an array of user-level timelines with event names, timestamps (Unix seconds for events, ISO 8601 for user_last_event_at), and user properties.
5. If Factors returns 404 or an empty timeline for that domain, skip the meeting entirely. Do not send an empty briefing.
6. Summarize the highest-signal activity for that account. Prioritize, in order: pricing page visits, product or feature page visits, demo or contact-us form submissions, named visitors from the account (people with identified names or emails), G2 or review-site signals if surfaced, ad clicks or LinkedIn ad engagement if surfaced, and recency of last visit. Surface at most three activities, each with a short label and the date.
7. Draft one suggested opening line for the AE based on what the account has actually been engaging with (for example: 'They visited your pricing page three times this week, so it's fair to ask what's driving the evaluation timeline'). Keep it conversational, one sentence, no fluff.
8. Use Slack Bot Look Up User by Email with the AE's Google account email to find their Slack user ID, then Open a Conversation to get a DM channel ID, then Send a Message to post the brief. Send one message per qualifying meeting.
Brief format (Slack mrkdwn):
*<meeting time local> — <meeting title>* With: <comma-separated external attendees, name (email)> Account: <prospect domain> Recent signal from Factors.ai: • <activity 1> — <date> • <activity 2> — <date> • <activity 3> — <date> Last seen: <user_last_event_at> Suggested opening: <one sentence>
Rules:
• Run only on weekdays (Mon-Fri).
• If the AE has no qualifying meetings, do nothing (do not send a 'nothing to brief' message).
• De-dupe by event id so the same meeting never gets two briefings even if the workflow runs twice.
• Keep each brief under ~12 lines. Better to undersend than overload before a call.
Additional information
What does this prompt do?
- Reads today's calendar and picks out the meetings with external prospects.
- For each prospect's company, pulls the last two weeks of web visits, demo requests, named visitors, and intent signals from Factors.ai.
- Sends one tight Slack DM per meeting with the three most relevant activities and a suggested opening line.
- Skips meetings that are internal or where Factors has no fresh activity, so the AE only sees briefings worth reading.
What do I need to use this?
- A Google account with access to the AE's calendar.
- A Factors.ai account with a private API token.
- A Slack workspace where the AE can receive direct messages from the General Input bot.
How can I customize it?
- Change the delivery time, the timezone, or the days of the week it runs.
- Tighten or widen the lookback window (default is 14 days of Factors activity).
- Adjust the rules for what counts as a 'skip' meeting, like keeping internal 1:1s out or always including renewals.
- Tune the brief format: longer summaries, a different opening-line style, or a fixed list of intent signals to call out first.
Frequently asked questions
Will the briefing post in a channel or in a DM?
What if a prospect's company has no recent activity in Factors.ai?
How does it know which meetings are external?
Can I run this for a whole sales team, not just one rep?
Does it work if I use Outlook instead of Google Calendar?
Related templates
Walk into every sales call already briefed.
Connect Google Calendar, Factors.ai, and Slack once, and Geni runs this every weekday morning before your first meeting.