This is a submission for the Hacktoberfest Open-Source AI Challenge: Week 2 — Side Hustle
What I Built
SpotWise lets you research and paper-trade gold, silver and platinum using real price history.
It's for one specific person: a long-term saver who buys a little gold every month, buys more when the price dips, sells a little when it spikes, and is fed up with ad-filled price sites and doing the sums by hand. In India and the Gulf, where buying gold every month is normal, there are a lot of people like this.
- Charts for gold, silver and platinum in 13 currencies (INR, AED, USD, EUR, GBP…), with 1M–All ranges and 24k/22k purity. Switching metal, currency or purity keeps your zoom.
- Local prices per gram, with optional duty, premium and GST/VAT taken from effective-dated tax profiles. Rates change over time, and history should use the rate that applied then.
- Paper trades you enter yourself appear on the chart as buy/sell markers, with your position, average cost and realised/unrealised P&L. They're stored only in your browser.
- Ask SpotWise: type a plan in plain words, like "gold, 10000 a month for 5 years, buy double when 5% below average". SpotWise backtests it against plain monthly buying and explains the result. The backtest's trades are drawn on the chart next to yours.
Who would pay for it
- Jewellers and bullion dealers' websites that want a price-research widget they control: no per-query AI fees, no visitor data sent to a third-party LLM, and their own local tax rules.
- Personal-finance creators and newsletters that want to answer "would buying the dip actually have helped?" with real numbers instead of opinions.
- Savers themselves, for a small subscription, if it's ad-free and works in their currency and purity.
Demo
Live app: https://spotwise-6by5.onrender.com/
(It's on Render's free tier, so the first load can take a few seconds while the service wakes up.)
Gold 24k in INR per gram over the past year. Below the chart: Ask SpotWise, with example plans you can click, and Your paper trades, which draws your buys and sells on the chart.
It works on a phone too.
Code
abdullah85
/
spotwise
Entry for https://dev.to/challenges/hacktoberfest-week2-2026-10-12
SpotWise
Research and paper-trade gold, silver and platinum on real price history Built for the DEV Hacktoberfest Open-Source AI Challenge (Week 2, "Side Hustle").
SpotWise is for a long-term saver who buys gold monthly, buys more when prices are low and sells a little when they are high, and is tired of ad-filled price sites and doing the sums by hand.
What it does
- Charts for gold, silver and platinum in many currencies, with 1M/6M/1Y/3Y/5Y/All ranges tooltips, and metal / currency / purity (24k, 22k) switching that keeps your zoom.
- Price conversion to per-gram prices in your currency, with optional duty, premium and GST/VAT using effective-dated tax profiles (rates change; history stays correct).
- Paper trades you add yourself, drawn on the chart as buy/sell markers, with position, average cost and realised / unrealised profit and loss. Stored in your browser only.
- Ask SpotWise (AI): describe a plan in plain…
How I Built It
- Backend: FastAPI (Python). Price conversion, backtest engines, data validation and the AI layer are small, pure, tested modules.
- Frontend: React + TradingView Lightweight Charts (Apache-2.0, attribution kept on).
- Data: metals.dev price history, fetched by a resumable script that counts every call (the free plan allows 100 calls a month) and checks the data for gaps, zero prices and large jumps. Prices are stored in Neon Postgres and shown only inside the app, with credit to metals.dev. The repo contains no dataset and no keys.
- Deploy: one Render web service. FastAPI serves the built frontend and the API from the same URL.
The AI never does arithmetic
LLMs are bad at sums, and a finance tool can't get money wrong. So the model does only two jobs:
-
Text → JSON request. The model fills a JSON schema (
response_format: json_schema), and Pydantic bounds-checks the output. Model output is never trusted. -
Result → explanation. Plain code runs the backtest, then the model writes a short summary from a list of facts the code supplies. Every number in that summary must appear in those facts (
numbers_ok()). If it doesn't, SpotWise uses template text instead.
With no model configured, the app still works end to end, using a rule-based parser and the templates. That's also why a small, self-hosted open-weight model is enough: it only has to turn text into a structure and write a sentence, never reason about money.
The public demo currently runs without a model connected, so you'll see the built-in parser and template explanations there. Point SPOTWISE_LLM_URL at your own open-weight model server to switch the model on.
Why open innovation matters here
- The economics work. A bullion dealer's widget might answer thousands of questions a day. With a self-hosted open model the cost per question is basically zero, so it doesn't eat a jeweller's thin margins.
-
No lock-in. Any OpenAI-compatible server works (
SPOTWISE_LLM_URL,SPOTWISE_LLM_MODEL): llama.cpp, vLLM, Ollama. If a better small model comes out next month, you switch with a config change. - Privacy. What people ask, and how much they save each month, is personal financial information. It never has to leave the operator's server.
- Trust you can check. The code is MIT-licensed and the conversion maths is tested against fixed vectors, so anyone can confirm the numbers aren't made up.
Not financial advice
SpotWise is an educational tool that only does paper trading. Backtests use spot prices and ignore making charges, and past results don't predict the future.
Prices by metals.dev.


Top comments (0)