Building GitHub, npm, Hacker News, and crates.io search — measuring real reuse, real cost reduction, and what the 5th engine costs.
Each new search engine built on top of an existing store is 60–80% cheaper than starting fresh. The 4th engine took 5.4 s end-to-end — stage add + compose + execute — with zero new compositions and zero LLM calls. At N=10 engines, the cumulative savings vs. traditional development are estimated at $1,100+ for a senior dev and 8–12 hours of engineering time.
Green-highlighted output fields are shared across 2+ engines. All 4 share url; GitHub + npm + Crates share name, description, url.
After the first LLM-synthesized stage, all subsequent engines required 0 LLM calls — only human-authored stage add. Each compose call uses 1 LLM call (~400 tokens, ≈$0.02) to match against the store.
Grey = stdlib (50 hardened stages). Green = custom. Each engine adds exactly 1 stage to the store.
Of the 10 non-stdlib stages, 3 are the search engines we just built. The other 7 are legacy synthesized stages from prior sessions (effect inference, etc.).
Cost = (human time × $75/hr rate) + (LLM tokens × mistral-small-2503 price ~$0.05/1K calls). Traditional estimate = 2 hrs/engine × $75/hr. Total savings at N=10: ~$1,471 (98% reduction).
All 4 search engines share the same input pattern:
Record { query: Text, limit: Number }
A 5th engine (e.g. Packagist / Docker Hub / Maven Central) requires zero new input stages.
The composition agent already knows how to resolve it from the store.
def execute(input_value):
import urllib.request, urllib.parse, json
q = input_value['query']
n = int(input_value['limit'])
url = 'https://NEW-API/search?' + \
urllib.parse.urlencode({'q':q,'n':n})
with urllib.request.urlopen(url) as r:
data = json.loads(r.read().decode())
return [{'name': x['name'],
'url': x['url'],
...} for x in data['items']]