Skip to main content

Sales Domain Ontology

Business Domains
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 11 October 2026
Audio Overview
FLOW ALGEBRA
TITLE: Sales Domain Ontology
VERSION: 1.0
DOMAIN: Business Domains / Sales
SOURCE_URL: https://kirethresearch.org/booksai-core/ontologies/domain-ontologies/business-domains/sales-domain-ontology.html
AUTHORS: Mark Higgins — Sky (Recursive AI)
STATUS: Domain-based draft; source page content not independently verified.

flow "SalesDomainOntology" v1.0

# PURPOSE
# Represent sales actors, processes, commercial transactions, performance,
# and evidence-based relationships as typed, traceable semantic structures.

ENTITY_TYPES:
  Organisation: {id: str, name: str, sector: str?, jurisdiction: str?}
  SalesTeam: {id: str, organisation_id: str, name: str}
  SalesRepresentative: {id: str, team_id: str?, role: str?}
  Prospect: {id: str, type: enum[person,organisation], consent_status: str?}
  Customer: {id: str, type: enum[person,organisation], lifecycle_stage: str?}
  Lead: {id: str, prospect_id: str, source_id: str?, created_at: datetime, status: str}
  Opportunity: {id: str, customer_or_prospect_id: str, stage: str, value: decimal?, currency: str?, expected_close: date?}
  Product: {id: str, name: str, category: str?}
  Service: {id: str, name: str, category: str?}
  Offer: {id: str, item_ids: list[str], price: decimal, currency: str, valid_until: date?}
  Quote: {id: str, opportunity_id: str, offer_id: str, issued_at: datetime, status: str}
  Order: {id: str, customer_id: str, quote_id: str?, total: decimal, currency: str, status: str}
  Contract: {id: str, parties: list[str], start_date: date?, end_date: date?, status: str}
  Invoice: {id: str, order_id: str?, amount_due: decimal, currency: str, due_date: date?, status: str}
  Payment: {id: str, invoice_id: str, amount: decimal, currency: str, received_at: datetime?}
  SalesActivity: {id: str, actor_id: str, target_id: str, activity_type: str, timestamp: datetime}
  SalesChannel: {id: str, channel_type: str}
  SalesCampaign: {id: str, channel_ids: list[str], start_date: date?, end_date: date?}
  SalesMetric: {id: str, metric_name: str, value: decimal, period: str, population: str?, method: str?}

RELATIONSHIP_TYPES:
  belongs_to( SalesRepresentative, SalesTeam )
  operates_within( SalesTeam, Organisation )
  originates_from( Lead, SalesChannel | SalesCampaign )
  represents( Lead, Prospect )
  qualifies_as( Lead, Opportunity )
  managed_by( Opportunity, SalesRepresentative )
  concerns( Opportunity, Product | Service )
  proposes( Quote, Offer )
  associated_with( Quote, Opportunity )
  accepted_into( Quote, Order )
  placed_by( Order, Customer )
  governed_by( Order, Contract )
  billed_by( Order, Invoice )
  settled_by( Invoice, Payment )
  records_interaction( SalesActivity, Prospect | Customer | Opportunity )
  measured_by( SalesCampaign | SalesTeam | SalesChannel, SalesMetric )

STAGE_MODEL:
  lead -> qualified -> discovery -> proposal -> negotiation -> won | lost
  constraints:
    - Stage transitions require a recorded event and timestamp.
    - A won opportunity is not automatically a paid invoice.
    - A lost opportunity does not imply customer dissatisfaction.

INFERENCE_RULES:
  R01:
    IF Lead.status == "qualified" AND evidence_of_need == true
    THEN candidate(Lead, Opportunity)
    CONFIDENCE: conditional; dependent on qualification evidence
  R02:
    IF Quote.status == "accepted" AND Order.quote_id == Quote.id
    THEN linked_sale(Quote, Order)
    CONFIDENCE: high if identifiers and timestamps are validated
  R03:
    IF sum(valid_payments(Invoice)) >= Invoice.amount_due
    THEN candidate_status(Invoice, "paid")
    CONSTRAINT: verify currency, refunds, credits and reconciliation
  R04:
    IF opportunities_won and opportunities_closed are known
    THEN win_rate = opportunities_won / opportunities_closed
    CONSTRAINT: opportunities_closed > 0; same period and cohort
  R05:
    IF sales_revenue and number_of_orders are known
    THEN average_order_value = sales_revenue / number_of_orders
    CONSTRAINT: number_of_orders > 0; consistent tax/refund treatment
  R06:
    IF pipeline_value and stage_probabilities are validated
    THEN weighted_pipeline = sum(value_i * probability_i)
    CONSTRAINT: estimate only, not guaranteed future revenue

SEMANTIC_EQUIVALENCE:
  - ["sales lead", "lead"] : context_dependent
  - ["sales opportunity", "opportunity"] : context_dependent
  - ["purchase order", "sales order"] : NOT_ALWAYS_EQUIVALENT
  - ["revenue", "cash received"] : NOT_EQUIVALENT
  - ["customer", "prospect"] : NOT_EQUIVALENT
  - ["conversion rate", "win rate"] : NOT_ALWAYS_EQUIVALENT

CONFIDENCE:
  fields: [score, method, evidence_count, evidence_quality, uncertainty]
  rules:
    - Do not assign numerical certainty without calibration or evidence.
    - Distinguish observed transactions from estimates and forecasts.
    - Flag missing dates, duplicated leads, and ambiguous attribution.

PROVENANCE:
  required: [source_system, source_record_id, observed_at, transformation, version]
  optional: [author, consent_basis, validation_status, jurisdiction]
  constraints:
    - Preserve source lineage and correction history.
    - Minimise personal data; respect consent, access controls and retention policies.

FLOW_HASH:
  algorithm: SHA-256
  input: canonical_serialisation(ontology_version, entity_types, relationships, rules)
  note: Calculate at execution time; no fabricated hash value.

UPDATE_MODEL:
  mode: versioned_incremental
  triggers: [new_lead, opportunity_change, quote_change, order_change, payment_change, schema_revision]
  actions: [validate, reconcile, retain_provenance, recompute_derived_metrics, update_flow_hash]
  safeguards: [idempotency, audit_log, conflict_detection, rollback]

AI_CONSUMPTION:
  representation: typed_semantic_graph
  supported_tasks: [entity_resolution, sales_pipeline_analysis, metric_explanation, relationship_traversal, anomaly_detection]
  output_requirements: [source_attribution, confidence, time_window, assumptions, uncertainty]
  restrictions:
    - No invented customer facts, transactions, outcomes or forecasts.
    - Do not infer sensitive personal characteristics from sales data.
    - Human review required for consequential commercial decisions.

END FLOW ALGEBRA
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ