About

ProjectOpen source · Web app

Yukti

By Sachin Gupta
Portrait of Sachin Gupta rendered in binary
Yukti — architecture diagram

Credit-card portfolio optimization via mixed-integer linear programming, with solver-certified optimality and structurally verified explanations that cite only solver-emitted evidence.

Yukti is a credit-card portfolio optimizer built on mixed-integer linear programming (MILP). It selects up to 3 cards from a 70-card US catalog and allocates spending across 6 categories to maximize net annual reward value, subject to piecewise-linear reward caps, goal-dependent multi-currency valuation, and fee constraints.

Certified optimality

The MILP achieves solver-certified optimality on every benchmark instance, independently confirmed by exhaustive enumeration. Rather than a single solver, Yukti ships 13 optimizer implementations (exact, heuristic, metaheuristic, and proxy baselines) behind one common Optimizer interface, so results can be compared and the exact solver validated against the rest.

Verified explanations

The part I care about most is explainability you can trust. A four-gate structural claim verifier ensures every explanation cites only evidence the solver actually emitted, backed by SHA-256-digested evidence graphs. When AI narration is enabled it only rephrases those verified claims; the optimization itself is always deterministic MILP. Turn the AI off and the system runs fully on template-based deterministic explanations.

Benchmark and structure

The catalog covers 19 reward currencies and 10 issuers with checksummed definitions. RewardsBench v2 evaluates 200 profiles across 450 instances with paired statistical analysis. The codebase is split into clean modules (core domain, explanation/verifier, catalog, engine, benchmark harness, REST API, React UI) with OCP interfaces enforced by ArchUnit.

Built with Java 21, OR-Tools CBC, and a React + TypeScript frontend. Released under Apache 2.0 with a citable release archived on Zenodo.

Related