June 2026 · 3 min
Thirty markets, one portfolio number
- CSVault
- Data
- Product design
A Counter-Strike inventory can have a price on dozens of markets at once. Those numbers are not interchangeable: sources format items differently and make different assumptions about price and fees.
CSVault started with a product question rather than a chart question: what number is useful when someone wants to understand the collection they already own?
Keep source differences out of the interface
I chose to normalize market data behind one pricing layer. The portfolio view should not need a separate branch for every source, and a filter should not change behavior because one marketplace named an item differently.
That boundary lets the interface stay focused on the jobs a trader actually came to do: scan the collection, find a skin, compare positions, and maintain a wishlist.
Read-only means read-only
Steam sign-in exists to identify the inventory, not to request trade authority. Keeping that permission narrow was both a security decision and a product decision. The value of the tool is portfolio visibility; trade access would add risk without helping that job.
What I would measure next
The live product proves the workflow, but the next useful evidence is behavioral: how quickly someone can locate an item, how often filters are used, and whether the normalized view replaces a spreadsheet for repeat visitors.
The main design decision remains intentionally boring. Normalize the messy inputs once, then let the product speak in one consistent language.
Building something in this space? Email me.