Deepline research skill

Use when the user wants a last30days-style pre-research pass in Deepline: discover the critical public, private, CRM, workflow, social, and web data sources for a research/enrichment job.

by getaero-io·MIT license·★ 66 Stars on the repo·GitHub ↗

Use now

Inside this skill

SKILL.md · the author's own words
# Deepline Research

## Quick Start

```bash
npm install -g deepline
deepline auth register --wait auto
deepline -h
```

## CLI resolution

Run `deepline` when it is available. If the shell reports that command is missing, use `<workspace-root>/.deepline/runtime/bin/deepline` (o…

Before the first Deepline fanout in a task, run `deepline preflight --json` as
one standalone command and wait for it to finish. Never submit preflight beside

Word-for-word excerpt, not a result. Read the full SKILL.md ↓

Files of Deepline research

getaero-io/main1 file shown
SKILL.md
Show the full text459 lines

Deepline Research

Quick Start

npm install -g deepline
deepline auth register --wait auto
deepline -h

CLI resolution

Run deepline when it is available. If the shell reports that command is missing, use <workspace-root>/.deepline/runtime/bin/deepline (or the npm-created .cmd shim on Windows). If neither exists, follow https://code.deepline.com/INSTALL.md to set up Deepline.

Before the first Deepline fanout in a task, run deepline preflight --json as one standalone command and wait for it to finish. Never submit preflight beside another Deepline command.

Find the highest-signal GTM data sources, public evidence, and market language for a research or enrichment job before building the pipeline. This is a standalone Deepline skill that should behave like last30days with a GTM data lens: broad source coverage, recency, community signals, citations, source stats, and a grounded "What I learned" synthesis. In Deepline, the report first explains what the research found; only after that does it translate the findings into Deepline tool contracts, private/proprietary joins, and Deepline-facing cost.

Attribution

Portions of the query-design, public-source fanout, and consolidation approach are adapted from mvanhorn/last30days-skill, MIT licensed, copyright (c) 2026 Matt Van Horn. Keep THIRD_PARTY_NOTICES.md with this skill when packaging or distributing it.

Non-Negotiables

  • Use Deepline's live tool catalog before naming provider actions. Do not rely on memory.
  • Run live web search. Do not answer public-source discovery from model memory. Every run MUST execute real searches with a web-search tool during the public-source fanout. If a run names public datasets without having searched for them this session, it has failed the fanout — no exceptions for "obvious" verticals. Naming a source family from memory is a draft, not a finding; the finding is the exact artifact the search returns. (Eval evidence: runs that skipped web search lost or tied on exactly the prompts where a competitor searched and surfaced concrete artifacts.)
  • Resolve every materializable dataset to its exact artifact, not its family. For each public dataset/registry you recommend, the fanout must return and record: (1) the exact file/endpoint name (e.g. IA_FIRM_SEC_Feed_YYYY_MM_DD.xml.gz, not "the ADV bulk feed"); (2) the canonical download/API URL; (3) any mirror (e.g. data.gov catalog copy) that is easier to pull; (4) an existing open-source parser or GitHub repo that already structures it, when one exists (search "<dataset> parser github"); (5) the government statistical registry for the vertical when one exists (BLS QCEW + NAICS codes, Census County Business Patterns, etc.) for free establishment counts and sizing. "Source family named" is not done. "Exact file + URL + mirror + parser + NAICS code recorded" is done. See the Artifact Resolution Gate (§4.55).
  • Public-source discovery comes before provider routing. First find the best public registries, datasets, communities, discussions, reviews, directories, papers, repos, and source leads. Then use Deepline routes to materialize, validate, enrich, and activate them.
  • Quote only customer-visible Deepline credits/USD. Never expose provider spend.
  • Do not run paid or cost-unknown full-scope work without approval.
  • Treat private data sources as first-class: CRM, warehouse, workflow runs, product analytics, support/calls, sheets, and customer-owned datasets.
  • Treat custom language as a first-class workflow: buyer words, objections, category language, competitor framing, community slang, sales-call phrasing, and support-ticket pain belong in the source plan.
  • Use tiny probes to learn coverage. Scale only after observed coverage, cost basis, and evidence quality are legible.
  • If the user asks for a named provider, X.com, Reddit comments, TikTok, Instagram, YouTube transcripts, Bluesky, Truth Social, or HN, include a current support/gap assessment instead of pretending every source is native.
  • Do not depend on /last30days at runtime. Reference it only as a design benchmark for source breadth and synthesis discipline.
  • Public registries and niche datasets that do not have native Deepline tools are still valid sources through generic web/search/extraction routes. For example, the NPI registry for healthcare provider taxonomy can be discovered and pulled through generic web/API search and extraction even when no native npi tool exists. Classify this as available through generic route, not as an unusable gap.
  • Every recommended source must be classified as native, available through generic route, private connector, or missing provider to add.

Start Here

  1. Read references/source-map.md.
  2. For GTM use cases, also read references/last30days-gtm-corpus.md; it summarizes the relevant saved last30days runs and the source patterns they proved useful.
  3. If the task asks for query design, source fanout, or last30days parity, also read references/query-design.md and references/fanout-consolidation.md.
  4. If the task is GTM/prospecting/enrichment, also read ../deepline-gtm/SKILL.md and the sub-doc it routes to.
  5. If the task asks about existing warehouse metrics or RevOps analytics, also read ../deepline-analytics/SKILL.md.
  6. Verify the latest upstream last30days release when using it as a design reference:
git ls-remote --tags https://github.com/mvanhorn/last30days-skill.git | tail -20

Do not copy last30days local scripts into Deepline and do not call it as a required sub-skill. Use it for source taxonomy and output discipline, then route execution through Deepline tools, plays, workflows, and private-data connectors.

Optional Skill Handoffs

This skill owns pre-research and source planning. It may hand off after the source plan is clear:

  • deepline-gtm: execute GTM sourcing, enrichment, waterfalls, personalization, contact discovery, or CRM activation.
  • deepline-analytics: query warehouse/semantic-layer metrics and RevOps/customer datasets.
  • deepline-plays: build, wrap, fork, run, inspect, or automate the final repeatable workflow/play.
  • Similar community research skills such as last30days: design reference only, never a dependency for Deepline execution.

Standard Flow

1. Parse The Research Job

Extract:

  • OBJECTIVE: what decision or output the research should support
  • ENTITY_SCOPE: companies, people, markets, accounts, customers, workflows, competitors, or topics
  • TIME_WINDOW: default to last 30 days for trend/community research; preserve user-provided windows
  • PRIVATE_SOURCES: CRM, warehouse, product events, workflow runs, support/calls, sheets, user CSVs
  • PUBLIC_SOURCES: web, social, jobs, ads, technographics, funding, news, communities, app stores, directories
  • DATASET_LEADS: public registries, open datasets, papers, GitHub repos, government records, niche directories, or platform posts that point to materializable data
  • CUSTOM_LANGUAGE_OUTPUTS: outbound snippets, ad hooks, landing-page copy, objection language, category positioning, call scripts, lead magnets, or CRM personalization fields
  • OUTPUT: source plan, workflow design, CSV schema, play spec, or final research brief

Tell the user the parsed scope before provider calls.

2. Prefer External APIs, Not Scraping

Do not default to browser scraping, raw x.com scraping, or unvetted actors. Prefer managed external APIs and private connectors:

Source family Preferred route Credential needed Notes
Reddit threads/comments managed social-data tool, found with deepline search Deepline integration API key Required for managed Reddit comments/thread coverage.
TikTok / Instagram / YouTube fallback managed social-data tool, found with deepline search Deepline integration API key Preferred managed API for captions, engagement, and transcript fallback. Search ScrapeCreators unfiltered when profile/contact tools matter; some profile tools are categorized as admin, not research.
X/Twitter managed X/Twitter tool, found with deepline search Deepline integration API key Managed X/Twitter search; avoids scraping x.com.
Web/news/docs web-search tool, found with deepline search Deepline integration API key Search API, not search-page scraping.
Web extraction fallback page-extraction tool, found with deepline search Deepline integration API key Use after URL discovery; do not use for blind scrape-at-scale.
Hacker News Hacker News tool, found with deepline search none Public Algolia API.
Bluesky Bluesky tool, found with deepline search none Public AppView API.
CRM/private the workspace's connected CRM Deepline OAuth/private connector Query customer-authorized APIs, not UI scraping.
Warehouse/product/workflow Snowflake/customer DB/workflow runtime Deepline private connector Use scoped warehouse/runtime access.
Last-resort scraping fallback general scraping tool, found with deepline search Deepline integration API key Optional fallback only after explicit approval and provider gap status.

Treat any route not covered by a described Deepline tool contract, key/auth plan, test endpoint, and Deepline-facing pricing as unapproved until after the public research synthesis is complete.

3. Run Public-Source Fanout First

Before provider routing, run a last30days-style public discovery pass. The goal is to produce the research synthesis first: what public evidence, communities, registries, directories, reviews, posts, docs, and datasets actually teach us about the GTM problem.

Search across:

  • community/social: Reddit threads/comments, X/Twitter, LinkedIn posts if available, YouTube, TikTok, Instagram, HN, Bluesky
  • web/source discovery: news, blogs, docs, review sites, directories, associations, forums, GitHub, public data inventories
  • public records and niche datasets: registries, licenses, inspections, permits, government datasets, open CSVs/APIs, professional directories, accreditation/member lists
  • market-language sources: reviews, comments, clinic/business websites, job posts, competitor pages, support/community language

This pass is search-driven, not recall-driven. Issue real queries. For any vertical dataset, run at minimum these query shapes and read the top results before writing the source line:

  • "<vertical> <entity> registry OR bulk data OR dataset download" — find the authoritative file
  • "<dataset name> download" / site:data.gov <vertical> — find the canonical URL and any mirror
  • "<dataset name> parser github" / "<dataset name> python" — find an existing parser/repo so you don't reinvent extraction
  • "<vertical> NAICS code" + BLS QCEW <NAICS> / Census County Business Patterns — free establishment counts and sizing

For each useful source lead, record:

  • why it matters
  • exact artifact: the specific file/endpoint name, canonical URL, mirror, and any open-source parser/repo (not just "the X bulk feed" or "search Google") — see Non-Negotiables and the Artifact Resolution Gate (§4.55)
  • whether it can become rows
  • stable join keys such as NPI, CRD, USDOT#, NAICS, domain, address, phone, license id, provider id, LinkedIn URL, or CRM account id
  • extraction risks and likely false-positive patterns

Do not stop at "a search tool can find this." Search tools are routes; the deliverable is the public source or dataset discovered through them. If you find yourself writing a dataset name you did not just see in a search result, stop and search for it.

3.5. Use The Research Planning API After Public Synthesis

When running inside Deepline or the V2 SDK, use the native planning endpoint only after the public-source fanout has produced a first synthesis and source map. The API is for translating the research into Deepline routes, gaps, approval gates, and cost, not for replacing the research pass:

curl -s "$DEEPLINE_API_BASE_URL/api/v2/pre-research/plan" \
  -H "Authorization: Bearer $DEEPLINE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"objective":"best GTM data sources for SMB consumer services companies","depth":"deep"}'

Agent validation endpoint:

curl -s "$DEEPLINE_API_BASE_URL/api/v2/pre-research/test" \
  -H "Authorization: Bearer $DEEPLINE_API_KEY"

The endpoint returns the query plan, source coverage, current Deepline tool candidates, sanitized Deepline-facing pricing metadata, explicit provider gaps, and approval gate. It does not execute paid provider calls.

For SDK V2 users, ask the installed Deepline GTM skill to build the source plan:

/deepline-gtm Build a pre-research source plan for my GTM problem before running paid provider calls.

The skill prompts the agent to call /api/v2/pre-research/plan, inspect the returned providerRequirements, and only then decide whether to run probes or build a play.

4. Search For Deepline Candidate Tools

Run several focused searches, usually in parallel after the standalone preflight. deepline search --type tools accepts an optional intent query, but requires either that query or one of --categories / --search_terms; those filters accept comma-separated values. Read the default search output without --json. There is no --prefix flag, so put a provider name in the query instead.

deepline search --type tools "web search news source discovery" --categories research --search_terms "web search,news,recency,source discovery"
deepline search --type tools "social posts reddit x twitter youtube tiktok instagram" --categories research --search_terms "social posts,reddit,x twitter,youtube,tiktok,instagram"
deepline search --type tools "facebook profile email"
deepline search --type tools "instagram profile bio links"
deepline search --type tools "company dataset firmographics funding technographics jobs" --categories company_search --search_terms "company dataset,firmographics,funding,technographics,jobs"
deepline search --type tools "crm warehouse workflow session usage" --categories admin --search_terms "crm,warehouse,workflow,session,usage"

For CRM/private data, also search by provider name when relevant:

deepline search --type tools salesforce
deepline search --type tools hubspot
deepline search --type tools attio
deepline search --type tools snowflake
4.25. Design Queries Before Running Tools

Do not send the raw user prompt to every provider. Generate a source-specific query plan first:

for dir in \
  "$PWD/.skills/deepline-research" \
  "$HOME/.claude/skills/deepline-research" \
  "$HOME/.agents/skills/deepline-research"; do
  [ -f "$dir/scripts/query_design.py" ] && SKILL_ROOT="$dir" && break
done
[ -n "${SKILL_ROOT:-}" ] || { echo "Could not find deepline-research skill root" >&2; exit 1; }
python3 "$SKILL_ROOT/scripts/query_design.py" "$OBJECTIVE" --depth default

Use the plan to decide:

  • query type and source tiers
  • cleaned core subject
  • Reddit global/review/problem variants
  • X literal keyword, compound-term, shorter-keyword, and strongest-token fallbacks
  • video/transcript and caption queries
  • web, dataset, and GitHub discovery queries
  • CRM, warehouse, workflow, support, and custom-language private queries
  • supplemental keys to extract after phase-one retrieval

For production Deepline implementation, port this helper to the runtime language or call equivalent logic before deepline tools execute or a Play.

4.5. Required Coverage Gate

Before recommending a plan, check every required source family in references/source-map.md:

  • community/social discussion
  • custom language and messaging evidence
  • web/news/search and URL extraction
  • video/transcript sources
  • prediction/market/community ranking sources
  • dataset-discovery leads from social/community results
  • company/account datasets
  • person/contact datasets
  • jobs/hiring/technographic/funding signals
  • CRM/private datasets
  • warehouse/product/workflow datasets

For each family, mark one of:

  • native: a Deepline tool/play exists and can be described
  • generic route: use a web-search, page-extraction or general scraping tool, or deeplineagent
  • private connector: use CRM, warehouse, workflow, or customer dataset access
  • gap: provider/action should be added before Deepline can replicate that part well

Do not skip a family just because it is inconvenient. Missing coverage is part of the pre-research output.

4.55. Artifact Resolution Gate

Before writing the report, verify every materializable public dataset has been resolved from a family to an artifact. For each recommended public dataset/registry, confirm you can fill this row from something you actually searched or fetched this session:

Dataset Exact file/endpoint Canonical URL Easier mirror OSS parser/repo Vertical stat registry (NAICS/QCEW/CBP)

Rules:

  • A cell you filled from memory instead of a live result is not verified. Search for it.
  • n/a is allowed only when the artifact genuinely does not exist (e.g. no public bulk file, no known parser) — and you must have searched to establish that, not assumed it.
  • If the user's ask contains "dataset", "github", "repo", "download", "the file", "the data", or a request to hand something over, this gate is the primary deliverable, not an appendix: lead the report with the resolved artifacts.
  • The government statistical registry column (BLS QCEW + NAICS, Census County Business Patterns) is required for any US industry vertical — it is free establishment-count and sizing data that public-source fanout consistently leaves on the table.

A report that names "the SEC ADV bulk feed" fails this gate; a report that names IA_FIRM_SEC_Feed_YYYY_MM_DD.xml.gz at its sec.gov URL, notes the data.gov mirror, and links an existing ADV parser repo passes it.

When you cite a parser/repo alongside a dataset, name the exact input file that repo actually consumes — check its README. A vertical often has multiple real distributions (e.g. SEC publishes both the IA_FIRM_SEC_Feed_*.xml.gz bulk feed and the ia<MMDDYY>.zip IAPD compilation); pairing a parser with the wrong-but-real file is a precision error, not a fabrication, but it still breaks the handoff. Match the parser to its file.

4.6. Fanout And Consolidation Gate

For last30days parity, preserve the public-source fanout mechanics described in references/fanout-consolidation.md:

  • broad parallel search before synthesis
  • supplemental searches from discovered handles, subreddits, domains, datasets, CRM ids, account lists, workflow ids, and persona language
  • common evidence rows before scoring
  • relevance, recency, engagement, source-quality, materializability, private-outcome, join-confidence, custom-language, and cost/coverage scoring
  • URL/source-id/text dedupe plus company/person/dataset identity joins
  • coverage nudges for searched, weak, errored, missing-credential, unavailable, and not-relevant sources

If implementation coverage is being audited, run the local evaluator:

for dir in \
  "$PWD/.skills/deepline-research" \
  "$HOME/.claude/skills/deepline-research" \
  "$HOME/.agents/skills/deepline-research"; do
  [ -f "$dir/scripts/evaluate_examples.py" ] && SKILL_ROOT="$dir" && break
done
[ -n "${SKILL_ROOT:-}" ] || { echo "Could not find deepline-research skill root" >&2; exit 1; }
python3 "$SKILL_ROOT/scripts/evaluate_examples.py"

Use evals/side-by-side.md to compare saved last30days examples against this skill's coverage contract.

For standalone eval harness runs, write reports into the harness output directory:

python3 "$SKILL_ROOT/scripts/evaluate_examples.py" \
  --out-md "${OUTPUT_DIR:-$SKILL_ROOT/evals}/side_by_side_pre_research.md" \
  --out-json "${OUTPUT_DIR:-$SKILL_ROOT/evals}/side_by_side_pre_research.json"
python3 "$SKILL_ROOT/scripts/evaluate_public_private_corpus.py" \
  --out-md "${OUTPUT_DIR:-$SKILL_ROOT/evals}/public_private_corpus_results.md" \
  --out-json "${OUTPUT_DIR:-$SKILL_ROOT/evals}/public_private_corpus_results.json"
5. Describe Before Pricing Or Execution

For every candidate, inspect the live contract:

deepline tools describe <tool-id>

Record:

  • input fields and required identifiers
  • output evidence fields and citations
  • pricing summary, billing basis, and whether BYOK changes Deepline credit cost
  • rate limits, async behavior, and sample payloads
  • extraction quality risks and identity-matching requirements

If a source family is not present in Deepline, mark it as a provider gap and propose the integration path.

6. Probe Coverage When Useful

Use free/low-cost probes first. For paid probes, ask before running unless the user already approved a specific pilot budget.

Good probe shapes:

  • one entity, one query, or one row
  • limit: 1 or numResults: 3
  • one source per probe so coverage and cost are attributable
  • saved raw output path or run id for later workflow design

At scale, use a Deepline Play rather than ad hoc loops so the run and persisted results remain inspectable.

7. Return A Last30days-Style GTM Research Report

Use the same output discipline as last30days agent mode. The report should feel like a real research result, not a bespoke segment-analysis template or provider catalog.

## Research Report: <topic>

Generated: <date> | Sources: Reddit, X, YouTube, TikTok, Instagram, HN, Web, Public registries, Deepline catalog

### Key Findings

- <3-5 highest-signal findings grounded in public/source evidence>

### What I learned

**<Theme 1>** - <1-2 sentences about the segment, source, buyer language, or dataset reality. Cite sparingly using source names, handles, communities, registries, or domains.>

**<Theme 2>** - <1-2 sentences.>

**<Theme 3>** - <1-2 sentences.>

KEY PATTERNS from the research:

1. <Pattern, source family, and why it matters for GTM>
2. <Pattern, source family, and why it matters for GTM>
3. <Pattern, source family, and why it matters for GTM>

### GTM Data Sources Found

| Source family | Best source / route | Status | Rows / join keys | Caveat |
| ------------- | ------------------- | ------ | ---------------- | ------ |

### Materializable Datasets (exact artifacts)

| Dataset | Exact file/endpoint | URL | Mirror | OSS parser/repo | Stat registry (NAICS/QCEW/CBP) |
| ------- | ------------------- | --- | ------ | --------------- | ------------------------------ |

<!-- One row per public dataset you can turn into rows. No "family" placeholders — exact filename, canonical URL, mirror, and an existing parser repo where one exists. This table is the answer when the ask is "give me the dataset/github". -->

### Market Language

| Source | What to extract | How to use it | Guardrail |
| ------ | --------------- | ------------- | --------- |

### Proprietary Data To Join Later

| Dataset | Owner / connector | Join key | Why it changes the answer |
| ------- | ----------------- | -------- | ------------------------- |

### Deepline Route

| Public source family | Route status | Deepline route | Probe needed | Cost basis |
| -------------------- | ------------ | -------------- | ------------ | ---------- |

### Gaps To Add

| Missing source | Why it matters | Suggested provider/integration | Required fields |
| -------------- | -------------- | ------------------------------ | --------------- |

### Recommended Workflow

1. <first retrieval/probe>
2. <second retrieval/probe>
3. <synthesis/scoring/join step>

### Stats

---

✅ All agents reported back!
├─ <source family>: <count / coverage / engagement when available>
├─ <source family>: <count / coverage / engagement when available>
├─ 🌐 Web/Public data: <pages, registries, directories, datasets>
└─ 🗣️ Top sources: <handles, communities, registries, domains, datasets>

---

### Cost Estimate

- Pilot: <credits or range>
- Full run: <credits or range and assumptions>
- Unknowns: <what must be described/probed before quoting>

For --agent-style or non-interactive use, stop after the report. For interactive use, end with a short, specific invitation based on the actual findings, mirroring last30days:

---

I'm now an expert on <topic>. Some things I can help with:

- <specific follow-up grounded in the findings>
- <specific workflow/probe to run next>
- <specific segment or source to go deeper on>

If the user wants execution, hand off to deepline-gtm after this output.

Match last30days cleanup rules:

  • Omit any source line that returned zero results. Do not show "0 results", "0 stories", or "no results".
  • Do not append a separate trailing "Sources used" section.
  • Do not paste raw URLs or Markdown source links in the report body or stats. Use clean source names inline, such as NPI Registry, Google Maps, r/SaaS, G2, Meta docs, or Hike Medical site.
  • Citations should prove the research is real without turning the report into a bibliography. Prefer handles, communities, source names, registries, domains, and doc names.
  • Use the last30days stats block style exactly: start with ✅ All agents reported back!, use ├─, └─, and │ separators where useful, and include source emojis when they clarify the source family.
  • Keep the Deepline route and cost after the research synthesis, never before it.

Approval Gate

Before any full paid run, include:

  • providers/tools
  • pilot result or reason a pilot is not possible
  • full-run scope
  • Deepline credit estimate/range
  • max spend cap
  • exact approval question

If the user approves, execute through a Deepline Play or a targeted deepline tools execute call as appropriate.

Finish Criteria

The task is done only when the user has:

  • a ranked data-source map
  • a last30days-style GTM research synthesis grounded in public sources
  • every materializable dataset resolved to an exact artifact (file/endpoint name + canonical URL + mirror + OSS parser + vertical NAICS/QCEW), verified via live search this session — not named from memory (see §4.55)
  • live tool ids or explicit provider gaps
  • a Deepline-facing cost estimate
  • the recommended first workflow/play shape
  • any blockers for credentials, private-data access, or missing provider support
1---
2name: deepline-research
3description: 'Use when the user wants a last30days-style pre-research pass in Deepline: discover the critical public, private, CRM, workflow, social, and web data sources for a research/enrichment job; compare provider coverage; estimate Deepline credit cost; recommend the source plan before building or running the workflow; or build custom language/messaging from buyer, competitor, community, and CRM evidence. Triggers: pre-research, source discovery, provider strategy, research data sources, ScrapeCreators, X/Twitter data, Reddit comments, public and private datasets, CRM data, workflow data, custom language, messaging language, pain language.'
4---
5 
6# Deepline Research
7 
8## Quick Start
9 
10```bash
11npm install -g deepline
12deepline auth register --wait auto
13deepline -h
14```
15 
16## CLI resolution
17 
18Run `deepline` when it is available. If the shell reports that command is missing, use `<workspace-root>/.deepline/runtime/bin/deepline` (or the npm-created `.cmd` shim on Windows). If neither exists, follow `https://code.deepline.com/INSTALL.md` to set up Deepline.
19 
20Before the first Deepline fanout in a task, run `deepline preflight --json` as
21one standalone command and wait for it to finish. Never submit preflight beside
22another Deepline command.
23 
24Find the highest-signal GTM data sources, public evidence, and market language for a research or enrichment job before building the pipeline. This is a standalone Deepline skill that should behave like `last30days` with a GTM data lens: broad source coverage, recency, community signals, citations, source stats, and a grounded "What I learned" synthesis. In Deepline, the report first explains what the research found; only after that does it translate the findings into Deepline tool contracts, private/proprietary joins, and Deepline-facing cost.
25 
26## Attribution
27 
28Portions of the query-design, public-source fanout, and consolidation approach are adapted from [`mvanhorn/last30days-skill`](https://github.com/mvanhorn/last30days-skill), MIT licensed, copyright (c) 2026 Matt Van Horn. Keep `THIRD_PARTY_NOTICES.md` with this skill when packaging or distributing it.
29 
30## Non-Negotiables
31 
32- Use Deepline's live tool catalog before naming provider actions. Do not rely on memory.
33- **Run live web search. Do not answer public-source discovery from model memory.** Every run MUST execute real searches with a web-search tool during the public-source fanout. If a run names public datasets without having searched for them this session, it has failed the fanout — no exceptions for "obvious" verticals. Naming a source family from memory is a draft, not a finding; the finding is the exact artifact the search returns. (Eval evidence: runs that skipped web search lost or tied on exactly the prompts where a competitor searched and surfaced concrete artifacts.)
34- **Resolve every materializable dataset to its exact artifact, not its family.** For each public dataset/registry you recommend, the fanout must return and record: (1) the **exact file/endpoint name** (e.g. `IA_FIRM_SEC_Feed_YYYY_MM_DD.xml.gz`, not "the ADV bulk feed"); (2) the **canonical download/API URL**; (3) any **mirror** (e.g. data.gov catalog copy) that is easier to pull; (4) an existing **open-source parser or GitHub repo** that already structures it, when one exists (search `"<dataset> parser github"`); (5) the **government statistical registry** for the vertical when one exists (BLS QCEW + NAICS codes, Census County Business Patterns, etc.) for free establishment counts and sizing. "Source family named" is not done. "Exact file + URL + mirror + parser + NAICS code recorded" is done. See the Artifact Resolution Gate (§4.55).
35- Public-source discovery comes before provider routing. First find the best public registries, datasets, communities, discussions, reviews, directories, papers, repos, and source leads. Then use Deepline routes to materialize, validate, enrich, and activate them.
36- Quote only customer-visible Deepline credits/USD. Never expose provider spend.
37- Do not run paid or cost-unknown full-scope work without approval.
38- Treat private data sources as first-class: CRM, warehouse, workflow runs, product analytics, support/calls, sheets, and customer-owned datasets.
39- Treat custom language as a first-class workflow: buyer words, objections, category language, competitor framing, community slang, sales-call phrasing, and support-ticket pain belong in the source plan.
40- Use tiny probes to learn coverage. Scale only after observed coverage, cost basis, and evidence quality are legible.
41- If the user asks for a named provider, X.com, Reddit comments, TikTok, Instagram, YouTube transcripts, Bluesky, Truth Social, or HN, include a current support/gap assessment instead of pretending every source is native.
42- Do not depend on `/last30days` at runtime. Reference it only as a design benchmark for source breadth and synthesis discipline.
43- Public registries and niche datasets that do not have native Deepline tools are still valid sources through generic web/search/extraction routes. For example, the NPI registry for healthcare provider taxonomy can be discovered and pulled through generic web/API search and extraction even when no native `npi` tool exists. Classify this as `available through generic route`, not as an unusable gap.
44- Every recommended source must be classified as `native`, `available through generic route`, `private connector`, or `missing provider to add`.
45 
46## Start Here
47 
481. Read `references/source-map.md`.
492. For GTM use cases, also read `references/last30days-gtm-corpus.md`; it summarizes the relevant saved `last30days` runs and the source patterns they proved useful.
503. If the task asks for query design, source fanout, or `last30days` parity, also read `references/query-design.md` and `references/fanout-consolidation.md`.
514. If the task is GTM/prospecting/enrichment, also read `../deepline-gtm/SKILL.md` and the sub-doc it routes to.
525. If the task asks about existing warehouse metrics or RevOps analytics, also read `../deepline-analytics/SKILL.md`.
536. Verify the latest upstream `last30days` release when using it as a design reference:
54 
55```bash
56git ls-remote --tags https://github.com/mvanhorn/last30days-skill.git | tail -20
57```
58 
59Do not copy `last30days` local scripts into Deepline and do not call it as a required sub-skill. Use it for source taxonomy and output discipline, then route execution through Deepline tools, plays, workflows, and private-data connectors.
60 
61## Optional Skill Handoffs
62 
63This skill owns pre-research and source planning. It may hand off after the source plan is clear:
64 
65- `deepline-gtm`: execute GTM sourcing, enrichment, waterfalls, personalization, contact discovery, or CRM activation.
66- `deepline-analytics`: query warehouse/semantic-layer metrics and RevOps/customer datasets.
67- `deepline-plays`: build, wrap, fork, run, inspect, or automate the final repeatable workflow/play.
68- Similar community research skills such as `last30days`: design reference only, never a dependency for Deepline execution.
69 
70## Standard Flow
71 
72### 1. Parse The Research Job
73 
74Extract:
75 
76- `OBJECTIVE`: what decision or output the research should support
77- `ENTITY_SCOPE`: companies, people, markets, accounts, customers, workflows, competitors, or topics
78- `TIME_WINDOW`: default to last 30 days for trend/community research; preserve user-provided windows
79- `PRIVATE_SOURCES`: CRM, warehouse, product events, workflow runs, support/calls, sheets, user CSVs
80- `PUBLIC_SOURCES`: web, social, jobs, ads, technographics, funding, news, communities, app stores, directories
81- `DATASET_LEADS`: public registries, open datasets, papers, GitHub repos, government records, niche directories, or platform posts that point to materializable data
82- `CUSTOM_LANGUAGE_OUTPUTS`: outbound snippets, ad hooks, landing-page copy, objection language, category positioning, call scripts, lead magnets, or CRM personalization fields
83- `OUTPUT`: source plan, workflow design, CSV schema, play spec, or final research brief
84 
85Tell the user the parsed scope before provider calls.
86 
87### 2. Prefer External APIs, Not Scraping
88 
89Do not default to browser scraping, raw x.com scraping, or unvetted actors. Prefer managed external APIs and private connectors:
90 
91| Source family | Preferred route | Credential needed | Notes |
92| ------------------------------------- | ------------------------------------------------------ | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
93| Reddit threads/comments | managed social-data tool, found with `deepline search` | Deepline integration API key | Required for managed Reddit comments/thread coverage. |
94| TikTok / Instagram / YouTube fallback | managed social-data tool, found with `deepline search` | Deepline integration API key | Preferred managed API for captions, engagement, and transcript fallback. Search ScrapeCreators unfiltered when profile/contact tools matter; some profile tools are categorized as `admin`, not `research`. |
95| X/Twitter | managed X/Twitter tool, found with `deepline search` | Deepline integration API key | Managed X/Twitter search; avoids scraping x.com. |
96| Web/news/docs | web-search tool, found with `deepline search` | Deepline integration API key | Search API, not search-page scraping. |
97| Web extraction fallback | page-extraction tool, found with `deepline search` | Deepline integration API key | Use after URL discovery; do not use for blind scrape-at-scale. |
98| Hacker News | Hacker News tool, found with `deepline search` | none | Public Algolia API. |
99| Bluesky | Bluesky tool, found with `deepline search` | none | Public AppView API. |
100| CRM/private | the workspace's connected CRM | Deepline OAuth/private connector | Query customer-authorized APIs, not UI scraping. |
101| Warehouse/product/workflow | Snowflake/customer DB/workflow runtime | Deepline private connector | Use scoped warehouse/runtime access. |
102| Last-resort scraping fallback | general scraping tool, found with `deepline search` | Deepline integration API key | Optional fallback only after explicit approval and provider gap status. |
103 
104Treat any route not covered by a described Deepline tool contract, key/auth plan, test endpoint, and Deepline-facing pricing as unapproved until after the public research synthesis is complete.
105 
106### 3. Run Public-Source Fanout First
107 
108Before provider routing, run a `last30days`-style public discovery pass. The goal is to produce the research synthesis first: what public evidence, communities, registries, directories, reviews, posts, docs, and datasets actually teach us about the GTM problem.
109 
110Search across:
111 
112- community/social: Reddit threads/comments, X/Twitter, LinkedIn posts if available, YouTube, TikTok, Instagram, HN, Bluesky
113- web/source discovery: news, blogs, docs, review sites, directories, associations, forums, GitHub, public data inventories
114- public records and niche datasets: registries, licenses, inspections, permits, government datasets, open CSVs/APIs, professional directories, accreditation/member lists
115- market-language sources: reviews, comments, clinic/business websites, job posts, competitor pages, support/community language
116 
117This pass is search-driven, not recall-driven. Issue real queries. For any vertical dataset, run at minimum these query shapes and read the top results before writing the source line:
118 
119- `"<vertical> <entity> registry OR bulk data OR dataset download"` — find the authoritative file
120- `"<dataset name> download"` / `site:data.gov <vertical>` — find the canonical URL and any mirror
121- `"<dataset name> parser github"` / `"<dataset name> python"` — find an existing parser/repo so you don't reinvent extraction
122- `"<vertical> NAICS code"` + `BLS QCEW <NAICS>` / Census County Business Patterns — free establishment counts and sizing
123 
124For each useful source lead, record:
125 
126- why it matters
127- **exact artifact**: the specific file/endpoint name, canonical URL, mirror, and any open-source parser/repo (not just "the X bulk feed" or "search Google") — see Non-Negotiables and the Artifact Resolution Gate (§4.55)
128- whether it can become rows
129- stable join keys such as NPI, CRD, USDOT#, NAICS, domain, address, phone, license id, provider id, LinkedIn URL, or CRM account id
130- extraction risks and likely false-positive patterns
131 
132Do not stop at "a search tool can find this." Search tools are routes; the deliverable is the public source or dataset discovered through them. If you find yourself writing a dataset name you did not just see in a search result, stop and search for it.
133 
134### 3.5. Use The Research Planning API After Public Synthesis
135 
136When running inside Deepline or the V2 SDK, use the native planning endpoint only after the public-source fanout has produced a first synthesis and source map. The API is for translating the research into Deepline routes, gaps, approval gates, and cost, not for replacing the research pass:
137 
138```bash
139curl -s "$DEEPLINE_API_BASE_URL/api/v2/pre-research/plan" \
140 -H "Authorization: Bearer $DEEPLINE_API_KEY" \
141 -H "Content-Type: application/json" \
142 -d '{"objective":"best GTM data sources for SMB consumer services companies","depth":"deep"}'
143```
144 
145Agent validation endpoint:
146 
147```bash
148curl -s "$DEEPLINE_API_BASE_URL/api/v2/pre-research/test" \
149 -H "Authorization: Bearer $DEEPLINE_API_KEY"
150```
151 
152The endpoint returns the query plan, source coverage, current Deepline tool candidates, sanitized Deepline-facing pricing metadata, explicit provider gaps, and approval gate. It does not execute paid provider calls.
153 
154For SDK V2 users, ask the installed Deepline GTM skill to build the source plan:
155 
156```text
157/deepline-gtm Build a pre-research source plan for my GTM problem before running paid provider calls.
158```
159 
160The skill prompts the agent to call `/api/v2/pre-research/plan`, inspect the returned `providerRequirements`, and only then decide whether to run probes or build a play.
161 
162### 4. Search For Deepline Candidate Tools
163 
164Run several focused searches, usually in parallel after the standalone
165preflight. `deepline search --type tools` accepts an optional
166intent query, but requires either that query or one of `--categories` /
167`--search_terms`; those filters accept comma-separated values. Read the default
168search output without `--json`. There is no `--prefix` flag, so put a provider name in
169the query instead.
170 
171```bash
172deepline search --type tools "web search news source discovery" --categories research --search_terms "web search,news,recency,source discovery"
173deepline search --type tools "social posts reddit x twitter youtube tiktok instagram" --categories research --search_terms "social posts,reddit,x twitter,youtube,tiktok,instagram"
174deepline search --type tools "facebook profile email"
175deepline search --type tools "instagram profile bio links"
176deepline search --type tools "company dataset firmographics funding technographics jobs" --categories company_search --search_terms "company dataset,firmographics,funding,technographics,jobs"
177deepline search --type tools "crm warehouse workflow session usage" --categories admin --search_terms "crm,warehouse,workflow,session,usage"
178```
179 
180For CRM/private data, also search by provider name when relevant:
181 
182```bash
183deepline search --type tools salesforce
184deepline search --type tools hubspot
185deepline search --type tools attio
186deepline search --type tools snowflake
187```
188 
189### 4.25. Design Queries Before Running Tools
190 
191Do not send the raw user prompt to every provider. Generate a source-specific query plan first:
192 
193```bash
194for dir in \
195 "$PWD/.skills/deepline-research" \
196 "$HOME/.claude/skills/deepline-research" \
197 "$HOME/.agents/skills/deepline-research"; do
198 [ -f "$dir/scripts/query_design.py" ] && SKILL_ROOT="$dir" && break
199done
200[ -n "${SKILL_ROOT:-}" ] || { echo "Could not find deepline-research skill root" >&2; exit 1; }
201python3 "$SKILL_ROOT/scripts/query_design.py" "$OBJECTIVE" --depth default
202```
203 
204Use the plan to decide:
205 
206- query type and source tiers
207- cleaned core subject
208- Reddit global/review/problem variants
209- X literal keyword, compound-term, shorter-keyword, and strongest-token fallbacks
210- video/transcript and caption queries
211- web, dataset, and GitHub discovery queries
212- CRM, warehouse, workflow, support, and custom-language private queries
213- supplemental keys to extract after phase-one retrieval
214 
215For production Deepline implementation, port this helper to the runtime language or call equivalent logic before `deepline tools execute` or a Play.
216 
217### 4.5. Required Coverage Gate
218 
219Before recommending a plan, check every required source family in `references/source-map.md`:
220 
221- community/social discussion
222- custom language and messaging evidence
223- web/news/search and URL extraction
224- video/transcript sources
225- prediction/market/community ranking sources
226- dataset-discovery leads from social/community results
227- company/account datasets
228- person/contact datasets
229- jobs/hiring/technographic/funding signals
230- CRM/private datasets
231- warehouse/product/workflow datasets
232 
233For each family, mark one of:
234 
235- `native`: a Deepline tool/play exists and can be described
236- `generic route`: use a web-search, page-extraction or general scraping tool, or `deeplineagent`
237- `private connector`: use CRM, warehouse, workflow, or customer dataset access
238- `gap`: provider/action should be added before Deepline can replicate that part well
239 
240Do not skip a family just because it is inconvenient. Missing coverage is part of the pre-research output.
241 
242### 4.55. Artifact Resolution Gate
243 
244Before writing the report, verify every materializable public dataset has been resolved from a _family_ to an _artifact_. For each recommended public dataset/registry, confirm you can fill this row from something you actually searched or fetched this session:
245 
246| Dataset | Exact file/endpoint | Canonical URL | Easier mirror | OSS parser/repo | Vertical stat registry (NAICS/QCEW/CBP) |
247| ------- | ------------------- | ------------- | ------------- | --------------- | --------------------------------------- |
248 
249Rules:
250 
251- A cell you filled from memory instead of a live result is not verified. Search for it.
252- `n/a` is allowed only when the artifact genuinely does not exist (e.g. no public bulk file, no known parser) — and you must have searched to establish that, not assumed it.
253- If the user's ask contains "dataset", "github", "repo", "download", "the file", "the data", or a request to hand something over, this gate is the primary deliverable, not an appendix: lead the report with the resolved artifacts.
254- The government statistical registry column (BLS QCEW + NAICS, Census County Business Patterns) is required for any US industry vertical — it is free establishment-count and sizing data that public-source fanout consistently leaves on the table.
255 
256A report that names "the SEC ADV bulk feed" fails this gate; a report that names `IA_FIRM_SEC_Feed_YYYY_MM_DD.xml.gz` at its sec.gov URL, notes the data.gov mirror, and links an existing ADV parser repo passes it.
257 
258When you cite a parser/repo alongside a dataset, name the **exact input file that repo actually consumes** — check its README. A vertical often has multiple real distributions (e.g. SEC publishes both the `IA_FIRM_SEC_Feed_*.xml.gz` bulk feed and the `ia<MMDDYY>.zip` IAPD compilation); pairing a parser with the wrong-but-real file is a precision error, not a fabrication, but it still breaks the handoff. Match the parser to its file.
259 
260### 4.6. Fanout And Consolidation Gate
261 
262For `last30days` parity, preserve the public-source fanout mechanics described in `references/fanout-consolidation.md`:
263 
264- broad parallel search before synthesis
265- supplemental searches from discovered handles, subreddits, domains, datasets, CRM ids, account lists, workflow ids, and persona language
266- common evidence rows before scoring
267- relevance, recency, engagement, source-quality, materializability, private-outcome, join-confidence, custom-language, and cost/coverage scoring
268- URL/source-id/text dedupe plus company/person/dataset identity joins
269- coverage nudges for searched, weak, errored, missing-credential, unavailable, and not-relevant sources
270 
271If implementation coverage is being audited, run the local evaluator:
272 
273```bash
274for dir in \
275 "$PWD/.skills/deepline-research" \
276 "$HOME/.claude/skills/deepline-research" \
277 "$HOME/.agents/skills/deepline-research"; do
278 [ -f "$dir/scripts/evaluate_examples.py" ] && SKILL_ROOT="$dir" && break
279done
280[ -n "${SKILL_ROOT:-}" ] || { echo "Could not find deepline-research skill root" >&2; exit 1; }
281python3 "$SKILL_ROOT/scripts/evaluate_examples.py"
282```
283 
284Use `evals/side-by-side.md` to compare saved `last30days` examples against this skill's coverage contract.
285 
286For standalone eval harness runs, write reports into the harness output directory:
287 
288```bash
289python3 "$SKILL_ROOT/scripts/evaluate_examples.py" \
290 --out-md "${OUTPUT_DIR:-$SKILL_ROOT/evals}/side_by_side_pre_research.md" \
291 --out-json "${OUTPUT_DIR:-$SKILL_ROOT/evals}/side_by_side_pre_research.json"
292python3 "$SKILL_ROOT/scripts/evaluate_public_private_corpus.py" \
293 --out-md "${OUTPUT_DIR:-$SKILL_ROOT/evals}/public_private_corpus_results.md" \
294 --out-json "${OUTPUT_DIR:-$SKILL_ROOT/evals}/public_private_corpus_results.json"
295```
296 
297### 5. Describe Before Pricing Or Execution
298 
299For every candidate, inspect the live contract:
300 
301```bash
302deepline tools describe <tool-id>
303```
304 
305Record:
306 
307- input fields and required identifiers
308- output evidence fields and citations
309- pricing summary, billing basis, and whether BYOK changes Deepline credit cost
310- rate limits, async behavior, and sample payloads
311- extraction quality risks and identity-matching requirements
312 
313If a source family is not present in Deepline, mark it as a provider gap and propose the integration path.
314 
315### 6. Probe Coverage When Useful
316 
317Use free/low-cost probes first. For paid probes, ask before running unless the user already approved a specific pilot budget.
318 
319Good probe shapes:
320 
321- one entity, one query, or one row
322- `limit: 1` or `numResults: 3`
323- one source per probe so coverage and cost are attributable
324- saved raw output path or run id for later workflow design
325 
326At scale, use a Deepline Play rather than ad hoc loops so the run and persisted results remain inspectable.
327 
328### 7. Return A Last30days-Style GTM Research Report
329 
330Use the same output discipline as `last30days` agent mode. The report should feel like a real research result, not a bespoke segment-analysis template or provider catalog.
331 
332```markdown
333## Research Report: <topic>
334 
335Generated: <date> | Sources: Reddit, X, YouTube, TikTok, Instagram, HN, Web, Public registries, Deepline catalog
336 
337### Key Findings
338 
339- <3-5 highest-signal findings grounded in public/source evidence>
340 
341### What I learned
342 
343**<Theme 1>** - <1-2 sentences about the segment, source, buyer language, or dataset reality. Cite sparingly using source names, handles, communities, registries, or domains.>
344 
345**<Theme 2>** - <1-2 sentences.>
346 
347**<Theme 3>** - <1-2 sentences.>
348 
349KEY PATTERNS from the research:
350 
3511. <Pattern, source family, and why it matters for GTM>
3522. <Pattern, source family, and why it matters for GTM>
3533. <Pattern, source family, and why it matters for GTM>
354 
355### GTM Data Sources Found
356 
357| Source family | Best source / route | Status | Rows / join keys | Caveat |
358| ------------- | ------------------- | ------ | ---------------- | ------ |
359 
360### Materializable Datasets (exact artifacts)
361 
362| Dataset | Exact file/endpoint | URL | Mirror | OSS parser/repo | Stat registry (NAICS/QCEW/CBP) |
363| ------- | ------------------- | --- | ------ | --------------- | ------------------------------ |
364 
365<!-- One row per public dataset you can turn into rows. No "family" placeholders — exact filename, canonical URL, mirror, and an existing parser repo where one exists. This table is the answer when the ask is "give me the dataset/github". -->
366 
367### Market Language
368 
369| Source | What to extract | How to use it | Guardrail |
370| ------ | --------------- | ------------- | --------- |
371 
372### Proprietary Data To Join Later
373 
374| Dataset | Owner / connector | Join key | Why it changes the answer |
375| ------- | ----------------- | -------- | ------------------------- |
376 
377### Deepline Route
378 
379| Public source family | Route status | Deepline route | Probe needed | Cost basis |
380| -------------------- | ------------ | -------------- | ------------ | ---------- |
381 
382### Gaps To Add
383 
384| Missing source | Why it matters | Suggested provider/integration | Required fields |
385| -------------- | -------------- | ------------------------------ | --------------- |
386 
387### Recommended Workflow
388 
3891. <first retrieval/probe>
3902. <second retrieval/probe>
3913. <synthesis/scoring/join step>
392 
393### Stats
394 
395---
396 
397✅ All agents reported back!
398├─ <source family>: <count / coverage / engagement when available>
399├─ <source family>: <count / coverage / engagement when available>
400├─ 🌐 Web/Public data: <pages, registries, directories, datasets>
401└─ 🗣️ Top sources: <handles, communities, registries, domains, datasets>
402 
403---
404 
405### Cost Estimate
406 
407- Pilot: <credits or range>
408- Full run: <credits or range and assumptions>
409- Unknowns: <what must be described/probed before quoting>
410```
411 
412For `--agent`-style or non-interactive use, stop after the report. For interactive use, end with a short, specific invitation based on the actual findings, mirroring `last30days`:
413 
414```markdown
415---
416 
417I'm now an expert on <topic>. Some things I can help with:
418 
419- <specific follow-up grounded in the findings>
420- <specific workflow/probe to run next>
421- <specific segment or source to go deeper on>
422```
423 
424If the user wants execution, hand off to `deepline-gtm` after this output.
425 
426Match `last30days` cleanup rules:
427 
428- Omit any source line that returned zero results. Do not show "0 results", "0 stories", or "no results".
429- Do not append a separate trailing "Sources used" section.
430- Do not paste raw URLs or Markdown source links in the report body or stats. Use clean source names inline, such as `NPI Registry`, `Google Maps`, `r/SaaS`, `G2`, `Meta docs`, or `Hike Medical site`.
431- Citations should prove the research is real without turning the report into a bibliography. Prefer handles, communities, source names, registries, domains, and doc names.
432- Use the `last30days` stats block style exactly: start with `✅ All agents reported back!`, use `├─`, `└─`, and `│` separators where useful, and include source emojis when they clarify the source family.
433- Keep the Deepline route and cost after the research synthesis, never before it.
434 
435## Approval Gate
436 
437Before any full paid run, include:
438 
439- providers/tools
440- pilot result or reason a pilot is not possible
441- full-run scope
442- Deepline credit estimate/range
443- max spend cap
444- exact approval question
445 
446If the user approves, execute through a Deepline Play or a targeted `deepline tools execute` call as appropriate.
447 
448## Finish Criteria
449 
450The task is done only when the user has:
451 
452- a ranked data-source map
453- a `last30days`-style GTM research synthesis grounded in public sources
454- **every materializable dataset resolved to an exact artifact** (file/endpoint name + canonical URL + mirror + OSS parser + vertical NAICS/QCEW), verified via live search this session — not named from memory (see §4.55)
455- live tool ids or explicit provider gaps
456- a Deepline-facing cost estimate
457- the recommended first workflow/play shape
458- any blockers for credentials, private-data access, or missing provider support
459 

Discussion

Alternatives

⚡ NEXUS Quick-Start Guide> Get from zero to orchestrated multi-agent pipeline in 5 minutes.Business & ops · MITclean-cut — the step-1 cut pipelineStep 1 of the AI Video Editor pipeline — turn raw talking-head footage into a clean master cut. Use when the user wants to "clean cut", "cut the raw footage", "remove filler / dead air / bad takes", "tighten the pacing", produce cuts.json, run the cut editor, or render a cleaned preview/master for a video-N project in this repo. Covers audio extraction, AssemblyAI transcription, authoring cuts.json (keeps/cuts/fluff categorized), the cut policy (content-aggressive, pause-natural ~0.5s), QA + review docs, the local cut-editor UI, tight/natural previews, the final 4K60 render, and producing edited-transcript.json as the handoff to /make-tsx. Not for building TSX overlays (that is /make-tsx) or the raw TSX authoring rules (that is vidtsx-2d-generator).Sales & ecommerce · MITVocaloid-style MV pipeline (手書き / 文字PV)Make an original animated music video (MV / PV) for a song from its audio file plus lyrics, in the Vocaloid / J-pop lyric-video tradition: 手書き/tegaki (V家手书, 手描きMV, ボカロPV), 文字PV and kinetic typography (リリックモーション, リリックビデオ, 歌詞動画, 歌词视频, 动态歌词), anime-illustration MVs with an original character — for any mood, from dark ballads to bright upbeat summer pop. Renders to MP4 with a deterministic Canvas2D/WebGL2 engine in a headless browser: JIZURA lyric motion, AI-generated art, optional Blender toon 3D, beat-locked editing, 9:16 vertical/Shorts version. Use it whenever the user wants a music video, MV, PV, lyric video or beat-synced animation for a song, e.g. make an MV for my song", "turn this track into a lyric video", "给这首歌做个MV/PV", "做个V家手书", "この曲のMVを作って", ボカロPV作って", "縦型ショートも" — even if they only give a .wav/.mp3 and say "make a cool video for it". Not for editing existing footage or clip compilations.Sales & ecommerce · MITConstruction Agent — Email → Project Management PipelineConstruction company AI agent — orchestrates email (Google Workspace), project management (JobTread Pave API), and file routing for a construction business. Handles email triage, attachment routing to JobTread, project status, task management, and daily briefings via Telegram. Reference implementation for a construction/trades business with an existing email→Drive→PM pipeline.Sales & ecommerce · MIT