Catalog Console
Search, price, stock, and stream — the whole shop in one place.
Login
Tip: on your own device you can let the browser save your login so it fills by name next time; on a shared computer, always click Logout when you're done. Consejo: en tu propio dispositivo puedes dejar que el navegador guarde tu acceso para que se complete por nombre la próxima vez; en una computadora compartida, siempre haz clic en Salir cuando termines.⚙ Sections
Announcements
Upcoming Events
| Order | When | Ship to | Total | Risk | Payment | Fulfillment | Items | Tracking |
|---|---|---|---|---|---|---|---|---|
| Loading… | ||||||||
| Qty In Session | Image | Stream Cost | TCG / eBay | Action | Add Qty | Product Name | Active | Stock Qty | Product ID | Category |
|---|
| Image | Card | Grader | Grade | Cert # | Stream Cost | TCG Market | Stock | Active | Product ID | Actions |
|---|
| Image | Card | Cond. | Game | Cost | Market | Stock | Active | Product ID |
|---|
Send Feedback
Your message goes straight to admin. Include as much detail as you can.
🎡 Wheel images exported
Wrote N images.
File Explorer should have opened at this folder. If it didn't pop on your screen, click 📂 Open below.
How to use this app
User Feedback Inbox
Suggestions, bugs, and issues submitted by every user. Admin-only view.
Security & Audit Log
Every login, denial, and sensitive action is recorded with the username, IP, and device. Flagged rows are highlighted in red.
💳 Payment Settings
Configures the "📱 Send Payment Request" SMS the boss receives so he can pay out remotely. The actual PayPal/Zelle destinations come from each order's customer info (captured on the order form at intake). The handles below are optional fallbacks only — used when an order doesn't have customer pay info filled in. Business name + boss phone are the important ones here.
paypal.me/<handle>/<amount> deep link the boss taps — PayPal app opens pre-filled with the amount, boss confirms F&F. Zelle has no universal deep-link, so the SMS shows the handle for manual entry.
Admin User Manager
Add users, rename usernames, set role, reset passwords, deactivate/reactivate, or remove accounts.
| Username | Role | Active | Dims / UPC | Can Stream | Off-Program | Created | New password | Actions |
|---|
Database Backup
Creates a portable SQLite copy in backups/ on the server (verified via integrity-check + sha256) and downloads it to your machine. Safe to run while the app is in use.
| Filename | Size | Created | By | SHA-256 |
|---|
📥 Vendor Purchases — intake & spend log
Record a whole vendor invoice at once — add a line for each item. Korean packs and shipping supplies also update their stock; everything else is logged for spend tracking.
| Date | Category | Item / Vendor | Qty | Total $ | $/unit | By |
|---|---|---|---|---|---|---|
| No purchases recorded yet. | ||||||
Shipping & General Supplies
Add, edit, or remove any consumable the shipping/floor teams use. Adjust quantity on the fly with the +/− buttons; use [Restock] when a new shipment arrives.
Weekly physical count
Enter the actual on-shelf quantity for each item. The system will compare against its estimate and auto-tune the per-shipment rate so future decrements stay accurate.
Per-shipment consumption rates
How much of each supply is used per package shipped. These drive the automatic decrement when a stream closes with a packages-shipped count. The weekly count tunes these automatically.
| Name | Category | Unit | Qty | Where stored | Threshold | Status | Quick adjust | Actions |
|---|
Rooms & Storage Locations
Named storage areas inside the building. Supplies and inventory will be tracked per-room in later phases.
| Name | Description | Locked | Status | Actions |
|---|
Assigned Game Generator
📷 Scan items in for a streamer
Fill in Title and Assign to below, then click Create empty draft. An item editor opens — every scan reserves stock immediately. Nothing starts the streamer's clock until they hit Start.
⚙ Or: build by formula (target $, hit count, giveaways…)
Tolerance ($) is the max allowed gap between the generated total cost and your target total (default ±$50). It is not line counts — use Surprise auctions and Giveaway lines for how many rows to generate.
Assigned game queue
Published or loaded games assigned to you. Load builds the session builder; Start locks stock and opens a live session.
| Entrada / In | Salida / Out | Horas / Hours |
|---|
Antes de salir / Before you clock out
How many live streams / carts did you work today?
Which platform? (choose one or more)
When did you go live?
You didn't click ▶ Start Stream (or the click didn't register) — pick when you went live and your hours still count from that time.
Filter and review punch records below
📦 Shipper Output — lives/carts by platform
From the clock-out questionnaire. A shift worked on multiple platforms counts its lives toward each platform selected.
Overtime — paid separately from regular wages
Overtime counts hours past 40 in a week (Mon–Sun). Hours within 40 are all regular, no matter how long any single day runs.
| Worker | Week | Hours | Regular (≤40) | Overtime (>40) |
|---|
| Worker | Date | Clocked In | Clocked Out | Hours | Notes |
|---|
TCG Price Settings
Pull live TCGPlayer pricing for sealed Pokemon products. Default mode scrapes TCGPlayer directly (free, no key needed).
| Name | Set | Market Price | Low Price | Listings | Actions |
|---|
📈 Price History
No price history yet. Daily snapshots are captured every time TCG prices refresh — check back after the next refresh.
Item Rules and Notes
🚫 Not Taking
Items we're not currently buying. The website shows these on its "not taking" list and blocks them in the sell-to-us picker; in-app estimates label them NOT TAKING with a $0 offer.
💲 Stream Price %
Stream price = TCG market × this percent, across the whole active catalog. Locked prices and items without a market price stay put. Streams already started or finished keep the prices they were run at.
📥 Import TikTok Orders
Drop a "To Ship" or other order export from TikTok Seller Center. Safe to upload the same file twice or overlapping daily pulls — line items are deduplicated by (Order ID, SKU ID) and mutable fields (status, shipped time, tracking) update on top without creating duplicates.
What's in the orders table right now?
📊 Active Inventory Value
Every active product with stock > 0. Rolling totals below are live — filtering the table recalculates them. Units = total pieces on the floor; item count = distinct SKUs.
⚠ Low Stock by Room
Shows every active product whose qty in the selected room is at or below its low-stock threshold. "Other rooms" column lets you decide between a quick transfer and a reorder.
Update Stock Quantity
Stock by Room
Restock History
Receive Stock to Room
Update Dimensions and Verification
UPCs on this item (add alternate barcodes — e.g. retailer label over manufacturer code)
Which item did you scan?
This UPC is shared by multiple products. Pick the one you scanned.
Add Punch
Create a retroactive shift entry for a worker who forgot to clock in / out.
Simple Flow: Start Stream → Build Show → End Stream → Print Session Sheet
| Product ID | Product Name | TCG Market | Stream (90%) | Qty | Giveaway | Action |
|---|
| Product ID | Product Name | Qty | TCG Market | Stream (90%) |
|---|
Giveaway cost tonight: $0.00
Stream Analytics
| Date | Streamer | Session | Assignment | Prep | Hours | Hits Qty | Floor Qty | Hits Cost | Floor Cost | GW Cost | Total Cost | GMV | Profit | Commission | Actions |
|---|
| Product ID | Product Name | Category | Times on Stream | Total Qty | Total Stream Cost | Avg Unit Cost | Streamers | Last Seen |
|---|
By Hour of Day
| Hour | Streams | Avg GMV | Total GMV |
|---|
By Day of Week
| Day | Streams | Avg GMV | Total GMV |
|---|
My Stats
Trend Comparison
Last 5 Sessions
Top 5 Items by Frequency
My Commission
| Streamer | Session | Date | GMV | Total Cost | Profit | Commission | Status | Paid By | Paid Date | Method / Ref | Action |
|---|
Payment History Log
| Date & Time | Streamer | Amount | Paid By | Method | Reference |
|---|---|---|---|---|---|
| Loading… | |||||
| Streamer | Grade | Shifts | No-Shows | On-Time % | Lateness (med) | Avg Setup | Hrs vs Sched | Unscheduled |
|---|---|---|---|---|---|---|---|---|
| Loading… | ||||||||
Edit Item
assets/products/{ID}.{ext} automatically. No more dragging files into the assets folder.
—
—
Add Item
Add Raw Single
Add Slab
Dimensions and weight are hardcoded for graded slabs — no need to enter them. Link a graded TCGplayer listing to auto-fill pricing and a card image.
assets/products/<P-XXXX>.jpg on Create Slab.Edit Slab Details
—
📋 Paste from cert page
Works with PSA, CGC, BGS, SGC. We detect the grader from the page content.
1. Open the cert on the grading company's website (e.g. psacard.com, cgccards.com, beckett-grading.com, gosgc.com).
2. Ctrl+A → Ctrl+C on that page.
3. Paste (Ctrl+V) below. We'll extract card name, set, year, grade, cert#, card#, population, and price estimate when available.
📷 Read slab from photo
Snap a photo of the slab's printed label. Works for any grader — PSA, CGC, BGS, SGC, TAG, etc.
Tip: get the label centered, well-lit, and large enough that the cert number is readable.
Slab Label Settings
Choose which fields print on the Rollo label when you click "🏷 Label" on a slab row. Preferences save per device.
Link to TCG Product
Type any custom search here (example: Pokemon Day 2026), then click Search.
Delete Product
This is permanent and should only be used for accidental duplicates.
⚠ Used in history
Scanner
USB scanner (NETUM NT-1228BL) is keyboard-wedge: pick a mode, then pull the trigger on any barcode. Scans are detected globally — you don't need to click anywhere first.
Today's Receiving Log
🎁 Add Giveaway
Tracks a single giveaway line with its description and value on the session sheet. Not shipped via TikTok and not auto-added to the random game.
📦 Add from eBay
Paste the full eBay listing URL (ebay.com/itm/…). Import adds it to the program's inventory under its own eBay Items category — streamers/breakers never see these in their catalog, and they can't enter the random game. Nothing goes public: the eBay price is saved as its online retail price but website listing stays off until you turn it on. It's marked cross-listed, so a website sale of it pages staff to end the eBay listing before it double-sells.
🎲 Add Break / Rip Till You Hit
One line per break. Name it, set the cost per spot, add the spots sold — you can keep bumping the Qty on the session row as more spots sell. Never exported to TikTok; excluded from the random game.
➕ Add Item from Catalog
Admin-only retroactive add. Pick a product to drop a line into this session at its current catalog price. Totals + commission recompute on save.
Type at least 1 character to filter the catalog. Click a row to add it.
🔍 Add from TCG
Admin-only — search TCGPlayer's sealed catalog for products not yet in your local catalog. Pick a result and the system creates a P-XXXX catalog row at TCGPlayer market price × 90% (stream price), then drops it into this session.
Type a query and click Search (or press Enter). Each result click creates a catalog row + adds it to the session.
📦 Receive Stock
Enter how many of this item arrived, or press Enter to accept the default. Scan again (or click Save) to apply.
Link Barcode to Product
This barcode isn't linked to any product yet. Search for the product it belongs to, or cancel.
➕ Can't find it? Create new product & link this UPC
Name is required. Category and Series are optional — Series helps the chase-card overlay match the right pokemontcg.io set. You can fill in dimensions / cost in the product editor that opens right after.
💵 Mark Commission Paid
Stream Detail
🏆 Hit Items
| Product ID | Name | Category | Qty | Unit Cost | Line Total |
|---|
🌏 Floor Packs (Korean / Japanese)
| Product ID | Name | Category | Qty | Unit Cost | Line Total |
|---|
🎁 Giveaways
| Product ID | Name | Category | Qty | Unit Cost | Line Total |
|---|