Sponsorship contracts describe inventory in legal language while computer vision produces timed exposure events. Sponsorlytix used large language models to bridge those worlds so fulfilment reports read both the contract and the ledger.
Eagle Eye kept humans in the loop for clause confirmation while LLMs drafted structured inventory maps at scale across sports. Measured detections from Brand Detection and Placement Detection feed the join; analytics factors explain variance; Koba surfaces exceptions for commercial review.
Problem framing for rights holders and brands
A clause may promise "pitch-side LED in primary camera packages during open play" without naming detector asset codes. Ops teams previously translated those phrases by hand. That process slowed multi-property campaigns spanning football, tennis, combat, and basketball.
Brands and rights holders need variance reports that cite clause text beside measured dwell, clarity, and visibility — not a spreadsheet archaeology project after every match weekend.
- Clauses must map to ontology asset classes the measurement store already understands.
- Camera constraints and time windows need typed extraction, not free text alone.
- Ambiguous "premium package" language must escalate — never silently invent fulfilment.
- Multi-sport brand packages require one reconciliation grammar across properties.
Methodology — clause extract, validate, join, HITL
Contracts enter as clause segments with sport, property, and term metadata. An LLM extracts asset class, camera constraints, time windows, and brand identifiers into a typed schema. A validator checks that every field maps to known ontology entries before any join runs.
Measured exposures join to those expectations by brand, asset, and window. Variance reports flag under- and over-delivery for commercial review. Ambiguous clauses escalate to operators in Koba before they affect partner dashboards. Turtul will extend structured vision+language review over contested clips as it arrives.
Multi-property campaigns share one ontology across football LED ribbons, tennis backdrops, and basketball courtside strips. The LLM is instructed to emit Sponsorlytix asset classes only; unknown phrases set needs_hitl rather than inventing a parallel taxonomy.
Detection panels — what the ledger reconciles against
Reconciliation is only as strong as the exposure events underneath. The panels below show the inventory-grade detections that feed the join — LED ribbons, boards, and kit marks that contract clauses typically name.


Real-world reconciliation examples
- Football LED ribbon clauses joined to ribbon exposure during open play.
- Tennis backdrop minimums checked against changeover camera packages.
- Combat cage LED guarantees reconciled per bout on a fight card.
- Multi-sport brand packages spanning football and basketball inventory classes.
- Clauses with "hero moment" language routed to HITL before auto-fulfilment.
Results discussion (illustrative)
Most clauses map cleanly when ontology coverage is strong. Edge language around "premium packages" or "hero moments" needs operator confirmation. Sponsorlytix surfaces those clauses explicitly rather than forcing a silent guess. The chart is a schematic handling mix — not a production accuracy claim.
Code — structured extraction and variance join
type InventoryExpectation = {
brandId: string;
assetClass: string;
cameraConstraint?: string;
window: { start: string; end: string };
minVisibility?: number;
};
async function mapClause(llm: LlmClient, clause: string): Promise<InventoryExpectation> {
return llm.structured(clause, {
schema: "InventoryExpectation",
instruction:
"Extract sponsorship inventory expectations using the Sponsorlytix ontology. "
+ "Leave ambiguous premium/hero language for HITL; do not invent asset codes.",
});
}
function variance(expected: InventoryExpectation, measured: Exposure[]) {
const hit = measured.filter((e) =>
e.brandId === expected.brandId &&
e.assetClass === expected.assetClass &&
inWindow(e, expected.window)
);
const delivered = hit.reduce((s, e) => s + e.factors.visibility * e.factors.time, 0);
return { expected, delivered, delta: delivered - (expected.minVisibility ?? 0) };
}CLAUSE_SCHEMA = {
"type": "object",
"required": ["brand_id", "asset_class", "window"],
"properties": {
"brand_id": {"type": "string"},
"asset_class": {"enum": ["led_ribbon", "digital_board", "backdrop", "jersey", "cage_led"]},
"camera_constraint": {"type": ["string", "null"]},
"window": {"type": "object"},
"needs_hitl": {"type": "boolean"},
},
}Takeaways
LLMs turn contract prose into measurable expectations when ontology validation stays strict. Sponsorlytix runs that bridge so commercial teams compare promises to Eagle Eye ledgers without spreadsheet archaeology.
Ambiguity becomes a review queue in Koba, not a silent gap in the report.