Use Case: Deal Intelligence for Sales Teams
Sales teams often need comprehensive data about potential clients before outreach. Traditional data providers offer limited information, while manual research is time-consuming. With Extruct AI, you can enrich your company list with custom data points at scale.
Setting up Company Enrichment
Create a table with input columns for basic company information and agent columns for the enrichment:
curl -X POST "https://api.extruct.ai/v1/tables" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Enterprise Deal Intelligence",
"kind": "company",
"column_configs": [
{
"kind": "input",
"name": "Company",
"key": "input"
},
{
"kind": "agent",
"name": "Tech Stack",
"key": "tech_stack",
"value": {
"agent_type": "research_pro",
"prompt": "Identify the key technologies in this company tech stack, focusing on CRM, marketing automation, and data platforms.",
"output_format": "json",
"output_schema": {
"type": "object",
"properties": {
"crm": { "type": "string" },
"marketing": { "type": "array", "items": { "type": "string" } },
"data_platforms": { "type": "array", "items": { "type": "string" } }
}
}
}
},
{
"kind": "agent",
"name": "Decision Makers",
"key": "decision_makers",
"value": {
"agent_type": "research_pro",
"prompt": "Identify the key decision makers for purchasing enterprise software at this company. Include their name, title, and LinkedIn profile URL if available.",
"output_format": "json",
"output_schema": {
"type": "object",
"properties": {
"people": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"title": { "type": "string" },
"linkedin_url": { "type": "string" },
"department": { "type": "string" }
}
}
}
},
"required": ["people"]
}
}
},
{
"kind": "agent",
"name": "Recent Initiatives",
"key": "initiatives",
"value": {
"agent_type": "research_pro",
"prompt": "Identify 2-3 recent business initiatives, digital transformation efforts, or growth strategies this company has announced in the past 12 months.",
"output_format": "text"
}
}
]
}'
Adding Companies to Enrich
Once your table is created, add companies you want to enrich:
curl -X POST "https://api.extruct.ai/v1/tables/{table_id}/rows" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"rows": [
{
"data": {
"input": "Extruct AI (https://extruct.ai)"
}
},
{
"data": {
"input": "OpenAI (https://openai.com)"
}
},
{
"data": {
"input": "Anthropic (https://anthropic.com)"
}
}
],
"run": true
}'
Setting run
to true
automatically triggers the enrichment process. If you add multiple batches of companies, you might want to add them all first with run: false
and then trigger the enrichment once:
curl -X POST "https://api.extruct.ai/v1/tables/{table_id}/run" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Tracking Enrichment Progress
Monitor the enrichment progress using the Get Table endpoint:
curl -X GET "https://api.extruct.ai/v1/tables/{table_id}" \
-H "Authorization: Bearer YOUR_API_TOKEN"
The response includes a status
object with fields like:
num_cells_completed
: How many cells have finished enrichment
num_cells_in_progress
: How many cells are currently being processed
run_status
: Overall table status (running
or idle
)
Retrieving Enriched Data
Once the enrichment is complete, retrieve the enriched data:
curl -X GET "https://api.extruct.ai/v1/tables/{table_id}/data" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Sample response:
{
"rows": [
{
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"data": {
"company": {"value": "Stripe", "status": "done"},
"tech_stack": {
"value": {
"crm": "Salesforce",
"marketing": ["Marketo", "Google Analytics", "Segment"],
"data_platforms": ["AWS", "Snowflake", "Databricks"],
},
"status": "done"
},
"decision_makers": {
"value": [
{
"name": "David Singleton",
"title": "Chief Technology Officer",
"linkedin_url": "https://www.linkedin.com/in/dsingleton/",
"department": "Engineering"
},
{
"name": "Will Gaybrick",
"title": "Chief Product Officer",
"linkedin_url": "https://www.linkedin.com/in/wgaybrick/",
"department": "Product"
}
],
"status": "done"
},
"initiatives": {
"value": "1. Global Expansion: Stripe has been aggressively expanding into new international markets, particularly in Latin America and Southeast Asia.\n2. AI Integration: Recently launched ML-powered fraud detection tools and revenue optimization features.\n3. Financial Services: Introduced Stripe Treasury to help businesses embed financial services in their platforms.",
"status": "done"
}
}
}
// More rows...
]
}
Advanced Enrichment Column Types
Text Columns
Text columns are ideal for descriptive information:
{
"kind": "agent",
"name": "Value Proposition",
"key": "value_prop",
"value": {
"agent_type": "research_pro",
"prompt": "What is the main value proposition of {input}? Explain in 1-2 sentences.",
"output_format": "text"
}
}
Number Columns
Number columns are perfect for metrics:
{
"kind": "agent",
"name": "Founded Year",
"key": "founded_year",
"value": {
"agent_type": "research_pro",
"prompt": "In what year was {input} founded? Return just the number.",
"output_format": "number"
}
}
URL Columns
URL columns help find specific links:
{
"kind": "agent",
"name": "LinkedIn URL",
"key": "linkedin",
"value": {
"agent_type": "research_pro",
"prompt": "Find the LinkedIn company page URL for {input}.",
"output_format": "url"
}
}
JSON Columns
JSON columns provide structured data:
{
"kind": "agent",
"name": "Social Media",
"key": "social_profiles",
"value": {
"agent_type": "research_pro",
"prompt": "Find social media profiles for {input}. Include Twitter, LinkedIn, and Facebook.",
"output_format": "json",
"output_schema": {
"type": "object",
"properties": {
"twitter": { "type": "string" },
"linkedin": { "type": "string" },
"facebook": { "type": "string" }
}
}
}
}
Best Practices for Enrichment at Scale
-
Batch Processing
- Add companies in batches of 100-500 for optimal performance
- Use pagination to retrieve large datasets
-
Smart Prompts
- Be specific about what you’re looking for
- For better accuracy, include instructions about output format in the prompt
- Use
{input}
as a placeholder for the company identifier
-
Error Handling
- Some companies may not have all information available
- Check for null values in responses
- Consider adding fallback columns for critical data points
-
Performance Considerations
- Complex prompts take longer to process
- Simple factual queries process faster than analytical ones
- Adding more columns increases processing time
Exporting Enriched Data
You can export the enriched data in several ways:
- API Export: Paginate through all data using the Get Table Data endpoint
- Dashboard Export: Download CSV/Excel files from the Extruct Dashboard
- Integrations: Connect to CRM systems for direct data transfer
Next Steps
- Try creating a table with different data points
- Experiment with different column types and formats
- Check out the API Reference for more details