Want a guided walkthrough? Schedule a 15-min call.

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",
          "json_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",
          "json_schema": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": { "type": "string" },
                "title": { "type": "string" },
                "linkedin_url": { "type": "string" },
                "department": { "type": "string" }
              }
            }
          }
        }
      },
      {
        "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

  1. Batch Processing

    • Add companies in batches of 100-500 for optimal performance
    • Use pagination to retrieve large datasets
  2. 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
  3. Error Handling

    • Some companies may not have all information available
    • Check for null values in responses
    • Consider adding fallback columns for critical data points
  4. 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:

  1. API Export: Paginate through all data using the Get Table Data endpoint
  2. Dashboard Export: Download CSV/Excel files from the Extruct Dashboard
  3. 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