diff --git a/README.md b/README.md index bafb3b7..9861d57 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,16 @@ Details: [PAYPAL_STATUS.md](PAYPAL_STATUS.md). The exact code that made the five Full dependency map with revisions and licenses: [docs/DEPENDENCY_MAP.md](docs/DEPENDENCY_MAP.md). +### Industrial Sourcing (preview) + +The header button **Industrial Sourcing** opens a read-only panel that applies the same approach to manufactured parts: + +- buyer requests are grouped only when the specification digest, revision, process and material match exactly; +- four routes are compared: direct purchase, single additive build, split supply and collective procurement; +- the result is a Federation **proposal** (not an admitted contract), an evidence passport and an **unsent** draft RFQ. + +It ships three synthetic scenarios (coalition chosen at $2,300 vs $3,850 direct; direct chosen when it costs $2,000; a revision mismatch that leaves 80 of the required 100 units and is held). Supplier entries are 87 public discovery links, not quotations. Engineering verification stays unproven until an independent ZTL Engineering receipt is supplied. No supplier is contacted and no payment is made. Details: [docs/INDUSTRIAL_SOURCING.md](docs/INDUSTRIAL_SOURCING.md). + ## 6. Installation and use **A. Explore the recorded runs.** Any OS, Python 3.11+, no credentials. diff --git a/deal_rescue/industrial/__init__.py b/deal_rescue/industrial/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/deal_rescue/industrial/core.py b/deal_rescue/industrial/core.py new file mode 100644 index 0000000..79145f0 --- /dev/null +++ b/deal_rescue/industrial/core.py @@ -0,0 +1,266 @@ +"""LEGION Industrial: read-only sourcing + demand matching + proposal gate. + +A source listing is not a quote; an opted-in demo identity is not a real buyer; +a ZTL theorem for a supported model is not a certificate of physical manufacture. +No network, accounts, payments, mutations or model calls are performed here. +Python 3.11+ standard library only. All money in exact integer US cents. +""" +from __future__ import annotations + +import hashlib +import json +from collections import Counter +from datetime import date +from pathlib import Path + +T, F, Z = "T", "F", "Z" +DATA = Path(__file__).parent / "data" + + +def digest(obj): + raw = json.dumps(obj, sort_keys=True, ensure_ascii=False, separators=(",", ":"), allow_nan=False) + return hashlib.sha256(raw.encode("utf-8")).hexdigest() + + +def read_json(name): + if not name.endswith(".json") or "/" in name or "\\" in name: + raise ValueError("untrusted data name") + return json.loads((DATA / name).read_text(encoding="utf-8")) + + +def source_registry(): + records = read_json("sources.json")["records"] + seen = set() + for r in records: + if r["id"] in seen or not r["official_source"].startswith("https://"): + raise ValueError("duplicate or invalid source") + seen.add(r["id"]) + return { + "total": len(records), + "by_type": dict(sorted(Counter(r["type"] for r in records).items())), + "coverage": "DISCOVERY_SEED_ONLY_GLOBAL_COMPLETENESS_Z", + "records": [ + {"id": r["id"], "name": r["name"], "kind": r["type"], + "url": r["official_source"], "capability_claim": r["observed_capability"], + "quote_verdict": Z, "capacity_verdict": Z, "api_access_verdict": Z, + "supplier_commitment_verdict": Z} + for r in records + ], + } + + +def valid_demand(d, *, demonstration=False): + """Returns screening truth, never cryptographic owner authorization.""" + keys = ("id", "buyer_id", "spec_digest", "spec_revision", "process", "material", + "qty", "budget_cents", "due_date", "consent_scope") + missing = [k for k in keys if k not in d or d[k] in (None, "")] + if missing: + return {"verdict": Z, "why": "missing_fields", "fields": missing} + if type(d["qty"]) is not int or d["qty"] <= 0 or type(d["budget_cents"]) is not int or d["budget_cents"] < 0: + return {"verdict": F, "why": "invalid_qty_or_budget"} + if not isinstance(d["spec_digest"], str) or len(d["spec_digest"]) != 64: + return {"verdict": F, "why": "invalid_spec_digest"} + try: + date.fromisoformat(d["due_date"]) + except (ValueError, TypeError): + return {"verdict": F, "why": "invalid_date"} + if d.get("revoked") is True or d.get("consent_scope") != "coalition_discovery": + return {"verdict": F, "why": "no_current_discovery_consent"} + if d.get("source_scope") == "SYNTHETIC_TEST_ONLY": + return {"verdict": T if demonstration else Z, "why": "synthetic_opt_in_not_live_authority"} + # Never trust an input record asserting that it verified its own signature. + # The read-only demo has no independent CRM or signature verifier. + return {"verdict": Z, "why": "independent_buyer_opt_in_verifier_not_connected"} + + +def group_demand(demands, *, demonstration=False): + accepted, rejected = [], [] + seen = set() + for d in demands: + v = valid_demand(d, demonstration=demonstration) + if d.get("id") in seen or d.get("buyer_id") in seen: + rejected.append({"id": d.get("id"), "verdict": F, "why": "duplicate_buyer_or_request"}) + continue + seen.update([d.get("id"), d.get("buyer_id")]) + if v["verdict"] != T: + rejected.append({"id": d.get("id"), **v}) + else: + accepted.append(d) + groups = {} + for d in accepted: + # Equality is deliberately strict: same exact CAD/spec hash, revision, + # material and process. An LLM label may not merge distinct parts. + k = (d["spec_digest"], d["spec_revision"], d["process"], d["material"]) + groups.setdefault(k, []).append(d) + return {"groups": [ + {"spec_digest": k[0], "spec_revision": k[1], "process": k[2], + "material": k[3], "buyers": [d["buyer_id"] for d in bs], + "units": sum(d["qty"] for d in bs), "budget_cents": sum(d["budget_cents"] for d in bs), + "member_count": len(bs), "demands": bs, "test_only": demonstration} + for k, bs in groups.items()], "excluded": rejected} + + +def shortlist_sources(process, *, n=18): + registry = source_registry()["records"] + # Conservative broad discovery only. No process-specific capability is proven + # by a generic marketing page; never silently classify it as a verified shop. + candidates = [r for r in registry if r["kind"] in + ("contract_manufacturer", "manufacturing_network", "manufacturing_marketplace", "supplier_directory")] + return [{**r, "requested_process": process, "exact_process_capability": Z} for r in candidates[:n]] + + +def verify_ztl_binding(request, receipt=None, verifier=None, *, expected_verifier_pin=None): + """Truth from external independent verifier only; fields in an untrusted receipt cannot attest themselves. + + verifier is injected from an independently validated ZTL Engineering adapter. + None means Z. Test stubs must not be used in real deployments. + """ + h = digest(request) + if not receipt or verifier is None or not expected_verifier_pin: + return {"verdict": Z, "why": "ztl_independent_verifier_not_connected", "request_sha256": h} + mandatory = ("request_sha256", "model_id", "theorem_id", "engine_pin", "epoch", "verifier_pin") + if any(not receipt.get(k) for k in mandatory) or receipt["request_sha256"] != h: + return {"verdict": F, "why": "ztl_receipt_missing_or_wrong_request", "request_sha256": h} + if receipt["verifier_pin"] != expected_verifier_pin: + return {"verdict": F, "why": "unrecognized_external_verifier"} + try: + verified = verifier(request, receipt) + except Exception: + return {"verdict": Z, "why": "independent_verifier_error"} + if verified is not True: + return {"verdict": F if verified is False else Z, + "why": "independent_verifier_rejected_or_unknown"} + return {"verdict": T, "why": "externally_verified_supported_ztl_model_only", + "model_id": receipt["model_id"], "theorem_id": receipt["theorem_id"], + "engine_pin": receipt["engine_pin"], "epoch": receipt["epoch"], + "request_sha256": h} + + +def evaluate_quote(q, group, *, demonstration): + """Fixture quote T is *comparative fixture arithmetic*, never a genuine offer.""" + for k in ("route", "spec_digest", "spec_revision", "process", "material", "capacity_units", + "moq_units", "landed_cents", "due_date", "source_scope"): + if k not in q: + return {"verdict": Z, "why": f"quote_missing_{k}"} + if (q["spec_digest"], q["spec_revision"], q["process"], q["material"]) != ( + group["spec_digest"], group["spec_revision"], group["process"], group["material"]): + return {"verdict": F, "why": "quote_scope_mismatch"} + if (type(q["capacity_units"]) is not int or type(q["moq_units"]) is not int or + type(q["landed_cents"]) is not int or q["landed_cents"] < 0): + return {"verdict": F, "why": "invalid_quote_amount_or_capacity"} + if q["moq_units"] > group["units"] or q["capacity_units"] < group["units"]: + return {"verdict": F, "why": "moq_or_capacity_failure"} + if q["due_date"] > min(x["due_date"] for x in group["demands"]): + return {"verdict": F, "why": "late_delivery"} + if q["source_scope"] == "SYNTHETIC_TEST_ONLY": + return {"verdict": T if demonstration else Z, "why": "simulated_quote_comparison_only"} + # External signature verification, supplier identity and fresh capacity + # must be witnessed by an independent adapter (not installed here). + return {"verdict": Z, "why": "external_supplier_quote_verifier_not_connected"} + + +def choose_route(group, offers, *, demonstration=False): + quotes = [] + denied = [] + for q in offers: + v = evaluate_quote(q, group, demonstration=demonstration) + if v["verdict"] == T: + quotes.append(q) + else: + denied.append({"route": q.get("route"), **v}) + quotes.sort(key=lambda q: (q["landed_cents"], q["route"])) + best = quotes[0] if quotes else None + # Allocation: integer cents; distribute remainder deterministically. + allocation = [] + if best: + total_units = group["units"] + base = 0 + for i, d in enumerate(group["demands"]): + val = best["landed_cents"] * d["qty"] // total_units + allocation.append({"buyer_id": d["buyer_id"], "qty": d["qty"], + "allocated_cents": val, "cap_cents": d["budget_cents"]}) + base += val + # Distinct buyers may have unequal quantities; distribute fractional-cent + # remainder by buyer ID and ensure each individual cap is rechecked. + remainder = best["landed_cents"] - base + for row in sorted(allocation, key=lambda x: x["buyer_id"])[:remainder]: + row["allocated_cents"] += 1 + if any(x["allocated_cents"] > x["cap_cents"] for x in allocation): + denied.append({"route": best["route"], "verdict": F, "why": "buyer_individual_budget_exceeded"}) + best = None + return {"verdict": T if best else Z, "route": best["route"] if best else None, + "landed_cents": best["landed_cents"] if best else None, + "allocation": allocation if best else [], "alternatives": [ + {"route": q["route"], "landed_cents": q["landed_cents"]} for q in quotes], + "rejected": denied, "comparison_scope": "SYNTHETIC_TEST_ONLY" if demonstration else "SUPPLIER_VERIFIED", + "coalition_needed": bool(best and best["route"] == "COALITION")} + + +def run_case(case_id): + cases = read_json("cases.json") + if case_id not in cases: + raise ValueError("unknown case") + case = cases[case_id] + demo = case.get("test_scope") == "SYNTHETIC_TEST_ONLY" + gathered = group_demand(case["demands"], demonstration=demo) + group = gathered["groups"][0] if gathered["groups"] else None + if group: + decision = choose_route(group, case["offers"], demonstration=demo) + eng_request = {"spec_digest": group["spec_digest"], "spec_revision": group["spec_revision"], + "process": group["process"], "material": group["material"], + "obligation": "engineering_suitability_for_manufacture"} + eng = verify_ztl_binding(eng_request) + shortlist = shortlist_sources(group["process"]) + else: + decision = {"verdict": Z, "route": None, "why": "no_permissioned_compatible_demand"} + eng = {"verdict": Z, "why": "no_valid_spec_to_verify"} + shortlist = [] + # Even an attractive numerical candidate is not an admitted contract. + gates = {"demand_discovery": T if group else Z, + "route_comparison": decision["verdict"], + "ztl_engineering": eng["verdict"], + "cad_dfm": Z, "real_supplier_quote": Z if demo else decision["verdict"], + "buyer_signatures": Z, "seller_commitment": Z, + "federation_admission": Z, "paypal_authority": Z, + "provider_readback": Z} + proposal = { + "schema": "legion.industrial.federation-proposal.v1", + "contract_proposal_hash": digest({"case":case_id,"group":group["spec_digest"] if group else None, + "decision":decision.get("route")}), + "source_case": case_id, "epoch": 0, "proposed_route": decision.get("route"), + "buyer_ids": group["buyers"] if group else [], + "source_scope": "SYNTHETIC_TEST_ONLY" if demo else "REAL_RECORDS", + "reliance": "NOT_ADMITTED_TO_EXISTING_FEDERATION", + "external_effects": 0, "paypal_captures_on_this_new_contract": 0, + } + return {"case_id": case_id, "title": case["title"], "test_scope": case["test_scope"], + "source_registry_count": source_registry()["total"], "candidate_suppliers": shortlist, + "demand": {"group": {k:v for k,v in (group or {}).items() if k != "demands"}, + "excluded": gathered["excluded"]}, + "route_decision": decision, "engineering": eng, "gates": gates, + "federation_proposal": proposal, + "outcome": "SYNTHETIC_ROUTE_CHOSEN_NOT_ADMITTED" if decision.get("route") and demo + else "HOLD_MISSING_EVIDENCE", + "claim": "No real customer orders, provider quotations, manufacturing, or new PayPal payments.", + "passport_sha256": digest({"proposal":proposal,"gates":gates,"decision":decision})} + + +def cases_index(): + return [{"id": k, "title": v["title"], "scope": v["test_scope"]} for k,v in read_json("cases.json").items()] + + +def supplier_rfq(case_id): + case = read_json("cases.json")[case_id] + group = group_demand(case["demands"], demonstration=True)["groups"] + if not group: + return "NO VALID DISCOVERY-CONSENTED GROUP — NOTHING TO SEND\n" + g = group[0] + return ("REQUEST FOR BUDGETARY QUOTE — NOT SENT / NO CONTRACT / NO PURCHASE\n" + f"Reference: {case_id}\nSpec revision: {g['spec_revision']}\n" + f"Specification digest: sha256:{g['spec_digest']}\n" + f"Process: {g['process']} | material: {g['material']} | quantity: {g['units']}\n" + f"Latest delivery: {min(d['due_date'] for d in g['demands'])}\n" + "Please specify actual CAD/DFM feasibility, all-in cost, MOQ, capacity, earliest ship date," + " applicable certifications, payment terms, quote expiry, and technical exceptions.\n" + "No private CAD file or buyer contact is disclosed. Buyer identities and requirements" + " are synthetic fixtures. No order is authorized.\n") diff --git a/deal_rescue/industrial/data/cases.json b/deal_rescue/industrial/data/cases.json new file mode 100644 index 0000000..59cf922 --- /dev/null +++ b/deal_rescue/industrial/data/cases.json @@ -0,0 +1,392 @@ +{ + "coalition": { + "title": "Five independently opted-in (synthetic) industrial orders: collective SLS procurement vs direct/AM/split", + "test_scope": "SYNTHETIC_TEST_ONLY", + "demands": [ + { + "id": "demo-lost-quote-1", + "buyer_id": "DEMO-BUYER-1", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + }, + { + "id": "demo-lost-quote-2", + "buyer_id": "DEMO-BUYER-2", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + }, + { + "id": "demo-lost-quote-3", + "buyer_id": "DEMO-BUYER-3", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + }, + { + "id": "demo-lost-quote-4", + "buyer_id": "DEMO-BUYER-4", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + }, + { + "id": "demo-lost-quote-5", + "buyer_id": "DEMO-BUYER-5", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + } + ], + "offers": [ + { + "route": "DIRECT", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "capacity_units": 120, + "moq_units": 1, + "landed_cents": 385000, + "due_date": "2026-12-05", + "source_scope": "SYNTHETIC_TEST_ONLY", + "provider": "DEMO-SUPPLIER-NOT-REAL" + }, + { + "route": "ADDITIVE_SINGLE", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "capacity_units": 120, + "moq_units": 1, + "landed_cents": 410000, + "due_date": "2026-12-05", + "source_scope": "SYNTHETIC_TEST_ONLY", + "provider": "DEMO-SUPPLIER-NOT-REAL" + }, + { + "route": "SPLIT_SUPPLY", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "capacity_units": 120, + "moq_units": 1, + "landed_cents": 340000, + "due_date": "2026-12-05", + "source_scope": "SYNTHETIC_TEST_ONLY", + "provider": "DEMO-SUPPLIER-NOT-REAL" + }, + { + "route": "COALITION", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "capacity_units": 120, + "moq_units": 100, + "landed_cents": 230000, + "due_date": "2026-12-05", + "source_scope": "SYNTHETIC_TEST_ONLY", + "provider": "DEMO-SUPPLIER-NOT-REAL" + } + ] + }, + "direct": { + "title": "Same demand, direct procurement objectively beats coalition", + "test_scope": "SYNTHETIC_TEST_ONLY", + "demands": [ + { + "id": "demo-lost-quote-1", + "buyer_id": "DEMO-BUYER-1", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + }, + { + "id": "demo-lost-quote-2", + "buyer_id": "DEMO-BUYER-2", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + }, + { + "id": "demo-lost-quote-3", + "buyer_id": "DEMO-BUYER-3", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + }, + { + "id": "demo-lost-quote-4", + "buyer_id": "DEMO-BUYER-4", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + }, + { + "id": "demo-lost-quote-5", + "buyer_id": "DEMO-BUYER-5", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + } + ], + "offers": [ + { + "route": "DIRECT", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "capacity_units": 120, + "moq_units": 1, + "landed_cents": 200000, + "due_date": "2026-12-05", + "source_scope": "SYNTHETIC_TEST_ONLY", + "provider": "DEMO-SUPPLIER-NOT-REAL" + }, + { + "route": "ADDITIVE_SINGLE", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "capacity_units": 120, + "moq_units": 1, + "landed_cents": 410000, + "due_date": "2026-12-05", + "source_scope": "SYNTHETIC_TEST_ONLY", + "provider": "DEMO-SUPPLIER-NOT-REAL" + }, + { + "route": "SPLIT_SUPPLY", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "capacity_units": 120, + "moq_units": 1, + "landed_cents": 340000, + "due_date": "2026-12-05", + "source_scope": "SYNTHETIC_TEST_ONLY", + "provider": "DEMO-SUPPLIER-NOT-REAL" + }, + { + "route": "COALITION", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "capacity_units": 120, + "moq_units": 100, + "landed_cents": 230000, + "due_date": "2026-12-05", + "source_scope": "SYNTHETIC_TEST_ONLY", + "provider": "DEMO-SUPPLIER-NOT-REAL" + } + ] + }, + "mismatch": { + "title": "One buyer requires a different technical revision: no superficial grouping", + "test_scope": "SYNTHETIC_TEST_ONLY", + "demands": [ + { + "id": "demo-lost-quote-1", + "buyer_id": "DEMO-BUYER-1", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + }, + { + "id": "demo-lost-quote-2", + "buyer_id": "DEMO-BUYER-2", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + }, + { + "id": "demo-lost-quote-3", + "buyer_id": "DEMO-BUYER-3", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + }, + { + "id": "demo-lost-quote-4", + "buyer_id": "DEMO-BUYER-4", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + }, + { + "id": "demo-lost-quote-5", + "buyer_id": "DEMO-BUYER-5", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-D", + "process": "SLS", + "material": "PA12", + "qty": 20, + "budget_cents": 78000, + "due_date": "2026-12-10", + "consent_scope": "coalition_discovery", + "source_scope": "SYNTHETIC_TEST_ONLY", + "revoked": false + } + ], + "offers": [ + { + "route": "DIRECT", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "capacity_units": 120, + "moq_units": 1, + "landed_cents": 385000, + "due_date": "2026-12-05", + "source_scope": "SYNTHETIC_TEST_ONLY", + "provider": "DEMO-SUPPLIER-NOT-REAL" + }, + { + "route": "ADDITIVE_SINGLE", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "capacity_units": 120, + "moq_units": 1, + "landed_cents": 410000, + "due_date": "2026-12-05", + "source_scope": "SYNTHETIC_TEST_ONLY", + "provider": "DEMO-SUPPLIER-NOT-REAL" + }, + { + "route": "SPLIT_SUPPLY", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "capacity_units": 120, + "moq_units": 1, + "landed_cents": 340000, + "due_date": "2026-12-05", + "source_scope": "SYNTHETIC_TEST_ONLY", + "provider": "DEMO-SUPPLIER-NOT-REAL" + }, + { + "route": "COALITION", + "spec_digest": "45fb81e09beb1bff53d8519b84cdbed21291af89a197a41f760471fd54248182", + "spec_revision": "REV-C", + "process": "SLS", + "material": "PA12", + "capacity_units": 120, + "moq_units": 100, + "landed_cents": 230000, + "due_date": "2026-12-05", + "source_scope": "SYNTHETIC_TEST_ONLY", + "provider": "DEMO-SUPPLIER-NOT-REAL" + } + ] + } +} diff --git a/deal_rescue/industrial/data/sources.json b/deal_rescue/industrial/data/sources.json new file mode 100644 index 0000000..f060be5 --- /dev/null +++ b/deal_rescue/industrial/data/sources.json @@ -0,0 +1,1119 @@ +{ + "created": "2026-11-10", + "registry_status": "36 directly researched seed entrypoints + 48 names indexed from HP directory (includes 3 aliases) + 3 additional official sources; not exhaustive and no qualified suppliers or quotes", + "records": [ + { + "id": "P001", + "name": "Xometry", + "type": "manufacturing_marketplace", + "official_source": "https://www.xometry.com/capabilities/3d-printing-service/", + "observed_capability": "3D printing, CNC; immediate quotes; provider match", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P002", + "name": "Protolabs", + "type": "contract_manufacturer", + "official_source": "https://www.protolabs.com/services/3d-printing/", + "observed_capability": "Certified 3D printing including metal", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P003", + "name": "Protolabs Network (formerly Hubs)", + "type": "manufacturing_network", + "official_source": "https://www.hubs.com/3d-printing/", + "observed_capability": "Network of 3D print shops; distinct brand within Protolabs", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P004", + "name": "Craftcloud", + "type": "manufacturing_marketplace", + "official_source": "https://craftcloud3d.com/", + "observed_capability": "Global multi-provider price comparison", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P005", + "name": "Treatstock", + "type": "manufacturing_marketplace", + "official_source": "https://www.treatstock.com/", + "observed_capability": "Independent manufacturers, quotes and buyer protection", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P006", + "name": "PROTIQ", + "type": "manufacturing_marketplace", + "official_source": "https://www.protiq.com/en/how-protiq-works/", + "observed_capability": "More than 40 manufacturing providers according to provider", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P007", + "name": "MakerVerse", + "type": "manufacturing_network", + "official_source": "https://www.makerverse.com/", + "observed_capability": "Managed industrial manufacturing and quality", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P008", + "name": "Beamler", + "type": "manufacturing_network", + "official_source": "https://www.beamler.com/", + "observed_capability": "Global production partners, including specialty materials", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P009", + "name": "3dfabs", + "type": "manufacturing_marketplace", + "official_source": "https://3dfabs.org/", + "observed_capability": "Open requests and manufacturer matching", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P010", + "name": "Sculpteo", + "type": "contract_manufacturer", + "official_source": "https://www.sculpteo.com/en/", + "observed_capability": "Polymer and metal 3D printing", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "T_API_DOCUMENTED_ACCESS_BY_REQUEST", + "authorized_access": "Z", + "api_source": "https://www.sculpteo.com/en/services/api-services/" + }, + { + "id": "P011", + "name": "Materialise OnSite", + "type": "contract_manufacturer", + "official_source": "https://www.materialise.com/en/industrial/3d-printing-services/online-3d-printing", + "observed_capability": "Online quoting; verify production-grade requirements separately", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P012", + "name": "Fictiv", + "type": "manufacturing_network", + "official_source": "https://www.fictiv.com/help/getting-a-quote/how-long-does-it-take-to-get-a-quote", + "observed_capability": "CAD upload; 3D printing quotes; manual DFM for special features", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P013", + "name": "Stratasys Direct", + "type": "contract_manufacturer", + "official_source": "https://www.stratasys.com/en/stratasysdirect/services/3d-printing-services", + "observed_capability": "Industrial polymer 3D printing; not metal as of official FAQ", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P014", + "name": "JLC3DP", + "type": "contract_manufacturer", + "official_source": "https://jlc3dp.com/", + "observed_capability": "Plastic and metal 3D printing, including PEEK/PEKK", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P015", + "name": "PCBWay", + "type": "contract_manufacturer", + "official_source": "https://www.pcbway.com/rapid-prototyping/", + "observed_capability": "3D printing, CNC, tooling; manual approval of special parts", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P016", + "name": "Shapeways", + "type": "contract_manufacturer", + "official_source": "https://www.shapeways.com/business/3d-printing-service", + "observed_capability": "3D print manufacturing; confirm quote availability", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P017", + "name": "Quickparts", + "type": "contract_manufacturer", + "official_source": "https://quickparts.com/3d-printing-company/", + "observed_capability": "Hybrid global manufacturing, no minimum order reported", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P018", + "name": "Weerg", + "type": "contract_manufacturer", + "official_source": "https://www.weerg.com/faq/what-does-weerg-do", + "observed_capability": "In-house MJF/FDM/MSLA and CNC", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P019", + "name": "3DPRINTUK", + "type": "contract_manufacturer", + "official_source": "https://www.3dprint-uk.co.uk/3d-printing-services/", + "observed_capability": "SLS/MJF/SAF, UK; minimum order value", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P020", + "name": "FacFox", + "type": "manufacturing_network", + "official_source": "https://facfox.com/service/3d-printing-service", + "observed_capability": "Polymer and metal AM, managed manufacturing", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P021", + "name": "JawsTec", + "type": "contract_manufacturer", + "official_source": "https://www.jawstec.com/", + "observed_capability": "3D printing and CNC, US", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P022", + "name": "RapidDirect", + "type": "manufacturing_network", + "official_source": "https://www.rapiddirect.com/ru/services/3d-printing/", + "observed_capability": "On-demand polymer and metal 3D printing", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P023", + "name": "Prototal Group", + "type": "contract_manufacturer", + "official_source": "https://prototalgroup.com/services/industrial-3d-printing/", + "observed_capability": "European industrial AM service group", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P024", + "name": "3ERP", + "type": "contract_manufacturer", + "official_source": "https://www.3erp.com/faqs/", + "observed_capability": "Metal and polymer 3D manufacturing in China", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P025", + "name": "Fathom Manufacturing", + "type": "contract_manufacturer", + "official_source": "https://fathommfg.com/capabilities/3d-printing-services/", + "observed_capability": "US industrial AM across multiple processes", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P026", + "name": "3D Printer on Demand", + "type": "contract_manufacturer", + "official_source": "https://www.3dprinterondemand.com/services/3d-printing-service", + "observed_capability": "US FDM farm; quotes and low MOQ", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P027", + "name": "Uptive / GoProto", + "type": "manufacturing_network", + "official_source": "https://uptivemfg.com/our-brands/goproto/", + "observed_capability": "Manufacturing network with 3D print expertise", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P028", + "name": "HP Digital Manufacturing Network", + "type": "supplier_directory", + "official_source": "https://www.hp.com/us-en/printers/3d-printers/learning-center/how-3d-printing-service-helps-business.html", + "observed_capability": "Directory of 3D printing providers; not blanket API permission", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P029", + "name": "EOS Manufacturing Partners", + "type": "supplier_directory", + "official_source": "https://www.eos.info/partners/manufacturing-partners", + "observed_capability": "EOS lists 800+ partner companies worldwide", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P030", + "name": "Arkema Service Bureaus", + "type": "supplier_directory", + "official_source": "https://hpp.arkema.com/en/markets-and-applications/3d-printing/service-bureaus/", + "observed_capability": "Regional provider directory", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P031", + "name": "Thomasnet", + "type": "industrial_supplier_directory", + "official_source": "https://www.thomasnet.com/", + "observed_capability": "Broad supplier discovery; 3D manufacturing can be filtered", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P032", + "name": "MFG.com", + "type": "rfq_marketplace", + "official_source": "https://knowledge.mfg.com/what-is-mfg-and-how-do-i-use-it", + "observed_capability": "Buyer RFQ access permission gated", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P033", + "name": "Techpilot", + "type": "rfq_marketplace", + "official_source": "https://www.techpilot.com/en/for-buyers", + "observed_capability": "24k+ potential suppliers claimed; requires platform access", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P034", + "name": "Xometry RFQ Partner Network", + "type": "rfq_marketplace", + "official_source": "https://www.xometry.com/capabilities/community/", + "observed_capability": "Supplier partner portal; not an unrestricted buyer lead feed", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P035", + "name": "Alibaba.com", + "type": "industrial_marketplace", + "official_source": "https://www.alibaba.com/", + "observed_capability": "Supplier listings and RFQs; permissions and listing scope vary", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "P036", + "name": "AliExpress", + "type": "retail_marketplace", + "official_source": "https://www.aliexpress.com/", + "observed_capability": "Direct retail alternative, not verified wholesale manufacturer", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z_UNLESS_SPECIFICALLY_DOCUMENTED", + "authorized_access": "Z" + }, + { + "id": "HP1_01", + "name": "3D People Ltd", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_02", + "name": "3D Prod", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_03", + "name": "3d-Profidruck AG", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_04", + "name": "3DPRINTUK Ltd", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": "P019", + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_05", + "name": "3Faktur GmbH", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_06", + "name": "3iD", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_07", + "name": "ABCorp 3D Inc.", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_08", + "name": "AMufacture", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_09", + "name": "AMUSE 3D", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_10", + "name": "Bronymec", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_11", + "name": "Douglass Innovations, Inc dba DI Labs", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_12", + "name": "Endeavor 3D", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_13", + "name": "Fantinelli srl", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_14", + "name": "i-SOLIDS", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_15", + "name": "Imaginarium Rapid Pvt. Ltd.", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_16", + "name": "MAKERLY", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_17", + "name": "MAUSA3D,S.L.", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_18", + "name": "MK Machining LLC", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_19", + "name": "NECO", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_20", + "name": "Oechsler", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_21", + "name": "Pantur", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_22", + "name": "PolyD Srl", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_23", + "name": "Prodartis AG", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_24", + "name": "Prototal Industries", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": "P023", + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_25", + "name": "RapidCenter", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_26", + "name": "RP2industrial", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_27", + "name": "Shift 3D Manufacturing", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_28", + "name": "Streamline 3D", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_29", + "name": "Treddy S.r.l.", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_30", + "name": "Uptive LLC", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": "P027", + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP1_31", + "name": "Ziggzagg NV", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_PARTNER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_01", + "name": "3DBAVARIA GmbH", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_02", + "name": "3DStep Oy", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_03", + "name": "AITIIP", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_04", + "name": "Ajatec Prototyping Oy", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_05", + "name": "BDL3D Ltd", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_06", + "name": "Blumak3d", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_07", + "name": "Immaculate3D by quick parts solutions private limited", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_08", + "name": "Link Solution Co., Ltd.", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_09", + "name": "Moonshot 3D LLC", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_10", + "name": "Norra Additive Manufacturing AB", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_11", + "name": "Paccalini srl", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_12", + "name": "PRIMAEAM SOLUTIONS PRIVATE LIMITED", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_13", + "name": "Procom Information Technology", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_14", + "name": "TECO Image Systems. Co., Ltd.", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_15", + "name": "There You Have It 3D", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_16", + "name": "Vexma Technologies Pvt Ltd", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "HP2_17", + "name": "X3d", + "type": "directory_member", + "official_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "observed_capability": "MJF service bureau listed by HP; exact requested process, material, region, certification and availability unverified", + "status": "Z_DIRECTORY_SNAPSHOT_MEMBER_NOT_DIRECTLY_VERIFIED", + "directory_tier": "HP_LISTED_CERTIFIED_PROVIDER", + "listing_provenance": "INDEXED_SEARCH_RESULT_2026-11-10; directory direct HTML is dynamic and does not expose member list in fetched text", + "linked_existing_registry_id": null, + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "X001", + "name": "Dassault 3DEXPERIENCE Make", + "type": "manufacturing_marketplace", + "official_source": "https://www.3ds.com/make/service/3d-printing-service/", + "observed_capability": "On-demand comparison of manufacturing service provider quotes, no live quote obtained", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "X002", + "name": "Unionfab", + "type": "contract_manufacturer", + "official_source": "https://www.unionfab.com/services/3d-printing", + "observed_capability": "3D printing services across production processes; advertised online quotations", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + }, + { + "id": "X003", + "name": "MakeNow", + "type": "contract_manufacturer", + "official_source": "https://makenow.cc/", + "observed_capability": "Online quoting for FDM SLA SLS MJF CNC and metal; independently verify offering and fulfillment", + "status": "T_PROVIDER_DESCRIPTION_ONLY", + "quote_status": "Z", + "available_api": "Z", + "authorized_access": "Z" + } + ], + "updated": "2026-11-10", + "source_scope": { + "directly_researched_entrypoints": 39, + "hp_directory_indexed_members": 48, + "hp_directory_duplicate_aliases": 3, + "worldwide_completeness": "Z", + "hp_directory_source": "https://reinvent.hp.com/us-en-3dprint-amnetworkdirectory", + "hp_members_method": "indexed page snapshot (the live directory HTML renders its members dynamically)", + "buyer_RFQ_access": "NOT_GRANTED", + "commercial_quotations": "NONE" + } +} diff --git a/deal_rescue/server.py b/deal_rescue/server.py index cfa2c4c..9b046cc 100644 --- a/deal_rescue/server.py +++ b/deal_rescue/server.py @@ -10,6 +10,7 @@ import mimetypes from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer from pathlib import Path +from deal_rescue.industrial import core as industrial from urllib.parse import parse_qs, urlparse WEB = Path(__file__).parent / "web" @@ -57,6 +58,20 @@ def do_GET(self): if WEB.resolve() not in p.parents: return self.send(404, {"error": "not found"}) return self.send(200, p.read_bytes(), mimetypes.guess_type(str(p))[0] or "application/octet-stream") + if u.path == "/api/industrial/registry": + return self.send(200, industrial.source_registry()) + if u.path == "/api/industrial/cases": + return self.send(200, industrial.cases_index()) + if u.path == "/api/industrial/decision": + return self.send(200, industrial.run_case(q.get("case", "coalition"))) + if u.path == "/api/industrial/passport": + case = q.get("case", "coalition") + return self.send(200, industrial.run_case(case), "application/json", + {"Content-Disposition": 'attachment; filename="INDUSTRIAL_PASSPORT.json"'}) + if u.path == "/api/industrial/rfq": + case = q.get("case", "coalition") + return self.send(200, industrial.supplier_rfq(case).encode("utf-8"), "text/plain; charset=utf-8", + {"Content-Disposition": 'attachment; filename="RFQ_DRAFT_NOT_SENT.txt"'}) if u.path == "/api/runs": return self.send(200, [{"run_id": k, "evidence_mode": json.loads((d / "DEAL_DOSSIER.json").read_text())["evidence_mode"]} for k, (_, d) in RUNS.items()]) diff --git a/deal_rescue/web/index.html b/deal_rescue/web/index.html index 11c8ed6..f7ee4bf 100644 --- a/deal_rescue/web/index.html +++ b/deal_rescue/web/index.html @@ -356,5 +356,6 @@