What we need
- Aggregate prices for individual cards. This will primarily be used for sorting/visualization in the overview.
- Detailed pricing list for each individual card. This can be as fine-grained as we want: on a card condition or card variant level for example.
- Pricing information for the total collection value calculation. This is the most tricky part because of potential gaps in the pricing data (see issues and solutions).
Issues and solutions
Because price aggregation isn't a concern of the TCG Collector website, viewing price information must be limited to a single vendor. If price aggregation is needed, a separate vendor can be created for which the aggregated prices can be supplied to the website.
The list of vendors should be made available as a setting, from which users can choose their preferred vendor.
Doing currency conversions is a task that cannot be handled efficiently in realtime by the TCG Collector website. Therefore, the TCG Collector website needs to use a single base currency (preferrably USD). This means that all prices (for all vendors) that will be supplied to the website, need to use that currency.
Because all currencies are converted to a single base currency, prices will inevitably start to drift over time because of exchange rate fluctuations. This shouldn't be a big issue because the prices are expected to be updated on a daily basis. Prices that weren't updated for some time can be purged by a daily running task that checks for a threshold age.
An alternative solution would be to include the original currency and price in the data. This way, the TCG Collector website can periodically update the older prices using up-to-date exchange rate information if a certain age threshold is reached.
Total collection value price gaps
Collection information in the TCG Collector database is stored with card language and condition included. This means that we have the option to include pricing information on that level as well. However, gaps in the pricing information cannot be avoided. Additionally, a lot of vendors simply don't provide information at this level. Ironically, this means that the more detailed the pricing information is (on the card condition level), the less accurate the total collection value calculation will be.
A possible solution is to simply make up the missing data, but that kind of defeats the whole purpose of having detailed pricing information in the first place. A better solution is to use the aggregate card price to fill in the gaps where card variant, card language, or card condition pricing information is missing.