Costelinha, the gift-sniffing dog
Tell it who you're buying for and how much you can spend. An AI reads each person's taste, and an exact optimizer picks the best basket inside one shared budget: one gift or a full outfit per person, from a real catalog of 2,776 Brazilian fashion products. Every basket here was solved ahead of time to proven optimality, so the demo answers instantly.
Understand exactly what you're looking at
The theory, how the data is acquired and cleaned, how to read the result — and what BIS would do for you next.
Under the gift list is a grid of yes-or-no switches: this person, this product, buy it or not. The rules are few. The basket stays inside the shared budget, everyone gets at least one gift, and each person gets at most one piece per category. The objective is total fit, which makes this a multidimensional knapsack. An exact solver doesn't guess at it; it proves the best basket.
A full look adds two ideas: pieces for the same person have to go together, and looks can be coordinated across the family. Both are products of two decisions, so they are quadratic terms, linearized the standard way to keep a binary linear program. For the five-person family it has 2,110 variables and 3,897 constraints, and OR-Tools CP-SAT closes it with a zero gap in about half a second.
The catalog is a real one-time snapshot of two Brazilian stores, Hering and Lojas Pompéia: 2,776 products, collected in one polite pass that respects robots.txt, without photos. A product starts as a name and a price. Gemini reads it and writes twelve attributes, such as which part of a look it is, its style, palette, formality, season and occasion.
The people are fictional. The conversation turns a sentence (“mom, dad, our fourteen-year-old, six hundred reais”) into a structured profile with relation, age, sizes and taste, and you confirm it before anything is searched.
Hard filters come first (gender, age range, size, price), then local multilingual embeddings build a shortlist per person. Without that step the “do these two pieces go together” terms explode: a 50,000-product catalog has over a billion pairs.
An optimizer maximizes whatever you hand it, noise included, so the taste score was checked before it went into the objective. TypeSafe's Jev answers a typed question, “would this person like this product as a Christmas gift?”, with a calibrated probability. Against an independent judge model grading 180 person-product pairs, its ranking agreed with a Spearman correlation of 0.85. On the 93 hard pairs that survive the filters it scored 0.73 to 0.79, where a semantic embedding managed 0.32. A judge model stands in for people; it isn't the real thing.
Watch the budget bar. The story starts with a family of three on R$ 600, then the daughter brings her best friend, then the uncle nobody has seen in years confirms. Each change is a new instance and the whole basket is re-planned: the proven best each time, never a patch on the last one. As guests arrive, the slack shrinks from R$ 160 to R$ 45.
Then switch the goal. Economy finds the cheapest basket where every gift still clears a minimum fit, and covers the same five people for R$ 163.60. Full look dresses everyone in coordinated outfits for R$ 598.17 of the R$ 600. The data and the model stay the same; only the objective changes. Each basket also says why every gift was picked, written by Gemini from the product's real attributes.
The full write-up, with the figures: Your Christmas gift list is an optimization problem.
None of this is really about Christmas. Swap the family for six employees and a R$ 1,200 gifting budget capped at R$ 200 a head, and economy mode covers all six for R$ 179.40. Swap the gifts for shifts, vehicles, crews or credit lines and it is the same shape: yes-or-no choices competing for shared resources.
That is what BIS builds: a model for the judgment, a solver for the optimum, and the engineering to run both in production. Here the optimizer runs as a project on the Harumi platform, with versioned models, a history of every run and an API for the results. Bring the decision that eats your week to a free call and we'll show you its shape.
This preview runs on real public data. Yours would run on your data.
We start with a free 30-minute call, prove the value on a focused POC with your real data, then ship it — in our environment or deployed into yours.