Important: On the Microsoft sign-in page, do NOT check "Consent on behalf of your organization."
email intelligence items awaiting review
Dashboard
Sponsorship overview for
Wtd Pipeline
Committed
Collected
Outstanding
Overdue
By Sponsorship Tier
Payment Status
Overdue Tasks
Due 7 Days
Benefits Due 30d
Benefits Overdue
Organization Pipeline
Upcoming Tasks
No upcoming tasks
Upcoming Events
No upcoming events
Recent Activity
No touchpoints logged by you yet
No recent activity
Revenue Command Center
Pipeline overview and deal progression
Weighted Pipeline
?Weighted Pipeline
Sum of each deal's expected amount multiplied by its stage probability.
Example: A $10,000 deal at "Proposal Sent" (55%) contributes $5,500 to the weighted pipeline.
Proposals Out
Verbal / Contract
Won — Pending
Paid This Month
Stale Deals
Deal Pipeline
No deals
Next Actions
No deals yet
Create your first deal to get started with the Revenue Command Center.
Deals
Stage Probabilities
Each deal stage has a probability that reflects how likely the deal is to close. As a deal moves through the pipeline, the probability increases.
These percentages are used to calculate the Weighted Pipeline — each deal's expected amount is multiplied by its stage probability to forecast revenue.
Example: A $10,000 deal at "Negotiation" (70%) counts as $7,000 in the weighted pipeline.
Notes
Attached Communications
No deals yet. Create your first one!
Organizations
| Organization | Type | Status | Contacts | Total Sponsored | |
|---|---|---|---|---|---|
No organizations yet. Add your first one!
No organizations yet. Add your first one!
Organization
Notes
Fill frame with card, avoid glare, use dark background
Business Cards
Communication History
No communications logged yet.
Notes
Contacts
Sponsorships
No sponsorships yet.
Communication Log
Sponsorships
No sponsorships found.
Event Sponsorships
Organization
Contact
Type
Amount
Attached Communications
Schedule
No sessions yet. Click "Add Session" to create one.
Communications
No communications found.
Tasks
Notes
Related Communications
No tasks found.
Pipeline
Sponsorship funnel for
Weighted Forecast
Stage Summary
| Stage | Count | Total Expected |
|---|---|---|
Sponsorships in Pipeline
No sponsorships in pipeline for this year.
Renewal Forecast
Year-over-year comparison
Committed
Committed
YTD Collected
Delta vs Prior
Prior Year Sponsors — Renewal Status
| Organization | Prior Year | Current Year | Stage | Owner | Renewal Status |
|---|---|---|---|---|---|
No prior-year sponsors to compare.
ESO ATLAS Dashboard
Startups
Mentors
Founders
Students
Upcoming Sessions
Instructors:
Attending:
Mentor Pipeline
Review and manage mentor candidates
Startup Pipeline
Track startup applicants and progress
No cohorts yet. Create your first cohort to get started.
Cohorts
·
·
Leadership
Board of Trustees
Executive Leadership
Staff
Committees
| Name | Role Type | Title | Actions |
|---|---|---|---|
Mentors
| !availableMentorSearch || m.name.toLowerCase().includes(availableMentorSearch.toLowerCase()) || (m.expertise_tags||[]).some(t => t.toLowerCase().includes(availableMentorSearch.toLowerCase()))).map(m => m.id); } else { availableMentorChecked = []; }"> | Name | ||||
|---|---|---|---|---|---|
| id !== m.id); }" class="rounded border-gray-300 text-green-600 focus:ring-green-500"> |
|
|
|||
Pipeline
active candidates · converted
Public Application URL
Founders
| !availableFounderSearch || f.name.toLowerCase().includes(availableFounderSearch.toLowerCase()) || (f.startup_name||'').toLowerCase().includes(availableFounderSearch.toLowerCase()) || (f.skills_tags||[]).some(t => t.toLowerCase().includes(availableFounderSearch.toLowerCase()))).map(f => f.id); } else { availableFounderChecked = []; }"> | Name | |
|---|---|---|
| id !== f.id); }" class="rounded border-gray-300 text-blue-600 focus:ring-blue-500"> |
|
|
Students
| !availableStudentSearch || m.name.toLowerCase().includes(availableStudentSearch.toLowerCase()) || (m.university||'').toLowerCase().includes(availableStudentSearch.toLowerCase()) || (m.skills_tags||[]).some(t => t.toLowerCase().includes(availableStudentSearch.toLowerCase()))).map(m => m.id); } else { availableStudentChecked = []; }"> | Name | |||||
|---|---|---|---|---|---|---|
| id !== m.id); }" class="rounded border-gray-300 text-purple-600 focus:ring-purple-500"> |
|
|
||||
Email Intelligence Review
Connected mailboxes are automatically polled every 5 minutes. Use the manual poll button to sync immediately.
- Connect your Microsoft 365 or Google mailbox
- Emails are polled automatically every 5 minutes
- Each email is classified by AI (gpt-4o-mini) for deal-relevant intent — no keyword configuration needed
- Only emails with deal signals (engagement, negotiation, risk, process updates) are ingested
- AI then extracts contacts, deal terms, next steps, and pipeline signals from the matched emails
- Deal-relevant emails appear here for you to review and commit to the CRM
- Connect your Microsoft 365 or Google mailbox
- Emails are polled automatically every 5 minutes
- AI scans for keyword matches and extracts contacts, organizations, dollar amounts, and next steps
- Matched emails appear here for you to review and commit to the CRM
Every email is run through a lightweight AI classifier that determines whether it contains deal-related content. Emails are categorized as:
- Deal — active deal discussion, terms, pricing, or engagement
- Process — scheduling, due diligence, document requests, or logistics
- Risk — concerns, objections, delays, or deal blockers
- Relationship — introductions, referrals, or relationship-building
- Non-deal — newsletters, automated notifications, etc. (skipped)
Only emails classified with deal intent are ingested. Non-deal emails are silently skipped.
- Matched — email sender/recipient was matched to an existing contact in your CRM. Ready to review and commit.
- Unmatched — AI found relevant content but couldn't match a contact. You can manually assign to an existing contact or create a new one.
- Summary — concise summary of the email conversation
- Participants — names, emails, and organizations mentioned
- Commitments —
- Next Steps — action items extracted from the email
- Pipeline Signal — AI suggests a pipeline stage based on language in the email
- Confidence Score — how confident the AI is in the match quality
- Review & Commit — approve matched emails to log as a communication touchpoint and update org/contact data
- Review & Assign Contact — for unmatched emails, link to an existing contact or create a new one before committing
- Delete — discard irrelevant emails (they move to the Discard Bin)
- AI intent detection works automatically — no keyword setup required
- Use the Poll Email button to sync immediately instead of waiting for the 5-minute cycle
- Review items regularly — the queue builds up and older items become harder to action
- High confidence scores (70%+) generally mean a strong intent signal and contact match
- Emails classified as Risk may flag deal blockers worth addressing quickly
- Configure email keywords in Admin Settings to control which emails are captured (e.g., "sponsorship", "partnership", "proposal")
- Use the Poll Email button to sync immediately instead of waiting for the 5-minute cycle
- Review items regularly — the queue builds up and older items become harder to action
- High confidence scores (70%+) generally mean a strong keyword and contact match
Connect Your Email
For Microsoft, do NOT check "Consent on behalf of your organization" on the sign-in page.
No emails pending review
Discard Bin
Deleted items — restore or permanently remove
| Type | Name / Subject | Details | Date | Deleted | Deleted By | Actions |
|---|---|---|---|---|---|---|
|
|
|
|
Settings
Sponsorship Tiers
Benefit Templates
No benefits defined yet.
Organization Types
Default types can be hidden from dropdowns. Users can also create custom types inline when adding organizations.
Default Types
Custom Types (Tenant-specific)
Change Password
Choose whether the AI chat bar starts expanded or collapsed when you log in
Open chat bar on login
When off, the chat bar starts collapsed — click the toggle to expand it anytime
Every email is classified by AI (gpt-4o-mini) for deal-relevant intent. Only emails with deal signals are ingested — no keyword configuration needed.
Organization Keywords
Emails must mention one of these organization names to be captured.
Intent Keywords
Emails must also mention one of these intent words (fuzzy matching catches typos).
Manage Email Intelligence Connections
View and manage email connections for all users in this tenant
No email connections
·
Super Admin Settings
System-wide configuration
AI Engine
Choose which AI powers the quick-add bar for all users
If OpenAI is unavailable, the system will automatically fall back to Ollama.
Microsoft 365 Email Ingestion
Connect mailboxes to auto-ingest relevant emails via Graph API
Emails are ingested only when both keywords appear in the subject or body (not signatures/quotes):
+ — within 250 characters
Once a thread matches, all future replies are auto-ingested. AI extracts summaries, commitments, and next steps. No raw email bodies are stored permanently.
Mailbox Connections
Select a CRM user and click "Add Mailbox". They'll see a prompt to connect their Microsoft 365 account next time they log in. You can add multiple mailboxes per user.
No mailbox connections yet
Select a user above and click "Enable User" to get started.
·
| Time | Action | Subject |
|---|---|---|
Step 1: Register a Microsoft Identity App
- Go to Microsoft Identity admin center → App registrations → New registration
- Name:
CRM Email Ingestion - Supported account types: Accounts in any organizational directory (multi-tenant)
- Redirect URI (Web):
- Click Register, then copy the Application (client) ID
Step 2: Add API Permissions
- Go to API permissions → Add a permission → Microsoft Graph → Delegated permissions
- Add:
Mail.Read,offline_access,openid,profile,email - Do NOT add Application permissions — this system uses delegated (user-context) only
- No client secret is needed — the app uses PKCE (public client flow)
Step 3: Set Environment Variables
Add these to the server's systemd service file or .env:
MS_GRAPH_CLIENT_ID=<your-identity-client-id>
MS_GRAPH_REDIRECT_URI=
GRAPH_ENCRYPTION_KEY=<64-char-hex>
Generate encryption key: python3 -c "import os; print(os.urandom(32).hex())"
Step 4: Connect a Mailbox
- Select which CRM user the mailbox should be assigned to from the dropdown (or leave as "myself")
- Click "Connect M365" — you'll be redirected to Microsoft to sign in
- Sign in with the Microsoft 365 account whose inbox should be monitored and grant consent
- The connection appears in the list with status "Paused"
- Click the play button to enable ingestion for that mailbox
- The poller runs automatically via cron every 5 minutes, or click "Poll Now" to trigger immediately
Step 5: Set Up Cron Jobs
# Poll mailboxes every 5 minutes
*/5 * * * * /var/www/acg-crm/venv/bin/python /var/www/acg-crm/backend/graph_poller.py poll
# Purge staging every hour
0 * * * * /var/www/acg-crm/venv/bin/python /var/www/acg-crm/backend/graph_poller.py purge
# Retry failed extractions every 15 min
*/15 * * * * /var/www/acg-crm/venv/bin/python /var/www/acg-crm/backend/graph_poller.py retry
Google Gmail Email Ingestion
Connect Gmail / Google Workspace mailboxes to auto-ingest sponsorship emails
Google Mailbox Connections
Select a CRM user and click "Add Google Mailbox". They'll see a prompt to connect their Google account next time they log in.
Step 1: Create a Google Cloud Project
- Go to Google Cloud Console → Create a new project (or select existing)
- Enable the Gmail API under APIs & Services → Library
Step 2: Configure OAuth Consent Screen
- Go to OAuth consent screen → User Type: External (or Internal for Workspace-only)
- Add scopes:
gmail.readonly,openid,email,profile - Add test users if the app is in "Testing" mode
Step 3: Create OAuth Credentials
- Go to Credentials → Create credentials → OAuth client ID
- Application type: Web application
- Authorized redirect URI:
- Copy the Client ID and Client Secret
Step 4: Set Environment Variables
GOOGLE_CLIENT_ID=<your-google-client-id>
GOOGLE_CLIENT_SECRET=<your-google-client-secret>
GOOGLE_REDIRECT_URI=
Step 5: Add Cron Job
# Poll Google mailboxes every 5 minutes
*/5 * * * * /var/www/acg-crm/venv/bin/python /var/www/acg-crm/backend/google_poller.py poll
Auto-Fill Websites
Use AI web search to find websites for organizations missing them
Data Hygiene
Detect and merge duplicate records
Organization Duplicates
ESO ATLAS — Tag Taxonomy
Advisory Settings
Deals with no stage change beyond this threshold appear as "stale" in the Revenue Command Center.
Toggle which stages appear in the pipeline board, stage filters, and deal dropdowns.