Every Edge Needs a Quote: Building a Quote-Grounded Knowledge Graph of Healthcare Software Adoption with Language-Model Agents
Organizations: Medical Physics Unit, Department of Oncology McGill University, Montreal, Canada · Toboggan Labs Montreal, Canada
Abstract
Hospitals regularly buy software that clinicians and patients depend on. Because these purchases are costly, hard to reverse and can affect patient care, buyers look for evidence of which peer institutions already use a product and which systems it connects to. This evidence is public but scattered across vendor websites, press releases and third-party pages. Language-model agents can now collect it at low cost, but the correctness of the extracted claims is difficult to establish, and a wrongly listed customer can mislead buyers and misrepresent an organisation. We present a pipeline that builds a knowledge graph of customer and integration relations from the open web under one rule: every edge must be supported by a verbatim quote from its source page. Pages come from a deterministic crawl of each vendor's site and a budgeted ReAct agent that searches the rest of the web. A permissive extractor proposes relations with quotes, and a layered grounding stage decides which to keep, using a referent step that reads the whole page when a quote names only one side, deterministic checks, and a panel of five model calls voting on nine criteria. On 61 vendors, the pipeline reaches 0.94 precision and 0.71 recall against a page-level key covering the 6,428 candidate relations proposed by its extractor, whose verdicts were drafted by one model and re-checked with a second. Against the golden reference, the marketplace's own curated list, it scores lower, but 89% of the relations it keeps that the reference lacks are stated on a page. A confidence score built from the panel's votes keeps more correct relations than the fixed rule at the same precision, and reaches 0.90 precision at 0.90 recall. We also discuss how narrow, bounded model calls, string-matched evidence and voting address long-context degradation and run-to-run variance.
Figures & tables
| Term | Meaning in this paper |
|---|---|
| Customer relation | An organisation uses a product ( Adopts ). |
| Integration relation | Two named products are technically connected ( Integrates ). |
| Quote | The verbatim span of a page offered as evidence for a relation. |
| Candidate | One (page, relation) pair proposed by the extractor, with its quote. |
| Vendor page / third-party page | A page on the vendor’s own site / on any other site. |
| Referent | The step that reads the whole page when a quote names only one side of a relation. |
| Customers | Integrations | Total | |
| Page-level key : relations proposed by the extractor | 3,486 | 2,942 | 6,428 |
| of which correct | 2,952 | 1,861 | 4,813 |
| Golden reference : relations listed | 749 | 249 | 998 |
| Benchmark | Scope | Precision | Recall | F1 |
| Page-level key (page, relation) | All | 0.94 | 0.71 | 0.81 |
| by type: customers | 0.96 | 0.71 | 0.81 | |
| by type: integrations | 0.90 | 0.71 | 0.79 | |
| by page: vendor’s site | 0.94 | 0.71 | 0.81 | |
| by page: third-party | 0.92 | 0.65 | 0.76 | |
| Each relation counted once (2,349) | 0.92 | 0.74 | 0.82 |
| Outcome | Correct | Incorrect |
| Kept | 3,415 | 217 |
| Rejected by the semantic panel | 1,106 | 1,212 |
| page does not present them as users | 546 | 305 |
| all other criteria | 560 | 907 |
| Refused by the referent | 276 | 108 |
| Rejected by the shape checks | 16 | 78 |
| Configuration | Kept | P | R | F1 | Golden F1 |
|---|---|---|---|---|---|
| Without the referent | 133 | 0.887 | 0.361 | 0.513 | 0.578 |
| Final pipeline | 291 | 0.932 | 0.808 | 0.866 | 0.585 |
| Target precision | Recall | Relations kept |
| 0.99 | 0.002 | 12 |
| 0.98 | 0.27 | 1,305 |
| 0.97 | 0.40 | 2,002 |
| 0.96 | 0.45 | 2,258 |
| 0.95 | 0.72 | 3,623 |
| 0.93 | 0.84 | 4,359 |
Appendix figures & tables3 assets
Supplementary material from the paper’s appendix.
Appendix
| Check | Rejects |
|---|---|
| incomplete_relationship | a missing object, object type or relation |
| unnamed_subject / unnamed_object | a generic endpoint (“hospitals”, “EHR systems”, “the platform”) |
| subject_is_individual | a person (title or clinical credential) given as the organisation |
| meta_commentary_quote | a quote that is the model’s own arrow notation, not page text |
| quote_not_in_source | a quote less than 75% of whose characters match the page |
| quote_not_contiguous | a quote whose longest contiguous match is under 95% (pre-empted by splice repair) |
| Criterion | True when | Gates |
|---|---|---|
| is_named_organization | the subject is a specific, real, named organisation, not a person, a category, a placeholder (“your practice”), an anonymised description, or the vendor’s own brand | Adopts |
| relationship_actually_happened | the relation is stated as a completed fact, not a plan, a hope, or something cancelled | both |
| relationship_claim_supported | the quote states this type of relation between these entities, not a co-mention, an investment, an award or a network membership | both |
| is_third_party_vendor | the partner is independent of the vendor, not its own product, sub-brand or acquisition | Integrates |
| is_customer_facing_integration | the integration is one a customer would use, not swappable infrastructure (a cloud host, a generic model provider, a coding assistant) | Integrates |
| is_specific_named_entity | the partner is a named product, not a category (“EHRs”, “practice management system”) | Integrates |
| Step | Braintrust slug(s) |
|---|---|
| Extraction | customer-extraction-8f90 integration-extraction-4de1 |
| Referent, third-party pages | referent-solution-customers-7f21 referent-solution-0cd9 |
| Referent, vendor pages | referent-solution-customers-firstparty-1eb4 referent-solution-integrations-firstparty-71e0 |
| Semantic panel | semantic-grounding-check-customers-fe3b semantic-grounding-check-integrations-a12e |
| Discovery agent | discovery-system-prompt-32a6 customer-discovery-f006 integration-discovery-c2a2 |
KG Construction
Knowledge graph construction turns text, tables, images, and databases into structured entities and relationships that machines can query and reason over.
See all 195 papers