# The Market Fog — Sprint Plan

**Idea:** Convention floor intelligence for collector markets
**Date:** March 2026
**Status:** Sprint design — ready to build
**Depends on:** KronosFleet (auth), KendoCards (hardware), FortKnox (payments), GoW (optional Phase 4)

---

## Architecture Overview

```
┌─────────────────────────────────────────────────────────────────────┐
│                        marketfog.io                                  │
│                  (or: market.kronosfleet.com)                        │
├─────────────────────┬───────────────────────────────────────────────┤
│   SELLER SIDE        │   BUYER SIDE                                  │
│                      │                                               │
│  · Stock entry       │  · Browse by event                            │
│  · Convention        │  · Search by item                             │
│    registration      │  · Price comparison                           │
│  · Live updates      │  · Wishlist + alerts                          │
│    (mark sold)       │  · Seller reputation                          │
│  · Analytics         │  · Floor map                                  │
└─────────────────────┴───────────────────────────────────────────────┘
             │                         │
             ▼                         ▼
    KronosFleet Auth          Price Intelligence Layer
    (accounts + rep)          (eBay sold API + market ref)
             │
             ▼
    KendoCard NFC Tap
    (seller profile, live stock)
```

---

## Sprint 1 — Core Marketplace (2 weeks)

**Goal:** Sellers can list stock. Buyers can browse it.

### Backend

- [ ] **Event database** — Events table: name, location, date, organiser, category (LEGO/Cards/Sneakers/etc)
  - Seed with 20 upcoming UK LEGO/card events manually
  - Add form for event organisers to submit events

- [ ] **Seller stock model**
  ```sql
  items (
    id, event_id, seller_id (KronosFleet UID),
    title, set_number, category,
    condition, price_pence, market_ref_pence,
    status (available/reserved/sold),
    notes, images[], created_at, updated_at
  )
  ```

- [ ] **KronosFleet auth integration**
  - Sellers sign in via kronosfleet.com OAuth
  - Buyer accounts also via KronosFleet (or anonymous browse)
  - Seller profile: rating, review count, past conventions

- [ ] **Basic REST API**
  - `GET /events` — list upcoming events
  - `GET /events/:id/items` — all items at event (paginated, filterable)
  - `POST /items` — create item (seller auth required)
  - `PATCH /items/:id` — update (mark sold, change price)
  - `DELETE /items/:id` — remove item

### Frontend (Next.js or SvelteKit — use whatever's in the stack)

- [ ] **Event listing page** — Cards of upcoming events. Filter by category, location, date.
- [ ] **Event floor page** — All items at an event. Search. Filter by category, condition, price range.
- [ ] **Item card** — Image, name, price, condition, seller name + rating, market comparison badge.
- [ ] **Seller dashboard** — My items, add new item, mark sold, update price.
- [ ] **Add item flow** — Type set number → auto-fill from LEGO/Pokémon/etc database → set price → publish.

### Data Sources for Auto-Fill

- LEGO: Rebrickable API (free, comprehensive set data)
- Pokémon cards: TCGPlayer API or PokéAPI
- Magic cards: Scryfall API (free, excellent)
- Sneakers: no good free API — manual entry for now

### Deliverable

A working web app. Sellers can list. Buyers can browse. Live on the domain.

---

## Sprint 2 — Price Intelligence + Map (2 weeks)

**Goal:** Every item has a market comparison. The convention has a visual floor.

### Price Intelligence

- [ ] **eBay Sold Listings integration**
  - eBay Finding API: `findCompletedItems` with sold filter
  - Run nightly enrichment job: for each item listed, fetch 30-day sold median
  - Cache result. Update weekly or on demand.
  - Display as: `Market ref: £280–340 (30-day eBay sold)`

- [ ] **Deal indicator**
  - Green: seller price is >15% below market median
  - Yellow: within 15% of market
  - Red: >15% above market
  - No judgment copy — just the indicator. Let the buyer decide.

- [ ] **Price history chart** (optional v1.1 feature)
  - Store historical snapshots of market price per item
  - Show 3-month trend on item detail page

### Wishlist + Alerts

- [ ] **Wishlist** — buyer can save set numbers / item types they're looking for
- [ ] **Alert email** — when a seller lists a matching item for an upcoming event the buyer follows
- [ ] **Push notification** — optional, if mobile web app or PWA

### Map View

- [ ] **Convention floor map** — simple grid or image-based
  - Event organisers can upload a floor plan image
  - Sellers mark their stall on the map when they register
  - Items show stall location on the event floor page
  - Tap an item → shows stall on map + walking directions (simple, not GPS)

### Deliverable

Every item has a price context. Buyers know if they're looking at a deal before they look up from their phone.

---

## Sprint 3 — KendoCard Integration (1 week)

**Goal:** Sellers can order a physical NFC card that links to their live stock.

### The Card Flow

```
Seller signs up for KendoCard tier
    ↓
Fills in card design (name, logo, optional QR code)
    ↓
Card is printed on Evolis Primacy 2
    ↓
NFC chip programmed with seller profile URL
    ↓
Card shipped to seller
    ↓
Seller places card on stall table at convention
    ↓
Buyer taps card with phone
    ↓
Opens: marketfog.io/s/{seller-uid}?event={event-id}
    ↓
Sees seller's live inventory at current event
```

### Technical

- [ ] **Seller NFC URL** — `marketfog.io/s/{uid}` — seller's live stock page
  - If accessed with `?event=` param, filter to that event's stock
  - If accessed without, show all active listings across events

- [ ] **Card design template** — The seller-facing card designer (from [Kendo Cards idea](idea:kendo-cards))
  - Market Fog branded template for sellers
  - Full-bleed print, YMCKO ribbon, Evolis-ready export

- [ ] **Order flow** — card order → FortKnox payment → design collected → print queue
  - Print queue: manual in v1 (we print and ship in batches)
  - Later: automated Primacy 2 trigger

- [ ] **Seller profile tap page** — optimised for phone, loaded after NFC tap
  - Fast. Under 1 second. This is the moment of truth.
  - Seller bio, rating, today's stock, sort by price, mark as interested

### Pricing

- KendoCard: £35 one-off (printed, programmed, shipped)
- Included in KendoCard seller subscription (£9/month)
- Replacement card if lost: £25

### Deliverable

Sellers at conventions can hand buyers a card. The card replaces "let me find you on the app." It just works.

---

## Sprint 4 — Convention Partnerships + GoW Venue Mode (ongoing)

**Goal:** Conventions adopt the platform officially. GoW provides real-time floor management.

### Convention Partnership Tier

- [ ] **Official event badge** — "Powered by Market Fog" for event websites
- [ ] **Organiser dashboard** — see how many sellers have listed, total item count, popular searches
- [ ] **Sponsored placement** — featured seller slots at the top of event search results
- [ ] **Pre-event emails** — Market Fog sends "Preview what's at [Event] this weekend" to subscriber list

### GoW Venue Mode

- [ ] **Seller tap-in** — sellers tap GoW NFC plate when they arrive
  - Confirms their stall position
  - Updates their status to "at the event, live"
  - Triggers a "now live" notification to buyers watching this seller

- [ ] **Item sold confirmation** — sellers can mark items sold via tap (future: NFC tags on actual items)

- [ ] **Floor map live updates** — as sellers tap in, the map fills in
  - Buyers see "32 of 40 registered sellers are now live"

- [ ] **GoW-as-a-service for organisers** — rent a GoW setup for the event
  - We bring the hardware, configure it, run it on the day
  - Organiser gets full analytics after

---

## Data Model Summary

```
events
├── id
├── name ("National Brick Events Nottingham")
├── slug ("nbe-nottingham-mar-2026")
├── category (lego | cards | sneakers | vinyl | mixed)
├── location (venue name, city)
├── date_start, date_end
├── organiser_id (KronosFleet UID, optional)
├── floor_map_url
└── status (upcoming | live | past)

sellers
├── id (KronosFleet UID)
├── display_name
├── rating_avg
├── rating_count
├── kendo_card_uid (NFC chip ID, nullable)
├── verified (bool)
└── categories[] (what they specialise in)

seller_events (seller registration at an event)
├── seller_id
├── event_id
├── stall_location (text or grid ref)
├── status (registered | live | packed_up)
└── checked_in_at

items
├── id
├── seller_event_id
├── title
├── category
├── set_number / card_id / sku (category-specific)
├── condition (mint | very_good | good | fair | poor)
├── price_pence
├── market_ref_low_pence (from eBay enrichment)
├── market_ref_high_pence
├── market_ref_date
├── status (available | reserved | sold)
├── images[]
└── notes

wishlists
├── buyer_id (KronosFleet UID)
├── query (set number, card name, keyword)
├── max_price_pence
└── alert_events[] (which upcoming events to alert for)

reviews
├── reviewer_id
├── seller_id
├── transaction_note (optional description)
├── rating (1-5)
├── created_at
```

---

## KronosFleet Integration Points

The Market Fog uses KronosFleet for:

1. **Authentication** — sign in with KronosFleet OAuth
2. **Identity** — seller KronosFleet UID is their permanent identity across events
3. **Reputation** — rating and review history stored in KronosFleet, portable across modules
4. **Proof of sale** (Phase 2) — Kronos proof that a transaction occurred at an event

No custom auth. No user table to maintain. KronosFleet handles it.

---

## Domain Options

| Option | Vibe |
|--------|------|
| `marketfog.io` | Clean, memorable, domain available, product-forward |
| `market.kronosfleet.com` | Clearly in the ecosystem, no extra domain cost |
| `themarketfog.com` | More editorial, sounds like a product |
| `fogfloor.com` | Catchy, convention-forward |

Recommendation: **`marketfog.io`** for the public product. Alias `market.kronosfleet.com` for ecosystem consistency.

---

## Revenue Projections (Conservative, Year 1)

| Stream | Est. Volume | Rate | Annual |
|--------|-------------|------|--------|
| Seller Standard subscriptions | 150 sellers | £9/month | £16,200 |
| KendoCard hardware (one-off) | 80 cards | £35 | £2,800 |
| Buyer Premium subscriptions | 500 buyers | £3/month | £18,000 |
| Convention Premium listings | 20 events | £199/event | £3,980 |
| **Total** | | | **£40,980** |

This is pre-GoW-as-a-service and pre-sponsorship revenue. Year 2 with 3× growth and GoW venue rentals: £120k+.

The hardware side (KendoCards) has near-zero variable cost above the blanks and ribbon. Every card sold above ~8/month covers the printer depreciation.

---

## What Needs to Exist First

| Dependency | Status | Notes |
|-----------|--------|-------|
| KronosFleet OAuth | In progress | Core auth module for the ecosystem |
| Kendo Card print workflow | Partial | Evolis Primacy 2 in studio, workflow scripting needed |
| FortKnox payment integration | In progress | For card orders and subscriptions |
| eBay Finding API access | Need credentials | Free developer tier available |
| Rebrickable API key | Easy | Free, register at rebrickable.com |
| Scryfall (Magic cards) | Easy | Free, no auth required |

---

## Success Metrics

| Metric | Sprint 1 | Sprint 3 | Year 1 |
|--------|----------|----------|--------|
| Events listed | 10 | 50 | 200 |
| Active sellers | 20 | 100 | 500 |
| Items listed | 500 | 5,000 | 50,000 |
| Monthly active buyers | 200 | 2,000 | 20,000 |
| KendoCards shipped | — | 20 | 100 |

The single most important early metric: **how many minutes before the convention does the average buyer open the app?** If it's 60+ minutes, the intelligence layer is working. If it's 0 (they only open it when already at the event), we haven't explained the value clearly enough.

---

*The fog lifts when the sellers fill in the map. Our job is to give them the territory.*
