> ## Documentation Index
> Fetch the complete documentation index at: https://docs.extruct.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Column Library

> Reusable AI Tables column configs and common chains.

## Overview

This page collects fuller reusable column templates for AI Tables.
[Column Guide](/api-guides/ai-tables/column-guide) covers how to choose and configure columns, including minimum working shapes. This page is the cookbook: copy a pattern, then adapt `name`, `key`, prompts, labels, and schemas to your workflow.

## Prerequisites

```bash theme={null}
export EXTRUCT_API_TOKEN="YOUR_API_TOKEN"
```

Generate tokens in [Dashboard API Tokens](https://app.extruct.ai/api-tokens). For full setup, see [Authentication](/api-reference/authentication).

## Endpoints used

* [Create columns (`POST /v1/tables/:table_id/columns`)](/api-reference/tables/create-table-columns)
* [Update column (`PATCH /v1/tables/:table_id/columns/:column_id`)](/api-reference/tables/update-table-column)
* [Run table (`POST /v1/tables/:table_id/run`)](/api-reference/tables/run-table)
* [Get table data (`GET /v1/tables/:table_id/data`)](/api-reference/tables/get-table-data)

## How to use these templates

Wrap one or more template objects in `column_configs`, then send them to [Create columns](/api-reference/tables/create-table-columns).

Wrapper example:

```json theme={null}
{
  "column_configs": [
    {
      "kind": "agent",
      "name": "Description",
      "key": "company_description",
      "value": {
        "agent_type": "research_pro",
        "prompt": "Describe what the company does in under 25 words.",
        "output_format": "text"
      }
    }
  ]
}
```

Before you copy:

* on `company` tables, built-in company fields are created automatically
* on `company` and `people` tables, custom agent columns get baseline row context automatically
* most prompts on `company` and `people` tables should not mention `company_name`, `company_website`, `full_name`, `profile_url`, or `role` explicitly
* if a template references another column, that dependency is intentional

When you add new columns to an existing table, usually run only the new work with `mode: "new"`.

## Company research templates

### Description

```json theme={null}
{
  "kind": "agent",
  "name": "Description",
  "key": "company_description",
  "value": {
    "agent_type": "research_pro",
    "prompt": "Describe what the company does in under 25 words.",
    "output_format": "text"
  }
}
```

### ICP Summary

```json theme={null}
{
  "kind": "agent",
  "name": "ICP Summary",
  "key": "icp_summary",
  "value": {
    "agent_type": "research_pro",
    "prompt": "Identify the company's ideal customer profile. Summarize the primary buyer, company type, and likely use case in 2-3 short bullet points.",
    "output_format": "text"
  }
}
```

### Employee Count

```json theme={null}
{
  "kind": "agent",
  "name": "Employee Count",
  "key": "employee_count",
  "value": {
    "agent_type": "research_pro",
    "prompt": "How many employees does the company currently have?",
    "output_format": "numeric"
  }
}
```

### Annual Revenue

```json theme={null}
{
  "kind": "agent",
  "name": "Annual Revenue",
  "key": "annual_revenue",
  "value": {
    "agent_type": "research_pro",
    "prompt": "What is the company's latest annual revenue or ARR? Prefer the most recent reliable figure and use revenue, not total funding.",
    "output_format": "money"
  }
}
```

### Founded Date

```json theme={null}
{
  "kind": "agent",
  "name": "Founded Date",
  "key": "founded_date",
  "value": {
    "agent_type": "research_pro",
    "prompt": "When was the company founded?",
    "output_format": "date"
  }
}
```

### Pricing Notes

```json theme={null}
{
  "kind": "agent",
  "name": "Pricing Notes",
  "key": "pricing_notes",
  "value": {
    "agent_type": "research_pro",
    "prompt": "Summarize the company's pricing model and publicly visible price points as a short bulleted list. Include plan names and prices when available.",
    "output_format": "text"
  }
}
```

### Recent News

```json theme={null}
{
  "kind": "agent",
  "name": "Recent News",
  "key": "recent_news",
  "value": {
    "agent_type": "research_pro",
    "prompt": "List the company's most important news from the last 12 months, newest first. Include date, headline, and URL.",
    "output_format": "json",
    "output_schema": {
      "type": "object",
      "properties": {
        "articles": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "date": { "type": "string" },
              "headline": { "type": "string" },
              "url": { "type": "string" }
            }
          }
        }
      }
    }
  }
}
```

### Competitors

```json theme={null}
{
  "kind": "agent",
  "name": "Competitors",
  "key": "competitors",
  "value": {
    "agent_type": "research_pro",
    "prompt": "Find the company's closest competitors and alternatives. Prefer companies that solve the same core problem for a similar buyer. Return one object with a competitors array. Each competitor should include name, domain, and short_reason. If you are not confident a company is a real competitor, leave it out.",
    "output_format": "json",
    "output_schema": {
      "type": "object",
      "properties": {
        "competitors": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": { "type": "string" },
              "domain": { "type": "string" },
              "short_reason": { "type": "string" }
            }
          }
        }
      }
    }
  }
}
```

### Expansion Signals

```json theme={null}
{
  "kind": "agent",
  "name": "Expansion Signals",
  "key": "expansion_signals",
  "value": {
    "agent_type": "research_pro",
    "prompt": "Identify and summarize the company's expansion signals using job postings, press releases, new office mentions, executive hires, and product launches. Focus on geographic, product, or market expansion. Return a short evidence-dense summary with dates when available.",
    "output_format": "text"
  }
}
```

## URLs and LinkedIn templates

### LinkedIn Company URL

```json theme={null}
{
  "kind": "agent",
  "name": "LinkedIn URL",
  "key": "linkedin_company_url",
  "value": {
    "agent_type": "research_pro",
    "prompt": "Find the company's official LinkedIn company page URL.",
    "output_format": "url"
  }
}
```

### LinkedIn Company Data

Requires:

* `linkedin_company_url`

```json theme={null}
{
  "kind": "agent",
  "name": "LinkedIn Data",
  "key": "linkedin_company_data",
  "value": {
    "agent_type": "linkedin",
    "prompt": "{linkedin_company_url}",
    "output_format": "text"
  }
}
```

### LinkedIn Activity Summary

Requires:

* `linkedin_company_data`

```json theme={null}
{
  "kind": "agent",
  "name": "LinkedIn Activity",
  "key": "linkedin_activity_summary",
  "value": {
    "agent_type": "llm",
    "prompt": "Summarize the recent LinkedIn activity as a bulleted list with names, dates, and links.\n\nLinkedIn Company Data\n---\n{linkedin_company_data}\n---",
    "output_format": "text"
  }
}
```

### Careers Page URL

```json theme={null}
{
  "kind": "agent",
  "name": "Careers URL",
  "key": "careers_page_url",
  "value": {
    "agent_type": "research_pro",
    "prompt": "Find the company's official careers or jobs page URL.",
    "output_format": "url"
  }
}
```

### Crunchbase URL

```json theme={null}
{
  "kind": "agent",
  "name": "Crunchbase URL",
  "key": "crunchbase_url",
  "value": {
    "agent_type": "research_pro",
    "prompt": "Find the company's Crunchbase profile URL.",
    "output_format": "url"
  }
}
```

## Derived `llm` templates

### Pricing Model

Requires:

* `pricing_notes`

```json theme={null}
{
  "kind": "agent",
  "name": "Pricing Model",
  "key": "pricing_model",
  "value": {
    "agent_type": "llm",
    "prompt": "Select the company's primary pricing model.\n\nPricing Notes\n---\n{pricing_notes}\n---",
    "output_format": "select",
    "labels": [
      "Free",
      "Freemium",
      "Subscription",
      "Usage-Based",
      "Custom Quote",
      "One-Time Purchase",
      "Marketplace Take Rate"
    ]
  }
}
```

### HQ Country From Company Profile

Requires:

* `company_profile`

```json theme={null}
{
  "kind": "agent",
  "name": "HQ Country",
  "key": "hq_country",
  "value": {
    "agent_type": "llm",
    "prompt": "Extract the company's headquarters country from this company profile.\n\nCompany Profile\n---\n{company_profile}\n---",
    "output_format": "text"
  }
}
```

### Revenue Band

Requires:

* `annual_revenue`

```json theme={null}
{
  "kind": "agent",
  "name": "Revenue Band",
  "key": "revenue_band",
  "value": {
    "agent_type": "llm",
    "prompt": "Classify the company's revenue into exactly one band based on this structured revenue data.\n\nAnnual Revenue\n---\n{annual_revenue}\n---",
    "output_format": "select",
    "labels": [
      "<$1M",
      "$1M-$10M",
      "$10M-$50M",
      "$50M-$100M",
      "$100M-$500M",
      "$500M+"
    ]
  }
}
```

### Buyer Type

Requires:

* `company_description`

```json theme={null}
{
  "kind": "agent",
  "name": "Buyer Type",
  "key": "buyer_type",
  "value": {
    "agent_type": "llm",
    "prompt": "Select the company's primary buyer type.\n\nDescription\n---\n{company_description}\n---",
    "output_format": "select",
    "labels": [
      "SMB",
      "Mid-Market",
      "Enterprise",
      "Consumer",
      "Developer",
      "Public Sector",
      "Healthcare Providers",
      "Financial Institutions"
    ]
  }
}
```

### Prioritization JSON

Requires:

* `company_profile`
* `expansion_signals`
* `annual_revenue`
* `recent_news`

```json theme={null}
{
  "kind": "agent",
  "name": "Prioritization",
  "key": "prioritization",
  "value": {
    "agent_type": "llm",
    "prompt": "You are a go-to-market analyst. Score ICP fit and buying intent. Return ONLY valid JSON with: icp_fit_score, icp_fit_reasoning, buying_intent_score, buying_intent_reasoning, positive_signals, negative_signals, recommended_action, recommended_action_reasoning, outreach_hook.\n\nCompany Profile\n---\n{company_profile}\n---\n\nExpansion Signals\n---\n{expansion_signals}\n---\n\nAnnual Revenue\n---\n{annual_revenue}\n---\n\nRecent News\n---\n{recent_news}\n---",
    "output_format": "json",
    "output_schema": {
      "type": "object",
      "properties": {
        "icp_fit_score": { "type": "number" },
        "icp_fit_reasoning": { "type": "string" },
        "buying_intent_score": { "type": "number" },
        "buying_intent_reasoning": { "type": "string" },
        "positive_signals": {
          "type": "array",
          "items": { "type": "string" }
        },
        "negative_signals": {
          "type": "array",
          "items": { "type": "string" }
        },
        "recommended_action": { "type": "string" },
        "recommended_action_reasoning": { "type": "string" },
        "outreach_hook": { "type": "string" }
      }
    }
  }
}
```

If you want people-finder evidence in downstream scoring, first create a separate `llm` summary column from the people output, then reference that summary instead of the raw `company_people_finder` result.

## People and contact templates

### Leadership Finder

```json theme={null}
{
  "kind": "company_people_finder",
  "name": "Leadership",
  "key": "leadership",
  "value": {
    "roles": [
      "CEO",
      "Founder",
      "operations leadership",
      "revenue leadership"
    ]
  }
}
```

### Engineering Leadership Finder

```json theme={null}
{
  "kind": "company_people_finder",
  "name": "Engineering Leaders",
  "key": "engineering_leaders",
  "value": {
    "roles": [
      "Head of Engineering",
      "VP Engineering",
      "platform leadership",
      "security leadership"
    ]
  }
}
```

### Decision Makers

```json theme={null}
{
  "kind": "company_people_finder",
  "name": "Decision Makers",
  "key": "decision_makers",
  "value": {
    "roles": [
      "VP Sales",
      "sales leadership",
      "revenue operations",
      "business development leadership"
    ]
  }
}
```

### Work Email

Requires:

* `full_name`
* `profile_url`
* `company_website`

Configure with `kind`, `name`, and `key` only; no `value` field needed.

```json theme={null}
{
  "kind": "email_finder",
  "name": "Work Email",
  "key": "work_email"
}
```

### Direct Phone

Requires:

* `full_name`
* `profile_url`
* `company_website`

Configure with `kind`, `name`, and `key` only; no `value` field needed.

```json theme={null}
{
  "kind": "phone_finder",
  "name": "Direct Phone",
  "key": "direct_phone"
}
```

### Department

```json theme={null}
{
  "kind": "agent",
  "name": "Department",
  "key": "department",
  "value": {
    "agent_type": "llm",
    "prompt": "Classify this person into the most likely department based on their current role.",
    "output_format": "select",
    "labels": [
      "Executive",
      "Engineering",
      "Product",
      "Design",
      "Sales",
      "Marketing",
      "Operations",
      "Finance",
      "HR",
      "Legal",
      "Customer Success",
      "Other"
    ]
  }
}
```

### Seniority

```json theme={null}
{
  "kind": "agent",
  "name": "Seniority",
  "key": "seniority",
  "value": {
    "agent_type": "llm",
    "prompt": "Classify this person's seniority level based on their current role.",
    "output_format": "select",
    "labels": [
      "C-Level",
      "VP",
      "Head",
      "Director",
      "Manager",
      "Individual Contributor",
      "Founder"
    ]
  }
}
```

### Reverse Email Lookup

```json theme={null}
{
  "kind": "reverse_email_lookup",
  "name": "Profile from Email",
  "key": "profile_from_email",
  "email_column_key": "work_email"
}
```

## Scoring templates

All scoring examples below use the recommended pattern: `agent` + `output_format: "grade"`.

### Market Fit Score

```json theme={null}
{
  "kind": "agent",
  "name": "Market Fit",
  "key": "market_fit",
  "value": {
    "agent_type": "research_reasoning",
    "prompt": "Assess this statement about the company: The company fits a B2B fintech ICP. Use the default 1-5 grade scale. If there is not enough evidence to score confidently, return Not found.",
    "output_format": "grade"
  }
}
```

### Execution Readiness Score

```json theme={null}
{
  "kind": "agent",
  "name": "Execution Readiness",
  "key": "execution_readiness",
  "value": {
    "agent_type": "research_reasoning",
    "prompt": "Assess this statement about the company: The company looks ready for near-term partnership or outreach. Use the default 1-5 grade scale. If there is not enough evidence to score confidently, return Not found.",
    "output_format": "grade"
  }
}
```

### AI-Native Score

```json theme={null}
{
  "kind": "agent",
  "name": "AI Native",
  "key": "is_ai_native",
  "value": {
    "agent_type": "research_pro",
    "prompt": "Assess this statement about the company: The company is fundamentally AI-native rather than merely adding lightweight AI features. Use the default 1-5 grade scale. If there is not enough evidence to score confidently, return Not found.",
    "output_format": "grade"
  }
}
```

### Enterprise Fit Score

```json theme={null}
{
  "kind": "agent",
  "name": "Enterprise Fit",
  "key": "enterprise_fit",
  "value": {
    "agent_type": "research_pro",
    "prompt": "Assess this statement about the company: The company clearly sells to enterprise customers. Use the default 1-5 grade scale. If there is not enough evidence to score confidently, return Not found.",
    "output_format": "grade"
  }
}
```

### Competitive Axis Score

```json theme={null}
{
  "kind": "agent",
  "name": "SMB vs Enterprise",
  "key": "axis_smb_enterprise",
  "value": {
    "agent_type": "research_reasoning",
    "prompt": "Evaluate where this company sits on the spectrum from SMB to Enterprise. Consider pricing, sales model, product complexity, and customer size. Use this scale: 1 = pure SMB, 3 = mid-market, 5 = pure enterprise. If there is not enough evidence to score confidently, return Not found.",
    "output_format": "grade"
  }
}
```

## Common chains

### URL -> LinkedIn fetch -> summary

1. `linkedin_company_url`
2. `linkedin_company_data`
3. `linkedin_activity_summary`

### Research -> classification

1. `pricing_notes`
2. `pricing_model`

### Company -> people -> contact enrichment

1. `company_people_finder`
2. `email_finder`
3. `phone_finder`

For design guidance before copying templates, go back to [Column Guide](/api-guides/ai-tables/column-guide).
