N NUMINORTHE BUILD JOURNEYOpen the explorer ↗

FROM A QUESTION TO A WORKING GADGET

Take the question all the way.

Two companies say they trade. What might pass between them? We used the Matrix to test a product hypothesis, bought the source fields, and rebuilt the result outside the platform.

10–11 September 2026 · A Numinor platform test

The current demo is a complete company-centred map: 327,303 company identities, 58 reporting periods, reported SAM mix, and 145,210 distinct inferred product paths. The steps below record how the original research became this larger interactive experience.

1. Start with a claim you can challenge.

The brief proposed a connection between Xihua New Energy Technology (锡华科技) and Delijia (德力佳): a flange supplier and a wind-turbine gearbox manufacturer. We first checked the disclosed amounts and both companies’ reported product sets. Seventeen seller product nodes and five buyer nodes produced one sufficiently specific directed product link.

The accounting meanings mattered. ¥38,653,900 was an annual sales flow. ¥23,622,200 was a receivable balance. A later ¥65,871,400 was a half-year sales flow. Adding them would invent a transaction total, so the explorer keeps them separate.

2. Compose the evidence, then test it.

Four disclosure tables establish ordered seller–buyer relationships. Product segments establish what each company makes. The product graph proposes a directed supply link. Tender awards stay out of construction and ranking, so they can provide a separate check.

EvidenceFields that do the work
Commercial relationshipCompany and counterparty IDs, disclosure type, amount, currency, period and publication date from customer, supplier, related-sale and related-purchase records.
Company productsSAM product code, positive product revenue and revenue share. Join calculations to reporting headers by id.
Candidate pathDirected upstream/downstream product codes, graph category, explanation, and taxonomy depth/parent.
Independent checkTender bidder/purchaser IDs, confirmed stage, result date, title and source URL.
Readable experienceCompany names and tickers, product names, and exact disclosure references.

For the initial controlled study, we used annual positive CNY flows for 2017–2025, requiring both companies to have product coverage. We removed redundant ancestor paths within the same relationship category and ordered the remainder by specificity, then segment relevance.

In the original study, requiring both endpoints to reach level 3 supported a candidate for 37.9% of disclosed relationship-years. The buyer-category control reaches 24.0%; the ordinary random control reaches 7.4%. These are coverage comparisons, not product-level accuracy scores.

3. Buy the source fields required to reproduce it.

The field basket selected 30 paid fields and 87 free fields across ten tables, while reusing existing entitlements. A human completed checkout. We then verified the active grants and requested the licensed field export with the existing API credential.

The export job became ready in about 24 seconds. Its manifest exposed a real platform problem: the paid taxonomy table was missing. Nine required tables were delivered. “Ready” described job completion; it did not mean every purchased dependency was present.

4. Rebuild from the delivered history.

The API delivered versioned Parquet rows. We selected the latest delivery version within each table’s declared grain, then removed deleted records. Dropping deletion rows first would resurrect data. Manifest row counts, complete grains and file checksums make this stage auditable.

The API also contained newer data than the Matrix snapshot. We reconstructed a second panel aligned to the Matrix’s actual per-table vintage, so an expected update would not be mistaken for a broken join. That vintage-aligned replay exactly reproduced the Matrix universe, candidate counts and all five depth/control coverage comparisons. That frozen annual study covers 27,795 relationship-years, 11,209 distinct connections and 5,030 companies.

5. Make uncertainty part of the interface.

The explorer lets you change year and link category. It automatically keeps the most detailed supported connections for each pair of product strands. Each candidate shows both segment revenue shares and the graph’s explanation. Source amounts retain their period and accounting meaning. Tender notices can corroborate a relationship; a product-name mention is only limited supporting evidence.

The JavaScript candidate ordering was compared with the Python reference for every relationship-year. The page’s optional agent tools were also tested through the browser’s WebMCP interface, including invalid inputs and visible-state readback.

The taxonomy issue was resolved on 11 September. A fresh licensed export delivered all 6,544 official product rows, including Chinese and English names. Every code and hierarchy relationship used by the explorer matched the earlier reconstruction. We added this missing table while retaining the original nine study tables, so the update makes the same analysis readable and enables product-name checks against held-out titles. All candidate rankings and coverage rates stayed unchanged. In the original level-3 study, four title records across two relationship-years contain the selected product name; this remains limited corroboration.

For the English demo, company names lead in English with Chinese shown underneath. Product cards, candidate paths and taxonomy breadcrumbs use English only. The example seller’s display name is shortened from its issuer-filed English name; the delivered English field contains Chinese. At this stage, other unavailable English names fell back to Chinese; the later company-network release adds labelled English renderings.

6. Let the matching process resolve the level.

The original specificity toggle exposed a research setting as a user decision. The product hierarchy has a different role in the demo: it helps find the node where a supply-chain relationship exists. We now follow each company’s SAM product strands and keep the most detailed supported connections automatically. The two endpoints can be at different levels.

Resolution happens separately for each pair of product branches. A detailed link on one branch does not erase a broader link that remains the best match on another. Alternatives that are more detailed at different ends are preserved. “How this connection was found” shows the paths from the most detailed SAM coverage nodes up to the matched nodes. The delivered SAM calculation table contains rolled-up coverage; those nodes are not labelled as verbatim products from the original filing.

The updated resolver was checked against an independent Python implementation for all 27,795 relationship-years, including branch preservation and unequal endpoint depths. It retains 80,677 connections across 19,426 relationship-years. The flange example still resolves to one connection: Flanges → Wind Turbine Gearboxes.

7. Change the view, then revisit the data recipe.

The user wanted to start with a company, place it in the centre, and see every disclosed supplier on the left and customer on the right. Every reporting period should be available. Hovering or selecting a company should reveal its reported product revenue mix; brighter edges should trace the inferred product connection and show its accounting evidence.

This expanded the original research scope. Relationships without SAM coverage must remain visible, and a small demonstration sample is no longer sufficient. The first local preview only indexed 18 example companies, so a search for CATL failed even though CATL was in the purchased reference data. That was an agent integration error. The complete catalog now retains every listing alias: CATL, Contemporary Amperex, 宁德时代, 300750 and 03750 all resolve to one company. CATL’s FY2024 view contains 21 disclosed suppliers and five customers.

A more important field distinction emerged. The original calculation-table revenue is cumulative across descendants. Its deepest positive nodes cannot identify every directly reported product, especially when a company reports both parent and child nodes. We checked exact field definitions and aggregate results in the Matrix. The new recipe adds product_b_income, product_b_income_ratio and product_b_profit for reported revenue, share and gross profit, plus cumulative product_profit for ancestor-level comparisons. Free full company names and four licensed original-counterparty-name fields complete the broader company search.

While checkout was pending, the first map also left SAM disconnected. We restored all already-purchased calculation coverage, labelled its basis, and then replaced it with the actual reported fields after purchase. The blank preview was not evidence that Numinor lacked SAM data.

8. Receive the purchase and infer the scale.

The human completed the supplemental checkout. All eight additional paid field grants activated, and the licensed API delivered all eight required tables with complete grain. File hashes, row counts and version checks passed. The fresh C2C analytical fields exactly match the retained original sources at the publication cutoff, so the original research remains reproducible. No data was substituted or invented to fill missing source values.

Current company mapCoverage
Company identities327,303, including source names and all listing aliases
Reporting periods58 exact date/month combinations; C2C from 2017 to H1 2026, SAM history from 2007
Disclosed relationships2,082,954 source records across 1,753,242 directed pair-periods
Reported product mix572,625 reported nodes, preserving supplied shares, zeros and adjustments
Inferred product paths145,210 distinct most-detailed supported links across 40,468 pair-periods

All resolved organisation relationships are included regardless of product coverage; unresolved parties, natural persons and self-links are outside this company graph. The source publication cutoff is 10 September 2026. Annual SAM values never fill a quarterly gap. The full catalog is available for search; period networks, product mixes and disclosure details load as needed.

Company names lead in supplied English or Latin names where available. For Chinese-only source names, an explicitly labelled English/Latin rendering keeps the demonstration readable without claiming an official registered English name. Original names stay visible and searchable. A few counterparties with only other-script names retain an identifier as their primary label. Products use the official English taxonomy.

With a supplier connection selected, divide each disclosed amount by the central matched product’s COGS: revenue minus gross profit. With a customer connection selected, divide by the central matched product’s revenue. A direct reported-node match uses direct metrics; a match at an ancestor uses that ancestor’s cumulative metrics. Missing gross profit, nonpositive denominators or incompatible currencies produce an explanation instead of a percentage.

FY2024 worked exampleSales flowReceivable balance
Original disclosure amountCNY 38,653,900CNY 23,622,200
Xihua central: divide by Flanges revenue, CNY 161,845,10023.8833%14.5956%
Delijia central: divide by Wind Turbine Gearboxes COGS, CNY 2,770,423,3001.3952%0.8527%

Delijia’s gearbox COGS is CNY 3,677,653,300 reported revenue minus CNY 907,230,000 gross profit. These percentages compare the scale of company-level amounts with a plausible product denominator. They do not allocate the trade to the product. Balances and flows remain separate, and alternative paths are never summed. Xihua’s own Flanges gross profit is absent in the source, so a supplier-side COGS percentage for that product remains unavailable.

The quick selects come from the actual reported-node results: Huatian Technology (287 paths, FY2020), Hikvision (257, FY2021), Foton Motor (201, FY2017), Jointown Pharmaceutical (194, FY2020), Sinopec (188, FY2021) and China Telecom (188, FY2019). Each opens that company’s richest period. These are path-rich examples, not rankings of inference accuracy.

Every retained path and its supported branch pairs agrees between independent Python and JavaScript implementations. Checks cover all 1,753,242 pair-periods and their 2,082,954 source disclosures, plus direct/ancestor resolution, period/currency guards and missing denominators. Headless application checks exercise company search, complete CATL coverage, period switching, and the real sales/revenue and sales/COGS dialogs. No browser visual QA was performed for this release.

We also fixed an update integrity risk: an old company catalog could be paired with newly generated numeric relationship indices. Each release now has immutable data paths and an identity check. The completed map is the main experience; the original pair-study explorer remains available with its frozen controls.

9. Count connections once.

The user noticed repeated cards for Integrated Circuit Packaging and Testing Equipment → Chip Packaging and Testing. Inspection of the licensed source confirmed six active records with the exact same directed product codes and Capital equipment category, all in graph version 4. Three description variants appeared across those six IDs. This was duplication in the delivered graph identities, not six different product pathways.

The active source has 70,900 records for 66,053 distinct directed product/category connections: 3,122 duplicate groups and 4,847 excess records. For this demo, we keep one original record per exact product-code pair and category, preferring a nonblank description and using a stable source-ID tie-break. We retain separate categories, directions and product branches. Original source rows and their alternative wording remain in the audit.

After consolidating duplicates, the demo has 145,210 distinct path instances rather than 166,139 source-record instances. Huatian Technology FY2020 changes from 368 to 287 paths, with the same 33 supported counterparties. All 40,468 supported company pair-periods remain supported; company relationships, reported mixes and financial metrics are unchanged. Path badges, totals and quick selects agree with the detail view. The actual screenshot example now produces one card, and regression checks preserve legitimate alternatives.

What created friction?

The record separates observed Numinor issues from agent mistakes, transport conditions and hosting dependencies. A clever agent can recover from some friction, but a recovery should leave a reproducible explanation.

Observed issueRecovery and status
Free Reference fields triggered a misleading stale-basket warningCheckout still worked. The warning’s zero-price classification was traced in local code; a platform fix was not retested.
Automatic free dependencies omitted useful period, currency and source-reference fieldsAdded the semantic fields explicitly to make the construct reproducible. Dependency completeness remains a workflow improvement.
Trinity missed a tender codebook and later confused direct/cumulative SAM meaningsUsed exact table dictionaries and Matrix aggregates. Definitions should consistently expose qualified field, grain, units and metric basis.
A small derived preview failed to serializeThe numerical result table and private report worked. The server-side preview cause remains unverified.
Generic timestamp hints and SAM join guidance were ambiguousUsed source publication dates for public cutoffs, delivery dates for version resolution, and report IDs for the SAM header join.
The private report displayed a raw translation key for its PDF actionReport content remained readable. The PDF action was not tested.
Paid taxonomy was omitted from the original ready exportStructural ancestry was reconstructed temporarily. After the shipped fix, a fresh licensed export delivered all 6,544 official rows; hierarchy and label checks passed. Resolved for this recipe.
The original-product table lacked a purchased grain componentThe manifest correctly marked incomplete grain. The redesign licensed direct fields on the already-keyed calculation table instead.
CATL missing, blank SAM, discarded aliases and stale company-index riskAgent/demo integration errors. Fixed through full coverage, merged aliases, reported-field integration and immutable releases.
Slow bulk transfer and expired MCP sessionResumable checked byte ranges and session reinitialization recovered the work. The transport slowdown was not attributed to Numinor.
Initial private publication timed out on a TLS certificateA separate Sites hosting issue. Reusing the saved version after certificate provisioning succeeded.
Repeated product graph identities with different descriptionsConfirmed six records for the screenshot example and 3,122 duplicate groups in the active source. The demo keeps one representative per directed product/category identity; the source’s generating cause is unverified.
Supplemental reported-SAM purchaseAll requested grants and eight tables were verified delivered. No missing-table issue recurred; individual null metrics remain source-coverage limits.

The complete chronological journey and platform and integration issue log retain the observations, corrections and suggestions. Earlier pending states are historical, not the current delivery status.

A template for the next construct

Define the question and the evidence that could contradict it. Establish grains and time semantics. Freeze the construction rule before inspecting held-out evidence. Turn the actual field dependencies into a basket. Inspect what the paid export really contains. Rebuild and reconcile vintages. Then design an experience that lets someone inspect the evidence and the model’s limits.

Explore what changes hands →