Files
GearBox/.planning/phases/33-currency-system/33-DISCUSSION-LOG.md

5.2 KiB

Phase 33: Currency System - Discussion Log

Audit trail only. Do not use as input to planning, research, or execution agents. Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.

Date: 2026-04-13 Phase: 33-Currency System Areas discussed: Data model & source currency, Conversion strategy, User experience & display, Catalog & sharing implications


Data Model & Source Currency

Core pricing model

Option Description Selected
Per-item source currency Add priceCurrency column alongside priceCents
Per-user base currency only All prices assumed in user's currency
Everything stored as USD Normalize to USD on entry
Market-specific pricing Prices are market-specific, not converted. Different markets have different UVP/MSRP

User's choice: Market-specific pricing — not just exchange rate conversion. A €2,000 bike in Germany may be £2,200 in the UK because that's the UK market price, not a conversion. Notes: User emphasized that German UVP (MSRP) can be completely different from UK or US retail prices. This is a market reality, not a conversion problem.

Community price data

Option Description Selected
On catalog detail page "Report your price" button
During add-to-collection Capture when adding item
Both (tied to ownership) Only report for items you own, auto-captured from collection

User's choice: Both, but tied to collection ownership — you can only report prices for items you have. Prevents duplicates. Notes: User also identified that candidate "price I found it for" is research-quality data. Purchase date should be tracked for temporal context.

Scope check

Option Description Selected
Foundation layer UVP display + conversion, community data later
Full system Everything: market prices, community submissions, conversion
Let's scope it together Walk through each piece

User's choice: Full system in Phase 33.


Conversion Strategy

Rate source

Option Description Selected
Free API (ECB/frankfurter.app) Daily rates, no API key, ~30 currencies
Paid API (Open Exchange Rates) More currencies, intraday, ~$12/mo
You decide Claude picks

User's choice: Free API — ECB via frankfurter.app

Conversion location

Option Description Selected
Server-side Server fetches rates, returns converted prices
Client-side Client converts locally
You decide Claude picks

User's choice: Server-side


User Experience & Display

Market/locale detection

Option Description Selected
Manual setting only User picks market in settings
Auto-detect + manual override Browser locale / IP, changeable
Tied to currency choice Currency = market, with auto-suggestion

User's choice: Currency tied to market (EUR=EU, GBP=UK, USD=US) with auto-suggestion from browser locale and IP geolocation. Best of both worlds.

Converted price display

Option Description Selected
Prefix with ~ and muted style ~£1,720 with tooltip
Dual display €2,000 (~£1,720) — source prominent, converted in parens
You decide Claude picks

User's choice: Dual display


Catalog & Sharing Implications

Catalog detail page

Option Description Selected
User's market first, others expandable Local UVP + community avg prominent, other markets collapsible
All markets in a table Price table showing all markets at once
You decide Claude picks

User's choice: User's market first, others expandable

Shared setup prices

Option Description Selected
Owner's original prices Show in owner's currency with conversion toggle
Viewer's market prices Auto-convert to viewer's currency
Layered disclosure Card: viewer's market MSRP. Detail: full breakdown including owner's price

User's choice: Layered — card shows viewer's market MSRP, detail page shows full breakdown (owner's price, all market MSRPs, community averages).

Comparison table currencies

Option Description Selected
Normalize to user's currency All candidates in viewer's currency, marked as approximate
Source currency with tooltip Each in source currency, hover for conversion
You decide Claude picks

User's choice: Normalize — mixed currencies (EUR, USD, JPY, TRY) are useless for comparison. Rough converted price gives direction even if not exact. Users can add their own researched "price I found it for."

Claude's Discretion

  • Rate caching strategy
  • Schema design for market prices table
  • Community price aggregation approach
  • Transition from current simple priceCents model

Deferred Ideas

None — discussion stayed within phase scope.