Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Data & analysis
Company Enrichment
Try itEnrich a list of companies (names, domains, or LinkedIn URLs) with firmographic data like industry, employee count, headquarters, and founding year. Use when the user wants to enrich, look up, or research a batch of companies.
What it does
Turn identifiers you already have (LinkedIn company URLs, slugs, or website domains) into firmographic data: industry, employee count, headquarters, founding year, and description. LinkedIn only; this skill covers no other platform.
The skill document
Company enrichment with Veezee
Turn identifiers you already have (LinkedIn company URLs, slugs, or website domains) into firmographic data: industry, employee count, headquarters, founding year, and description. LinkedIn only; this skill covers no other platform.
Setup (one free key, no signup)
Every call needs an API key. Minting one is free and human-free: no signup, no card. A call without a key fails with KEY_REQUIRED (401) carrying mint_url; the fix is the free mint below, never a payment. A fresh vz_trial_ key runs under a free per-IP daily budget of 200 credits, cached data only, first page only on any cursor sequence. Two equivalent surfaces; pick whichever your environment has:
- MCP: add the server
https://mcp.veezee.io/linkedin(streamable-http;https://mcp.veezee.io/allexposes every tool). Hosts that support MCP authorization (Claude Code, claude.ai) open a Veezee sign-in on connect (email code, no password): that is the whole auth step. Other hosts: mint a key withPOST https://api.veezee.io/v1/keys/mint(empty body; the key is shown once) and put it in the connection'sAuthorization: Bearerheader. - SDK:
import { VeezeeClient } from "@veezee/sdk";const client = new VeezeeClient(); await client.mint();mints and stores the free key the first time and reuses it on later runs. Platform methods live on the namespace (client.linkedin.getProfile/searchPeople/getCompany/getPosts);client.resolveUrlandclient.getUsageare top-level. The client sends retries and Idempotency-Keys for you. TheveezeeCLI (npx @veezee/sdk init) mints and stores the same key.
The free daily budget covers only a handful of companies, so a real batch needs purchased credits. When the budget or a trial cap runs out (TRIAL_CAP_EXCEEDED, INSUFFICIENT_CREDITS, BUDGET_EXHAUSTED), the error carries upgrade_url (https://veezee.io/upgrade) and a machine-readable offer; hand that link to your human, and purchases credit the same key directly, nothing to reconfigure.
The loop, per company
- Classify the identifier.
- Clean LinkedIn company URL or slug (the part after
/company/): go straight to step 2. - Website domain (e.g.
acme.com): also go straight to step 2;get_companyaccepts a domain directly. - Dirty or ambiguous LinkedIn URL (trackers, redirects, shortened):
resolve_urlfirst, then use the returned handle. - Only an approximate company name, no URL or domain:
get_companydoes not search by name, so ask the user for the company's website domain (the most reliable identifier) or LinkedIn URL.search_peoplewith acurrent_companyfilter matches company names natively (fuzzy, typo-tolerant), but it needskeywordstoo and returns people, not the company record.
- Clean LinkedIn company URL or slug (the part after
get_companywith the identifier. A domain identifier quotes base price plus a resolution surcharge (setmax_creditsaccordingly); once a domain has been resolved before, that surcharge is refunded at settlement, so known domains settle at the base price. A domain that cannot be verified to a company returnsINVALID_INPUTwith the closest matches instead of a guessed company.- Record name, description, industry, employee count, headquarters, website, founding year, and specialities. Every response carries
usagewith the exact credits charged.
Rules that save credits and errors
- Check the budget BEFORE a batch:
get_usageis free, exempt from the rate limit, and works the same on a trial or paid key. Do not discover an empty balance mid-run. - Set
max_creditson calls when running a large batch; a call whose quote exceeds it is rejected with nothing charged. - Default freshness is cached (usually a few hours old) and free.
freshness: "realtime"costs extra and needs a paid key (trial keys are cached-only and reject realtime with TRIAL_CAP_EXCEEDED); use it only when the user needs today's data. - Do not pass a numeric company id or URN to
get_company; those aresearch_peoplefilter inputs, not fetch identifiers. Use the slug, URL, or domain. - For a company's recent posts, use
get_postswith the same identifier (URL, slug, or website domain all work there too). - On KEY_REQUIRED, mint the free key and retry the same call; it is never a payment problem. On TRIAL_CAP_EXCEEDED, INSUFFICIENT_CREDITS, or BUDGET_EXHAUSTED, stop the batch and give the error's
upgrade_urlto your human; purchases credit the account directly and you continue afterward with the same key. - A 403 NOT_ENTITLED means the key's account is not enabled for this platform; grants are explicit, write to hello@veezee.io to enable more.
Output
Report per company: name, industry, employee count, headquarters, website, and founding year. Flag any identifier that returned INVALID_INPUT along with the closest matches Veezee suggested. Include total credits spent (sum the usage.credits_charged fields) so the human can budget the next batch.
Related skills
Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Site audit, content writing, and competitor analysis for organic search rankings.
More from veezee-build
Browse all skillsOne-shot sweep of Reddit and X (formerly Twitter) reactions to a product launch, announcement, release, or news moment in a time window, read out as volume, representative quotes, themes, and notable accounts. Use whenever the user asks how people are reacting, what the sentiment or reception is, whether a launch landed, or what Reddit or X is saying about something that just happened, even if they never say "sentiment" or name a platform. For ongoing, repeated coverage of a brand or topic over time, use reddit-monitoring instead.
Turn a role or ICP spec into a ranked outbound sales list of LinkedIn prospects, each enriched with company context and a one-line personalized opener rationale. Use whenever the user wants prospects, leads, a target-account list, people to sell to, or personalized outreach angles, even if they only describe the buyer ("find me VPs of Sales at fintech startups") without saying "list" or "outreach". For a hiring shortlist use candidate-sourcing instead; for enriching prospects the user already has, use prospect-enrich.
Continuously monitor Reddit for new posts and comments mentioning a topic, brand, or competitor, deduped across polls. Use when the user wants ongoing Reddit monitoring, brand or competitor tracking, or alerts on new mentions across subreddits.
Find LinkedIn candidates matching a role spec, shortlist them, and enrich the shortlist with current role and experience. Use when the user wants to source, find, or search for candidates, talent, or people matching criteria like title, school, or current/past employer (e.g. "engineers at Shopify who used to work at Amazon").
Deep research on one target company before outreach, covering company facts, key people, and recent posts. Use when the user wants to research an account, prepare for a call, or "get up to speed" on a single target company.
Research what a person or company posts about on LinkedIn, including topics, tone, and how recently they have posted. Use when the user wants to know someone's posting voice, content themes, or activity level before writing outreach or a comment.