Skip to main content
Key People tracks contacts, relationships, and AI-recommended connections for each lead.

People Categories

Contacts are organized into five categories:
CategoryDescription
DevelopersPrimary decision makers, architects, developers
Decision MakersCFO, COO, project managers with authority
Key ContactsAccessible relationships, existing connections
InfluentialIndustry influencers, advisors
SuggestedAI-recommended contacts

Contact Structure

interface Contact {
  id: string;
  leadId: string;
  name: string;
  title: string;
  company: string;
  email: string | null;
  phone: string | null;
  linkedinUrl: string | null;
  category: ContactCategory;
  notes: string | null;
  confidence: number;        // AI confidence (for suggested)
  source: 'manual' | 'ai' | 'import';
  addedAt: number;
  addedBy: string;
}

type ContactCategory =
  | 'developers'
  | 'decision_makers'
  | 'key_contacts'
  | 'influential'
  | 'suggested';

AI Contact Recommendations

AdaptEngine uses AI to suggest relevant contacts:
curl "https://api.adaptengine.com/api/v1/leads/{leadId}/ai-contacts" \
  -H "Authorization: Bearer YOUR_TOKEN"
Response:
{
  "ok": true,
  "data": {
    "contacts": [
      {
        "name": "Jane Smith",
        "title": "VP of Development",
        "company": "Acme Construction",
        "linkedinUrl": "https://linkedin.com/in/janesmith",
        "reasoning": "Decision maker for similar projects in the region",
        "confidence": 87
      }
    ],
    "generatedAt": 1706623200000
  }
}

Adding Contacts

Add a contact manually:
curl -X POST "https://api.adaptengine.com/api/v1/leads/{leadId}/contacts" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "John Doe",
    "title": "Project Manager",
    "company": "Acme Construction",
    "email": "[email protected]",
    "category": "decision_makers",
    "notes": "Met at industry conference"
  }'

Promoting AI Suggestions

Move an AI-suggested contact to a permanent category:
curl -X POST "https://api.adaptengine.com/api/v1/leads/{leadId}/contacts/{contactId}/promote" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "category": "key_contacts"
  }'

Relationship Graph

Visualize connections between contacts and leads:
curl "https://api.adaptengine.com/api/v1/leads/{leadId}/contacts/graph" \
  -H "Authorization: Bearer YOUR_TOKEN"

Message Drafts

Create message drafts for outreach:
curl -X POST "https://api.adaptengine.com/api/v1/leads/{leadId}/message-drafts" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "contactId": "contact_abc",
    "channel": "email",
    "subject": "Introduction - Acme Project",
    "body": "Hi Jane, I noticed your work on...",
    "generateAi": true
  }'

AI Message Generation

Set generateAi: true to have AI draft the message based on lead context and contact profile.

Research Status

Track contact research progress:
interface ResearchStatus {
  contactId: string;
  status: 'pending' | 'in_progress' | 'complete' | 'failed';
  linkedinDiscovered: boolean;
  emailDiscovered: boolean;
  lastResearchedAt: number | null;
}

API Endpoints

MethodEndpointDescription
GET/api/v1/leads/{leadId}/contactsList all contacts
POST/api/v1/leads/{leadId}/contactsAdd contact
PUT/api/v1/leads/{leadId}/contacts/{id}Update contact
DELETE/api/v1/leads/{leadId}/contacts/{id}Remove contact
GET/api/v1/leads/{leadId}/ai-contactsGet AI suggestions
POST/api/v1/leads/{leadId}/contacts/{id}/promotePromote suggestion
GET/api/v1/leads/{leadId}/message-draftsList drafts
POST/api/v1/leads/{leadId}/message-draftsCreate draft