Inspiration
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for Predictoor
Inspiration
Damm's procurement team buys hundreds of millions of euros of raw materials every year. The decision of when to buy is made on gut feel and supplier relationships. We wanted to know if that decision was actually answerable with data — and if the answer could be delivered in a format a procurement manager would use on a Monday morning.
What it does
SmartBuy outputs a single procurement recommendation — BUY NOW / HEDGE / MONITOR / WAIT — with a specific quantity, a deadline, and an estimated cost saving. It covers barley, aluminium, PET plastic, and energy. The recommendation is backed by eleven signals: seven from live market data and four from Cala's supply chain knowledge graph.
How we built it
A Streamlit dashboard with four tabs. The signal engine computes a weighted score across price momentum (20d and 60d), volatility, 52-week range position, energy cost pressure, USD/EUR FX impact, and CFTC hedge fund net positioning. Cala's query API adds supply chain intelligence — we run Cala QL queries like companies.industry=malting to pull real entities (Boortmalt, Soufflet, AB InBev) and classify them into scored signals via OpenAI gpt-4o-mini. Those signals flow into the same engine as the market data. For barley, Damm can upload their internal purchase history and get a 12-week price forecast from a blended OLS + Holt smoothing model.
Challenges we ran into
Making Cala a genuine input rather than a decorative layer. It's easy to fetch text from an API and display it next to a chart and call it "AI-powered." We wanted Cala to actually move the recommendation — which required the Cala QL → LLM → scored signal pipeline. We also spent time assuming the Cala knowledge and search endpoints were down before realising they just take 40–90 seconds per call and our timeout was set to 20 seconds.
Accomplishments that we're proud of
The signal delta. When Cala's knowledge graph data changes the recommendation — say from HEDGE to BUY NOW — the UI shows exactly why: "Market-only score +0.31 → +0.54 after Cala knowledge signals." That makes the value of the knowledge graph tangible and auditable, not a black box.
What we learned
Cala QL returns real supply chain structure. companies.industry=malting gives you the actual maltsters — companies with capacity figures, locations, ownership — that sit between barley farmers and breweries. That's market concentration data, not text summarisation. When Cala's relationship traversal is fully available, you won't need an LLM to classify signals at all — the graph will express them directly as typed relationships.
What's next for SmartBuy
Full Cala graph traversal when the relationship API is production-ready — replacing the LLM classification step with native graph signals. MATIF barley futures replacing the wheat proxy. Alert integrations so procurement managers get a push notification when the signal crosses a threshold, not just when they remember to open the dashboard. And expanding beyond four commodities to Damm's full procurement portfolio.
Built With
- cala-ql-query
- cftc-(commitments-of-traders-public-data)
- finance
- httpx
- numpy
- openai-(gpt-4o-for-recommendation-narrative
- pandas
- plotly
- price
- scikit-learn
- streamlit
- via
- yahoo
- yfinance
Log in or sign up for Devpost to join the conversation.