Keelvar (platform)
Keelvar is a sourcing optimisation and autonomous sourcing platform: buyers run RFx events and auctions with lots, bid sheets and optimisation scenarios in Sourcing Optimizer, and Sourcing Automation bots run tactical events end to end from a requisition, handing awards back to the buyer's source-to-pay suite. Keelvar markets API-based integration with SAP Ariba, Coupa, JAGGAER and Ivalua, but publishes no self-service endpoint reference, so path-level detail is confirmed per tenant. composerID publishes an approved services or managed-service decision as the sourcing event Keelvar runs, writes the Intent ID as a fixed token in the event description, and records the event id linkage on its own side until a reference field is confirmed at onboarding.
The public API facts composerID's adapter relies on. Tenant-specific details (custom fields, picklists, approval chains) are confirmed during connection and folded into the MappingProfile.
| Authentication | Not publicly documented. Keelvar describes API-based integration with the major source-to-pay suites and ships packaged connectors for them; credentials and the token model are issued per tenant at onboarding. Assume per-tenant token-based auth (indicative until confirmed at onboarding). |
|---|---|
| API style | REST over JSON per Keelvar's integration material; no public OpenAPI document or endpoint reference is evident, so no paths are stated here. |
| Base URL | Per tenant, provisioned by Keelvar at onboarding (not publicly documented). |
| Objects | sourcing events (RFI, RFQ, RFP, auctions), lots and items, bid sheets and bids, suppliers and invitations, optimisation scenarios and awards, Sourcing Automation bot runs |
| Events / webhooks | No public webhook or event-subscription specification is evident. Keelvar's own connectors push award results into the buyer's source-to-pay suite; any event-out from Keelvar to composerID is indicative until confirmed at onboarding. |
| Rate limits | Not publicly documented; confirm per tenant at onboarding. |
No developer portal evident. We could not find a public self-service developer portal or endpoint reference for this platform; the API posture above is drawn from the vendor's own integration material and is confirmed at onboarding.
“Docs confidence” describes how deterministic our mapping templates can be before we connect to a tenant. Even with public docs, implementations vary, especially around custom fields, approval flows and object extensions.
Deterministic mapping
Common Workforce Model fields map to known API fields. Best for standard objects (requisitions, assignments, timesheets, POs).
Tenant discovery
composerID can scan tenant configuration (custom fields, picklists, required fields) where the platform permits it, then generate a tenant‑specific MappingProfile.
Enrichment loop
If the target platform requires a field the Intent record doesn't yet have, composerID emits an enrichment_request back to the intake layer.
An opinionated baseline. The platform adapter enforces additional requirements via preflight. “Tenant required” fields are discovered during connection and added to the MappingProfile.
| Object | Canonical fields | Platform target | Required status | Notes |
|---|---|---|---|---|
| Sourcing event (services RFx) Publish the decided services demand as the event Keelvar runs |
service_category, sow.summary, deliverables[], budget, start_date, end_date, supplier_shortlist[] | Sourcing event (Sourcing Optimizer) or a Sourcing Automation bot run | Required | Event templates, bid sheets and lot structure are tenant-configured; event creation by API is indicative until confirmed at onboarding |
| Intent ID correlation Carry the Intent ID |
intent_id -> event.description (fixed token), intent_version | Sourcing event: description (event name suffix as fallback), with the event id linkage recorded by composerID | Required | Link-only carrier: no stock external reference or custom event field is publicly documented, so the token is readable in the event but not filterable. Deep link https://{tenant_host}/events/{external_id} (illustrative) |
| Supplier invitations Who is asked to bid |
supplier_name, p2p_supplier_id, contact, incumbent | Event supplier list / invitations | Tenant required | The supplier master usually mirrors the source-to-pay suite through Keelvar's connector; composerID passes the shortlist from the decision, not new supplier records |
| Award (read-back) Close the loop |
awarded_supplier, award_amount, lots[], event_status | Award / scenario result on the event (read), or the PO or contract Keelvar's connector creates in the source-to-pay suite | Read scope only | Keelvar writes awards to the source-to-pay suite through its own connectors; a composerID read of award results is indicative until confirmed at onboarding |
Idempotency & drift: publish + reconcileExpand
Publish operations are idempotent using a deterministic key {intent_id}-{intent_version}-{target_system}. Because humans can change records inside the platform, composerID supports reconciliation: it compares the platform record snapshot to the canonical intent and flags drift.
Real deployments rely on program-specific custom fields (for compliance, approvals, GL coding, rate rules or supplier constraints). composerID is designed to generate tenant‑specific mappings rather than forcing you to redesign your intake.
How scanning works
High-level flow
What gets produced
Portable artefacts
Important: where this platform is tenant-definedExpand
Keelvar's public material describes integration capability, not an endpoint reference: base URL, credentials, the token model, rate limits and any event-out mechanism are provisioned per tenant at onboarding, and every path-level claim here is indicative until then. Event templates, bid sheets, lot structure and supplier lists are tenant-configured, and awards flow to the buyer's source-to-pay suite (SAP Ariba, Coupa, JAGGAER or Ivalua) through Keelvar's own connectors, so the PO or contract of record lives there, not in Keelvar. At onboarding, check whether the tenant's event template exposes a reference or custom field; if it does, move the Intent ID off the description into that field and switch the carrier from link to stamp.
Use this page alongside the API + Schemas docs to implement: destination connection, preflight validation, publish, webhook back-sync and reconciliation.