๐ Integrations
Connect your tools so the AI can pull real-time context into your daily briefing โ calendar prep notes, open PRs, assigned tickets, and Slack mentions.
โ {{ request.args.get('connected') | upper }} connected successfully!
{% endif %}
{% set service_meta = {
'gcal': {'icon': '๐
', 'name': 'Google Calendar', 'desc': 'Today\'s events, meeting prep notes, attendee context', 'auth': 'oauth', 'unlocks': 'Meeting prep in your daily briefing โ attendee names, agenda summaries, and suggested talking points.'},
'gmail': {'icon': '๐ง', 'name': 'Gmail', 'desc': 'Frequent contacts for customer import', 'auth': 'oauth', 'unlocks': 'Import frequent email contacts directly into your Customers map.'},
'slack': {'icon': '๐ฌ', 'name': 'Slack', 'desc': 'Mentions, DMs, action items, briefing delivery', 'auth': 'oauth', 'unlocks': 'Slack mentions and action items in your briefing, plus optional Slack DM delivery each morning.'},
'msgraph': {'icon': '๐ท', 'name': 'Microsoft 365', 'desc': 'Outlook Calendar ยท Mail ยท Teams briefing delivery', 'auth': 'oauth', 'unlocks': 'Meeting prep from Outlook Calendar, morning briefing via Outlook mail, and daily brief to your Teams chat.'},
'github': {'icon': '๐', 'name': 'GitHub', 'desc': 'Assigned issues, open PRs & review requests', 'auth': 'pat', 'unlocks': 'Open PRs, review requests, and assigned issues pulled into your daily task list.'},
'gitlab': {'icon': '๐ฆ', 'name': 'GitLab', 'desc': 'Merge requests, issues & CI status', 'auth': 'pat', 'unlocks': 'Open MRs, failing pipelines, and assigned issues in your briefing.'},
'jira': {'icon': '๐ฏ', 'name': 'Jira', 'desc': 'Sprint board, assigned & overdue tickets', 'auth': 'apikey', 'unlocks': 'Your sprint board and overdue tickets prioritized in the daily task section.'},
'linear': {'icon': '๐', 'name': 'Linear', 'desc': 'Cycles, issues & priorities', 'auth': 'apikey', 'unlocks': 'Current cycle issues and unblocked priorities in your briefing.'},
'notion': {'icon': '๐', 'name': 'Notion', 'desc': 'Pages & databases as knowledge context', 'auth': 'apikey', 'unlocks': 'Notion pages indexed as background knowledge for AI responses.'},
} %}
{% for svc in all_services %}
{% set meta = service_meta.get(svc, {}) %}
{% set conn = integrations.get(svc) %}
{% set is_connected = conn and conn.status == 'active' %}
{% else %}
{% endfor %}
{{ meta.get('icon','๐') }}
{% if is_connected %}
โ Connected
{% else %}
Not connected
{% endif %}
{% if is_connected %}
{% if conn.last_sync_at %}{{ meta.get('name', svc) }}
{{ meta.get('desc','') }}
Last sync: {{ conn.last_sync_at[:16] }}
{% endif %}
๐ Unlock: {{ meta.get('unlocks','Connect to enable briefing integration.') }}
{% if meta.get('auth') == 'oauth' %}
Connect with OAuth
{% else %}
{% endif %}
{% if svc in ('jira', 'linear') %}
{% endif %}
{% endif %}