Skip to main content
Map what exists today — rivals + real products, each gap backed by a real complaint. With a demand report in hand, one call maps the full supply side: the products people use today, what each does well, the gap you can exploit, and — for the shipped ones — their traction. Every gap traces back to an actual complaint someone posted, and every competitor is tagged with the demand clusters it competes for, so you can see which of your wedges/segments a rival actually threatens.
You get back a Landscape: the nested competitor_map (the real products people use today — each with what it does well, a gap you can exploit, and the clusters it addresses) plus existing_solutions (real shipped products from Product Hunt / the web, with traction, matched to your demand clusters). It always includes the “do nothing” status-quo option, because the cost of people sticking with their current habit is the real thing any new product has to beat.
Competitor names come from two grounded sources: a live web search AND the corpus itself (tools people literally name in their complaints). A name you can’t ground in either is dropped — no hallucinated rivals.

What you get back

metalworks only lists rivals it can ground — a name with no web result and no corpus mention is dropped — and only keeps a gap when a real complaint backs it: every gap links to one verbatim quote or a grounded web source. A gap nobody voiced gets dropped.

Per-fork saturation (advisory)

Because every competitor and product is cluster-tagged, assess can show how crowded each fork is on its own: your indie-DX wedge might face Supabase/Neon while your enterprise wedge faces RDS/Aurora. Each ForkVerdict carries its own landscape_saturation, so a GO/NO-GO per fork shows whether that slice is open or crowded. (This per-fork saturation is advisory today — the GO/NO-GO gate itself still uses the space-level number; the gate goes per-fork in a follow-up once the attribution is proven stable.)

When the result is thin

If metalworks can’t confidently ground the named competitors, it still ships the “do nothing” alternative (always grounded in your report’s strongest pains) and the existing-solutions scan, flagging the rest with partial=True and a caveat that the named set is unverified. You’re never handed a confident-looking map built on invented rivals. The existing-solutions scan needs a Product Hunt token; without one, that half is empty and the competitor map still holds.

Next

You know the landscape. Decide whether it’s worth building with the validation loop, or move to what to build: → Validation loop · Build spec · why you can trust the output