Skip to Content

Discovery & harvest

Some inputs can’t be computed deterministically — figuring out a mesh’s shape, or which terms belong in a glossary, takes open-ended research. GoToMesh has two bootstrap mechanisms for exactly this. Both run outside the deterministic engine and hand it committed, human-reviewed files.

What it is

  • Project discovery establishes the mesh shape. You run gtmesh discover in an empty directory; it installs the discovery skill and prints a prompt. The skill interviews you, pulls demand signals, and writes gtmesh-discovery.yaml — the site type (kind), sections, clusters, the page types it needs, harvest classes, and clustered starter terms. gtmesh init --from-discovery then scaffolds a tailored mesh from it.
  • Entity-class harvest fills the terms of a class. You run gtmesh harvest <class>; it validates the class and prints a prompt. The harvest skill brainstorms candidates per taxonomy family, ranks them against a demand corpus, validates demand via the keyword provider, scores the cut, and writes seeds/<class>.csv — then stops for your review.

Both gtmesh discover and gtmesh harvest are LLM-free CLI bridges: they install a skill and hand you a prompt. The open-ended research happens in the skill, in Claude Code — never in the deterministic CLI.

Why it matters

This is one of the load-bearing invariants: discovery is import, not plan. The networked, model-driven research is firewalled off from the engine. The engine only ever consumes the lean, predictable files these mechanisms emit — so the deterministic loop stays deterministic, and the one place judgement enters is a file you review and commit.

Each is human-gated by design. You edit gtmesh-discovery.yaml before scaffolding; you curate seeds/<class>.csv before cataloguing. Curation is the point, not a chore the tool skips.

How it works

Project discoveryEntity-class harvest
Commandgtmesh discovergtmesh harvest <class>
Skilldiscoveryharvest
Readsyour interview answers; live demandthe class’s discovery: config + demand corpus
Writesgtmesh-discovery.yamlseeds/<class>.csv (terms + provenance)
Consumed bygtmesh init --from-discoverygtmesh plan
Human gatereview the file before initreview the term list before apply

A seed file carries term plus optional provenance (target_keyword, family, section, page_type, source, funnel, …) and never metrics — volume and difficulty live in the data bag (data/raw/) and refresh on cadence via gtmesh extract --source seeds. Each class with seeds must also be a discovery: class in gtmesh.config.yaml, or plan won’t load its term list.

Key files & flags

ThingWhat it is
gtmesh discover "<description>"Install the discovery skill, print the prompt
gtmesh init --from-discovery <file>Scaffold tailored from gtmesh-discovery.yaml
gtmesh harvest [class]List classes, or print a class’s harvest prompt
gtmesh.config.yaml discovery:Per-class harvest config (taxonomy / demand_sources / validation / output)
seeds/<class>.csvThe committed, human-reviewed term list
Last updated on