The ontology
RFX compares what a buyer needs with what every vendor offers by putting both into one vocabulary of capabilities. That vocabulary is the ontology. Matching, the RFP, a vendor's placement and the graph are all built on it.
Why one vocabulary
A buyer writes "Automatic user provisioning". One vendor's documentation says "SCIM 2.0 user provisioning is supported", another's "User provisioning via SCIM is in beta". As text, these can only be compared by someone reading all three. Placed on the same capability, scim, the comparison is a lookup: the first vendor meets the requirement, the second meets it in part, and each answer points at the line it came from. That is what lets one need be compared with thousands of offers, the same way for every vendor.
How it is organised
- A shared core, used in every category: security and access, deployment and hosting, API, certifications and assurance, operations. The kinds of contract term (price tiers, discount conditions, term length, SLA and the rest) are part of the core too.
- One category vocabulary per market, which extends the core with that market's own capabilities. Loaded today: AI Governance Platforms, AI Security, Sales Force Automation and CRM.
- A vendor's product and a buyer's need each belong to one category, and are placed against the core plus that category only.
| Element | What it is | Example |
|---|---|---|
| Group | A heading that gathers capabilities | security: Security and access |
| Capability | One thing a buyer can ask for and a vendor can state. The nodes of the ontology | scim: SCIM provisioning |
| Regulation | A law or framework that capabilities help with | eu-ai-act: EU AI Act |
A capability
{
"id": "sso",
"group": "security",
"label": "Single sign-on",
"aliases": [
"SSO",
"SAML",
"OIDC",
"identity provider"
],
"probe": "SAML SSO",
"expected": "must",
"rfp": "SEC-02"
}
| Field | Meaning |
|---|---|
id | Stable, and unique across every vocabulary: RFX refuses to start if two collide. Requirements, claims and the graph refer to it. |
group | The group it sits in. |
label, aliases | The name a buyer would use, and other names for the same thing. Matching reads both. |
probe | The words RFX's own rules look for in a vendor's documents (without the model). The label when not given. |
expected | must: buyers in the category expect every vendor to have it. common: most vendors have it. Absent: optional. It drives a placement's coverage figures and the gaps a vendor is shown. It is RFX's reading of the market, not a standard. |
parent | A narrower capability is part of a broader one: sso-okta is part of sso. |
addresses | The regulations and frameworks it helps with: ai-inventory addresses the EU AI Act, ISO/IEC 42001 and the NIST AI RMF. |
rfp | The question of the standard RFP (list_rfp_questions) whose answer can state it. |
catalog | A value of the vendor's offering profile that states it: deploy-on-prem is stated by deployment = on-prem. |
Placing a requirement on a capability
A buyer writes requirements in plain words (set_requirements, send_rfp). RFX places each one on a capability, or on none:
- Requirements about money (price, budget, cost, fee, discount, EUR) are not capabilities. They are settled in the quote and the deal room, and answer
needs_quoteuntil then. - The text is cut into words. Common words are dropped and endings trimmed, so provisioning and provisioned count as one word.
- A capability fits when at least three quarters of the requirement's words are in its label or aliases, and the requirement holds at least half the words of its label or of one alias. Of those that fit, the closest wins. Only the core and the need's category are searched.
- If none fits, the requirement is recorded as demand (below) and answered without the graph: from the vendor's standard RFP answer if that answer covers nearly all its words, otherwise by searching the vendor's documents for it, with the line quoted.
| The buyer writes | Placed on |
|---|---|
| Automatic user provisioning | scim |
| SAML SSO with Okta | sso-okta, the narrower capability |
| We need SOC 2 Type II | cert-soc2 |
| EU hosting | region-eu |
| User provisioning from our identity provider | None: half its words point at scim, half at sso. Answered from the documents, and recorded |
The rule is strict on purpose. A requirement placed on the wrong capability would give the buyer a confident wrong answer; one left unplaced is still answered, from the vendor's own lines. To skip the guessing, name the capability yourself:
{
"id": "R1",
"text": "Provisioning from Entra ID",
"priority": "must",
"check": {
"capability": "scim"
}
}
Vendors' sources on the same capabilities
A vendor's documents, repository, compliance platform and MCP server are read onto the same capabilities, by the language model or by RFX's own rules. Each reading is a claim with its status, its level and the line behind it, which a person at the vendor reviews. See The graph.
Growing the vocabulary
The vocabulary grows from what the market actually asks and states:
- Demand. A requirement no capability fits is counted, with the vendor it was asked of. A vendor sees what buyers asked it that the vocabulary lacks in
vendor_placement(demand_not_in_vocabulary). - Vendors' lines. When the model reads a vendor's sources and finds a line about something no capability covers, it proposes one: a short generic label, the group it belongs to, the line, and why nothing covers it.
A person at RFX can also have the model draft capabilities for a category from the recorded demand. Every proposal waits for that person, who approves it (and may rename it, move it to another group, or add aliases) or rejects it. Approved, it gets an id x-<category>-<label> and joins its category for everyone at once, and the vendor whose line proposed it receives that claim, waiting for its own review. Nothing joins the vocabulary without a person at RFX.
Where it comes from
Each vocabulary is a file in data/ontology/ with a version and a note on its sources; approved additions are kept in the database. The vocabularies of this version are illustrative: written from public frameworks (EU AI Act, ISO/IEC 42001, NIST AI RMF, OWASP Top 10 for LLM applications, MITRE ATLAS) and common RFP question banks.
The vocabulary today
71 capabilities in 3 categories and the shared core. Read from the running version. list_capabilities returns the same; pass market for one category.
Shared corecore27 capabilities
Used in every category.
Regulations and frameworks: GDPR (gdpr)
| Id | Capability | Also called | Expected | Links |
|---|---|---|---|---|
| Security and access | ||||
sso | Single sign-on | SSO, SAML, OIDC, identity provider | must | RFP question SEC-02 |
sso-okta | Okta single sign-on | Okta SAML, SAML SSO with Okta | part of sso | |
sso-entra | Microsoft Entra ID single sign-on | Azure AD SSO, Entra ID SAML | part of sso | |
sso-ping | Ping Identity single sign-on | PingFederate SSO | part of sso | |
sso-google | Google Workspace single sign-on | Google SSO | part of sso | |
scim | SCIM provisioning | SCIM 2.0, user provisioning, automatic user provisioning and deprovisioning | must | RFP question SEC-03 |
mfa | Multi-factor authentication | MFA, two-factor authentication | common | |
encryption | Encryption at rest and in transit | AES-256, TLS | must | addresses GDPR; RFP question SEC-01 |
byok | Customer-managed keys | BYOK, bring your own key | common | |
rbac | Role-based access control | RBAC, roles and permissions | common | |
audit-log | Audit log | activity log, audit trail | common | addresses EU AI Act |
| Deployment and hosting | ||||
deploy-saas | SaaS | cloud hosted, multi-tenant | must | offering: deployment = saas |
deploy-private-cloud | Private cloud | single-tenant, dedicated instance | common | offering: deployment = private-cloud |
deploy-on-prem | On-premises deployment | self-hosted, on-prem | common | offering: deployment = on-prem |
deploy-air-gapped | Air-gapped deployment | offline deployment | ||
region-eu | EU hosting | EU data residency, hosted in the EU, European Union region | must | addresses GDPR; offering: regions = eu |
region-ch | Switzerland hosting | Swiss hosting, Swiss data residency | offering: regions = ch | |
region-us | US hosting | United States region, US data residency | offering: regions = us | |
| API | ||||
rest-api | REST API | public API, OpenAPI | must | RFP question INT-01 |
webhooks | Webhooks | event notifications | common | RFP question INT-01 |
python-sdk | Python SDK | SDK | RFP question INT-01 | |
| Certifications and assurance | ||||
cert-iso-27001 | ISO/IEC 27001 certification | ISO 27001 | must | RFP question CMP-02 |
cert-soc2 | SOC 2 Type II report | SOC 2 | common | RFP question CMP-01 |
pentest | Third-party penetration testing | pen test | common | RFP question SEC-04 |
dpa | GDPR data processing agreement | DPA, standard contractual clauses, sub-processor list | must | addresses GDPR; RFP question CMP-03 |
| Operations | ||||
uptime-sla | Uptime SLA | availability SLA | must | RFP question OPS-01 |
support-tiers | Support tiers | 24/7 support, named CSM | common | RFP question OPS-02 |
AI Governance Platformsai-governance-platforms24 capabilities · version 0.2
Illustrative vocabulary written for the MVP from public frameworks (EU AI Act, ISO/IEC 42001, NIST AI RMF) and the standard RFP question bank. It is not Gartner's capability list, and 'expected' marks our own reading of what the market expects.
Regulations and frameworks: EU AI Act (eu-ai-act), ISO/IEC 42001 (iso-42001), NIST AI RMF (nist-ai-rmf)
| Id | Capability | Also called | Expected | Links |
|---|---|---|---|---|
| AI governance | ||||
ai-inventory | AI system inventory | model inventory, AI registry, AI use case inventory, inventory of models and third-party AI | must | addresses EU AI Act, ISO/IEC 42001, NIST AI RMF |
risk-classification | EU AI Act risk classification | AI risk classification, high-risk classification, Annex III classification | must | addresses EU AI Act |
control-mapping | Control library mapping | ISO/IEC 42001 control mapping, NIST AI RMF control mapping, EU AI Act controls, framework mapping | must | addresses EU AI Act, ISO/IEC 42001, NIST AI RMF |
evidence-collection | Evidence collection | collect and version evidence, link evidence to controls | must | addresses EU AI Act, ISO/IEC 42001 |
audit-reports | Audit-ready reports | conformity reports, readiness reports, audit export | must | addresses EU AI Act, ISO/IEC 42001 |
technical-documentation | Technical documentation (Annex IV) | model documentation, technical file, Annex IV | common | addresses EU AI Act |
agentic-assistants | Agentic compliance assistants | AI assistants for compliance, agents fill questionnaires | common | |
risk-assessment | AI risk assessment | risk register, risk treatment | must | addresses ISO/IEC 42001, NIST AI RMF |
impact-assessment | Impact assessment | FRIA, AI impact assessment, DPIA | common | addresses EU AI Act, ISO/IEC 42001 |
policy-management | AI policy management | policy library, acceptable use policy | common | addresses ISO/IEC 42001, NIST AI RMF |
workflow-approvals | Review and approval workflows | intake workflow, approval workflow, use case approval | common | addresses NIST AI RMF |
post-market-monitoring | Post-market monitoring | model monitoring, incident reporting | common | addresses EU AI Act |
third-party-ai | Third-party AI assessment | supplier AI assessment, procured AI | common | addresses ISO/IEC 42001 |
| Connectors | ||||
int-jira | Jira | Jira integration | ||
int-azure-devops | Azure DevOps | ADO integration | ||
int-mlflow | MLflow | MLflow model registry | ||
int-databricks | Databricks | |||
int-sagemaker | AWS SageMaker | SageMaker | ||
int-slack | Slack | |||
int-teams | Microsoft Teams | Teams notifications | ||
int-servicenow-grc | ServiceNow GRC | export controls and evidence to ServiceNow GRC, ServiceNow integration | ||
int-collibra | Collibra | data catalog lineage import | ||
int-sap-grc | SAP GRC | SAP GRC connector | ||
| Certifications and assurance | ||||
cert-iso-42001 | ISO/IEC 42001 certification | AI management system certification | common | addresses ISO/IEC 42001 |
AI Securityai-security10 capabilities · version 0.1
Illustrative vocabulary for AI security platforms, written for the MVP from public frameworks (OWASP Top 10 for LLM applications, MITRE ATLAS, NIST AI RMF). A light category: listings and vocabulary only.
Regulations and frameworks: OWASP Top 10 for LLM applications (owasp-llm), MITRE ATLAS (mitre-atlas)
| Id | Capability | Also called | Expected | Links |
|---|---|---|---|---|
| AI threat protection | ||||
prompt-injection-defense | Prompt injection detection | prompt injection, jailbreak detection, jailbreak protection | must | addresses OWASP Top 10 for LLM applications |
data-leakage-prevention | Sensitive data leakage prevention | PII redaction, data loss prevention for LLM, DLP for AI | must | addresses OWASP Top 10 for LLM applications |
runtime-guardrails | Runtime guardrails for LLM applications | AI firewall, LLM firewall, guardrails | must | addresses OWASP Top 10 for LLM applications |
agent-tool-security | Agent and tool call security | MCP security, agent permissions, tool call monitoring | common | addresses OWASP Top 10 for LLM applications |
| AI security posture | ||||
model-scanning | Model file scanning | model serialization scanning, malicious model detection, pickle scanning | common | addresses MITRE ATLAS |
ai-red-teaming | Automated AI red teaming | adversarial testing, LLM red teaming, penetration testing of AI | must | addresses MITRE ATLAS, OWASP Top 10 for LLM applications |
shadow-ai-discovery | Shadow AI discovery | discover AI usage, unsanctioned AI, AI asset discovery | common | |
ai-spm | AI security posture management | AI-SPM, AI posture management | common | |
| Connectors | ||||
int-siem | SIEM integration | Splunk, Microsoft Sentinel, SIEM export | ||
int-soar | SOAR integration | security orchestration | ||
Sales Force Automation and CRMcrm10 capabilities · version 0.1
Illustrative vocabulary for CRM and sales force automation, written for the MVP from common CRM RFP question banks. A light category: listings and vocabulary only.
| Id | Capability | Also called | Expected | Links |
|---|---|---|---|---|
| Sales | ||||
contact-account-management | Contact and account management | accounts and contacts, customer records | must | |
opportunity-pipeline | Opportunity and pipeline management | sales pipeline, deal stages, opportunity management | must | |
sales-forecasting | Sales forecasting | forecast, revenue forecasting | must | |
cpq | Configure, price, quote | CPQ, quote generation | common | |
crm-ai-assistant | AI sales assistant | generative AI for sales, AI email drafting, copilot for sales | common | |
| Service and marketing | ||||
case-management | Service case management | ticketing, customer service cases, support cases | common | |
marketing-automation | Marketing automation | email campaigns, lead nurturing | common | |
| Connectors | ||||
int-erp | ERP integration | SAP S/4HANA, Oracle ERP, Microsoft Dynamics ERP | ||
int-email-calendar | Email and calendar sync | Outlook sync, Gmail sync, calendar integration | must | |
int-cti | Telephony integration | CTI, call logging | ||