RFX docs

The graph

The ontology says what can be asked. The graph records who stated what, on which evidence, and what happened between the companies, for buyers, vendors and RFX alike. It has two layers: the claims on the ontology, and the marketplace around them.

Claims: vendors on the ontology

A claim is one product's position on one capability:

FieldValues
statussupported, beta, on_roadmap, not_supported
levelL2 when the line is in documents published after the NDA, L3 when it is only in deeper sources (opened with negotiation)
source and textThe file and line, and the line itself, quoted
originWhere it comes from (below)
reviewproposed, confirmed, corrected or rejected, with who decided

Where a claim comes from

OriginHow
vendor statementA person at the vendor states the capability (vendor_decide_claims with state). Published at once. Nothing read from the sources replaces it.
modelThe language model reads the sources onto the vocabulary. A claim is kept only if it names a capability in the vocabulary and quotes a line that really is in the sources. It replaces what RFX's own rules read from the documents, never a person's statement, a standard answer or the offering profile.
documentsRFX's own rules: the capability's probe is searched in the published documents, then in all of them. The best line must hold at least 80% of the probe's words, and its wording sets the status (in preview reads as beta, planned as on roadmap).
standard answerThe vendor's answer to the RFP question the capability names, when that answer names the capability.
offeringThe vendor's offering profile, for capabilities with a catalog field (deployment, regions).

Review

Every claim read from the sources starts as proposed. A person at the vendor confirms it, corrects its status, or rejects it (vendor_review_claims, then vendor_decide_claims). Buyers see:

When the sources change: a line that is gone withdraws its claim; a line that now says something else sends a published claim back to proposed, with a note of what was published and by whom; a new document that agrees changes nothing. vendor_read_sources reads again at once; otherwise it happens a few seconds after a change.

Answering a requirement through the graph

For a requirement placed on a capability, and one vendor's product:

  1. Before the NDA with that vendor, it answers needs_nda (only public-catalog checks answer at level 1).
  2. If a person at the vendor has answered this requirement for this buyer, that answer.
  3. The vendor's published claim on the capability: supported is met, beta is partial, on roadmap or not supported is unmet, with the line quoted and who confirmed it. A level-3 claim answers only once negotiation is open, and needs_L3 before.
  4. A capability the vendor's person rejected answers unknown.
  5. Otherwise the requirement is searched in the documents directly, published ones first, and marked not yet confirmed if a proposed claim exists.
{
  "id": "R1",
  "priority": "must",
  "text": "Automatic user provisioning",
  "status": "met",
  "level": "L2",
  "capability": "SCIM provisioning",
  "confirmed_by": "J. Doe, Head of Product",
  "basis": "L2 docs/security.md:14 \"SCIM 2.0 user provisioning is supported for Okta and Entra ID.\""
}

Ranking

match_vendors compares every product in the need's category. A must counts twice, a should once; met scores 1, partial 0.5, unmet 0. What is not decided yet (needs_nda, needs_L3, unknown, needs_quote, escalated) is left out of the score and listed as open. An unmet must disqualifies. Products are ordered: qualified first, then by score, then by fewest open items.

Placement and search

The marketplace graph

Around the claims, the whole marketplace is a graph of nodes and typed edges: companies, their agents and people, what they offer or need, their connected systems and what those yielded, and RFX's own steps. It is built from the marketplace's state on every save, so it never falls out of step.

company:buyer:acme.example ─has_need─▶ need:… ─requires (must)─▶ cap:scim
                                                                  ▲
company:vendor.example ─offers─▶ asset:… ─has_capability (supported, L2)─┤
                                                                  │
conn:… (GitHub) ─yields─▶ doc:…/docs/security.md ─evidences───────┘

"Which vendors meet this must, and on what evidence" is a walk across it: from the need, through the capability, to each product's claim and the document behind it.

Nodes

KindIdWhat
companycompany:<domain>A company, buyer, vendor or both. Agents of one proven company share one node. A buyer's node is company:buyer:<domain>: never the vendor's, even on the same domain, so a mailbox at a vendor's domain does not give a buyer agent the vendor's terms, documents or deals.
agentagent:vendor:…, agent:buyer:…An agent, how it proved its company, and whether RFX hosts it
personperson:<company>:<name>Someone who signed, decided, reviewed or paid
assetasset:<id>, asset:used:<name>A product or service a vendor offers, or one a buyer already uses
categorycategory:<id>A market
capabilitycap:<id>A node of the ontology
termterm:<type>A kind of contract term: price tiers, discount condition, discount ceiling, term length, payment terms, overage, deployment, data region, uptime SLA, support, proof of concept, liability cap, governing law, exit right, standard NDA
needneed:<buyer>A buyer's requirements in a category
connectionconn:<id>A connected source: GitHub, a compliance platform, an MCP server, uploads
documentdoc:<vendor>:<path>A vendor's file, at level 2 or 3
factfact:<buyer>:<name>A fact read from a buyer's own systems, with whom it may be shared
nda, access, deal, breakoutnda:…, access:…, deal:…, breakout:…RFX's own steps: the NDA (opens level 2), negotiation access (level 3), the deal, and a decision sent to a person

Edges

FromRelationTo
companyoffersasset
asset, needin_categorycategory
agentacts_forcompany
personworks_forcompany
companyconnectsconnection
connectionyieldsdocument, fact
documentdescribesasset
assethas_capabilitycapability, with status, level, review, origin and source
documentevidencescapability, with the line
personreviewedcapability, with the decision
assetoffers_termterm, with its value
companyhas_need, usesneed, asset
needrequirescapability, with the priority and the buyer's own words
needacceptsterm (commercial requirements)
ndapartycompany
accessrequested_by, granted_bycompany (buyer, vendor)
dealfor_need, with_assetneed, asset
personsigned, paid_fee, decidednda or deal, deal, breakout
breakoutaboutdeal, nda or company

The ontology adds its own edges between capabilities: part_of (a narrower capability to a broader one), addresses (to a regulation) and expected_must or expected_common (to its category).

Who sees what