table-creation
$
npx mdskill add extruct-ai/gtm-skills/table-creationParse company data and orchestrate Extruct table creation.
- Converts pasted lists, CSVs, or table URLs into structured records.
- Depends on the extruct-api skill for all API operations.
- Executes workflows triggered by specific user commands.
- Returns enriched company data ready for further processing.
SKILL.md
.github/skills/table-creationView on GitHub ↗
---
name: table-creation
description: >
Create an Extruct company table from user-provided data, upload rows, and
optionally add enrichment columns. Handles the full flow: parse input (CSV,
pasted list, or structured data), create or reuse a table, upload domains in
batches, add agent columns, and trigger enrichment. Triggers on: "create table",
"upload companies", "add to extruct", "new extruct table", "import companies",
"upload list to extruct".
---
# Create Table
End-to-end workflow: parse company data → create/reuse Extruct table → upload rows → add columns → run enrichment.
## Extruct API Operations
This skill delegates all Extruct API calls to the `extruct-api` skill.
For all Extruct API operations, read and follow the instructions in `skills/extruct-api/SKILL.md`.
All table creation, row uploads, column creation, and enrichment runs are handled by the extruct-api skill. This skill focuses on **parsing input data** and **orchestrating the flow** — the extruct-api skill handles the API execution.
## Workflow
### 1. Parse input data
Accept data in any of these formats:
**Pasted list** (most common): User pastes company names, URLs, and metadata as freeform text. Parse into structured records. Extract domains by stripping protocol, `www.`, and trailing slashes.
**CSV file**: Read CSV, map columns to find the URL/domain column.
**Extruct table URL**: Use the extruct-api skill to fetch data from existing table.
Key rules:
- Skip entries with no URL (e.g., "Stealth" companies)
- Deduplicate by domain
- Ask which metadata fields to preserve (country, stage, industry, etc.)
### 2. Decide: create new table or add to existing
Ask the user:
- **New table**: Delegate to the extruct-api skill to create a company table
- **Existing table**: User provides table ID or URL (`https://app.extruct.ai/tables/{id}`)
### 3. Upload rows
Delegate row upload to the extruct-api skill with the parsed domains.
Report progress to the user.
### 4. Add agent columns (optional)
If the user wants enrichment columns (industry, funding, etc.), delegate column creation to the extruct-api skill.
**Column types by use case:**
| User says | Agent type | Output format | Notes |
|-----------|------------|---------------|-------|
| "add industry" | `llm` | `select` with labels | Classification from profile, no web research needed |
| "add funding" | `research_pro` | `text` | Needs web research |
| "classify by vertical" | `llm` | `select` with labels | Classification |
| "find their tech stack" | `research_pro` | `text` | Needs web research |
| "score fit 1-5" | `llm` or `research_reasoning` | `grade` | Assessment |
| "tag multiple categories" | `llm` | `multiselect` with labels | Multiple tags |
See the [list-enrichment skill](../list-enrichment/SKILL.md) for full column types and output formats.
### 5. Trigger enrichment
Delegate the enrichment run to the extruct-api skill, scoped to only the newly added agent columns.
If no agent columns were added, skip this step.
### 6. Report to user
Provide:
- Table URL: `https://app.extruct.ai/tables/{table_id}`
- Row count uploaded
- Columns added
- Cells queued for enrichment
- Any rows skipped (stealth, duplicates, invalid URLs)
## Input Parsing Patterns
### Freeform pasted list (5-line groups)
```
Company Name
URL (or "Stealth")
Country
Industry
Funding Stage
```
Parse by splitting into 5-line chunks. Filter where URL == "Stealth".
### CSV
Map columns: look for "website", "url", "domain", "Company Website". Extract domain from whichever column contains URLs.
### Single-column domain list
```
example.com
startup.io
company.ai
```
Direct upload — each line is a domain.
## Common Pitfalls
- **Domain format**: Strip protocol and trailing slash. `https://www.example.com/` → `example.com`
- **Stealth companies**: Skip — no domain to enrich
- **Duplicates**: Deduplicate by domain before upload
- **Column labels**: For `select`/`multiselect`, collect unique values from user data to build the label list
More from extruct-ai/gtm-skills
- campaign-sending>
- competitor-monitoring>
- context-building>
- email-generation>
- email-prompt-building>
- email-response-simulation>
- email-search>
- email-verification>
- enrichment-design>
- extruct-apiRun explicit Extruct API tasks through the bundled Extruct CLI. Covers Deep Search, semantic search, lookalike search, company and people tables, column operations, enrichment, and contact finding.