Tinderela
SC Trade Intel — a grounded AI trading assistant for Star Citizen.
Where do I sell this ore? What’s the best run for my ship and budget?
Tinderela answers traders’ questions in Portuguese or English with
live, verifiable market data — an MCP server, four specialised subagents
and a Discord bot running continuously on a Raspberry Pi, built end
to end with Claude Code.
No invented numbers. Every figure comes from a live tool call — with its age, source terminal and game version attached.
14MCP tools
4Specialised subagents
2Languages (PT & EN)
1 GBRaspberry Pi 3 it runs on
A research project with real users
Tinderela started after finishing Anthropic’s courses on building
with large language models. The goal: test whether the patterns those
courses teach — tool grounding, MCP, multi-agent decomposition, model
tiering, AI-assisted development — survive contact with a messy,
real-world data source and a real user community.
The domain is Star Citizen’s player-driven commodity economy.
Prices are crowdsourced by players and reported to
UEX Corp, which makes the data
plentiful but also stale, inconsistent and occasionally wrong — exactly
the environment where an ungrounded language model fails silently,
producing plausible prices from training data that is months out of
date. The users are a group of friends the author plays with, whose
recurring questions (“where do I sell this ore”, “what’s
the best run for my ship and budget”) provided a natural problem
statement and a genuine, bilingual field test.
The result is a working system: every price, route and profit figure the
assistant states is traceable to a live tool call, and every
answer carries the data’s age, source terminal and game version so
players can judge freshness themselves.
Architecture
Five layers, each independently testable.
🗄️
UEX client & cache
A typed TypeScript client with a local rate limiter honouring the community API’s quotas, retries, and an SQLite cache with per-data-class TTLs. Every cached record stores its fetched_at timestamp — provenance is preserved at the lowest layer, not reconstructed later.
🔌
MCP server — 14 tools
Prices, routes, mining and trust tools, all validated with Zod schemas on input and output. Errors are explicit objects, never silent fallbacks, and entity resolution is bilingual so players can ask in Portuguese or English.
🤖
Agent layer
Four subagents — route-planner, mining-advisor, market-analyst and data-validator — each with a system prompt, an explicit tool allowlist and a model assignment, plus slash commands for the most common requests.
💬
Interfaces
Interactive Claude Code sessions; a Discord bot answering free-text questions through the Anthropic tool runner, with threaded conversations and per-user cooldowns; and a zero-LLM market scanner for the recurring “anything interesting today?”
🍓
Raspberry Pi deployment
A multi-stage Docker build with two deploy modes — building natively on the Pi, or cross-building under QEMU and streaming the image over SSH — with the cache on a persistent volume and a 512 MB memory cap.
📏
Honesty as design rules
Heuristics are labelled as estimates in the tool output itself. Cargo handling is reported, never derived. Illegal commodities are flagged with jurisdiction risk. Suggested loads are clamped to the ship’s actual capacity.
Nine hypotheses under test
Each idea from the courses, stated as a hypothesis with a validation criterion.
H1
Grounding eliminates invented data
An assistant required to obtain every figure from a tool call in the current session will not state stale or fabricated numbers.
H2
Provenance makes crowdsourced data usable
Answers phrased as “last reported at” — never “the price is” — earn more trust, not less, by admitting uncertainty.
H3
MCP is a practical integration layer
One server, written once, serves Claude Code sessions, four subagents and a Discord bot without modification.
H4
Restricted subagents improve reliability
An agent that cannot call the wrong tool cannot produce the wrong class of answer — smaller error surface, auditable behaviour.
H5
A validation gate catches what one pass misses
Every draft with prices, routes or profits passes through a data-validator that drops stale game versions and flags suspicious deviations.
H6
Model tiering controls cost
Mechanical checking runs on a small, fast model while analytical work runs on a stronger one — without hurting answer quality.
H7
Not every problem needs a model
A zero-LLM market scanner covers the deterministic use case in pure TypeScript: no tokens, ~6 s cold, ~0.1 s warm.
H8
Agents can run on minimal hardware
The whole system runs continuously for the friend group on a Raspberry Pi 3 with 1 GB of RAM and a 512 MB memory cap.
H9
AI-assisted development is viable end to end
The entire codebase was built with Claude Code under an explicit, checked-in rules file — quality enforced by strict typing, schemas and offline tests.
The most transferable finding
Grounding and provenance work — but only when enforced
structurally. The decisive mechanisms were rules the model cannot
bypass: schemas at every boundary, a validator gate between draft and
delivered answers, and tool output that carries its own metadata —
rather than prompt-level exhortations.
“Honesty in an AI system is a property of its architecture —
not of its prompts.”
Read the full project report →