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.