← all projects

$ jssp-scheduler

done
2026
pythonor-toolscp-satpydantic-aillm

Built during my internship, this is a flexible job-shop scheduler with a deliberate split of responsibilities: a CP-SAT solver (OR-Tools) generates the actual schedules, while an LLM layer only translates natural-language change requests into validated, typed constraints — it never schedules directly.

Why this architecture

LLMs are unreliable on constraint-satisfaction problems like scheduling — they produce confidently wrong answers. So the design keeps the LLM as a translator: it turns “push order 12 to Friday” into a structured constraint, which is validated for referential integrity before the solver ever sees it. The math stays deterministic; the language layer just makes it accessible.

What I took from it

The core lesson was knowing where AI belongs in a system — using an LLM for the fuzzy natural-language part and a proper solver for the part that has to be correct. That “cost of being wrong” framing shaped the whole design.

(Built on proprietary internship data, so this describes the approach rather than showing the system itself.)