cuopt_on_nemoclaw/openclaw-skills/tabular-optimization-ingestion/SKILL.md
Use when a user provides CSV, Excel, JSON-like tables, or similar structured data and asks a question that may become an LP, MILP, QP, or routing problem.
npx skillsauth add nvidia/cuopt-examples tabular-optimization-ingestionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill when the user provides raw or semi-structured data and asks a question that may require optimization.
The purpose of this skill is to bridge the gap between messy uploaded data and solver-ready model construction.
This skill does not solve the optimization problem itself. It inspects the data, infers likely modeling roles, and identifies what still needs clarification.
This skill refines the optimization interpretation using the uploaded data; it does not replace the earlier intent decision unless the data clearly contradicts it.
Users do not upload:
They upload things like:
This skill turns raw tables into a candidate optimization interpretation.
After inspection, produce a compact working interpretation containing:
For each uploaded source, determine:
Examples:
Always state the candidate row meaning before modeling from it.
Inspect column names and values for roles such as:
Objective-like fields:
Constraint-like fields:
Identifier / relationship fields:
Infer what the model is probably deciding.
Examples:
Do not overcommit when the data supports multiple plausible decisions. Note the candidates and ask one focused question if needed.
Use common table patterns:
Typical signs:
Typical signs:
Typical signs:
Before handing off, identify the smallest set of unanswered questions that block valid model construction.
Examples:
Do not ask broad generic questions if the data already strongly suggests the answer.
Summarize findings compactly:
This summary should be short enough that a downstream formulation skill can use it directly.
Use these heuristics carefully. They guide interpretation but do not prove it.
cost, unit_cost, shipping_cost, expense → likely minimization coefficientprofit, margin, contribution → likely maximization coefficientdistance, travel_time, duration → likely routing objective term or service constraintrisk, variance, covariance → likely QP signalcapacity, available, limit, max_* → upper bound / resource constraintdemand, required, need → demand fulfillment or service requirementmin_*, minimum_* → lower bound or service ruleTreat MILP as likely when the data or request suggests:
Treat routing as likely when the core question depends on path construction, not merely allocation.
Signs include:
Duplicate values in a foreign-key column across rows of a parent table usually signal a shared agent or resource — one entity serving multiple parents. Shared resources need a mutual-exclusion constraint that no other column states.
coach_id, driver_id, instructor_id, nurse_id, operator_id → shared agent; can serve only one parent at a timemachine_id, bay_id, tool_id → shared resource; can host only one job at a timedistinct_values < row_count → check whether simultaneous assignment is allowedA *_unavailability (or *_availability) table documents known absences; duplicated FK values document implicit conflicts. Treat both as constraint sources. Concrete check: for every FK-looking column in a parent table, compare distinct value count to row count, and surface the column when distinct < rows.
Files include:
products.csv with columns like product, profit, labor_hours, steel_unitscapacity.csv with columns like resource, availableLikely interpretation:
products.csv = one productcapacity.csv = one resource limitFiles include:
customers.csv with customer_id, demand, time_window_start, time_window_endvehicles.csv with vehicle_id, capacitytravel_times.csv with origin/destination or matrix-style travel timesLikely interpretation:
File includes:
sales_history.csv with order_id, date, region, revenue, units_soldLikely interpretation:
cost and capacity is automatically a valid optimization model.If the data suggests LP / MILP:
numerical-optimization-formulationcuopt-numerical-optimization-api-python (or
cuopt-numerical-optimization-api-cli for MPS inputs)If the data suggests QP:
numerical-optimization-formulationcuopt-numerical-optimization-api-pythonIf the data suggests routing:
routing-formulationcuopt-routing-api-pythonIf mode selection is still needed because replayability, audit, export, or reuse may matter:
optimization-mode-router before deep model constructionIf optimization intent itself is still uncertain:
optimization-intent-routerThis skill succeeds when the downstream model-building step can proceed with either:
It fails when it produces a vague restatement of the table without narrowing the modeling interpretation.
testing
Use when a user asks a question that may be answered by solving an optimization problem from uploaded or provided data, and you need to decide whether to proceed directly to cuOpt or preserve a structured reusable model artifact.
data-ai
Use when a user provides data and asks a natural-language business or planning question that may require optimization rather than simple analytics.
development
Use when a user uploads or provides data and asks a question that may be answered by optimization. This skill sequences optimization-intent-router, optimization-mode-router, tabular-optimization-ingestion, formulation skills, and cuOpt model-building skills.
development
Use after optimization intent and basic data interpretation are established, when the goal is to solve quickly by mapping data directly into cuOpt rather than building a replayable intermediate artifact.