Changelog
TopLoader is deal management software for card and resale shops.
TopLoader is in active development. We ship frequently. Here's what's changed. Currently on v0.9.6-beta. v1.0 ships when we start charging.
Pre-release: TopLoader is running in a live production shop and is available for beta access, but v1.0 is reserved for when paid plans go live. Expect frequent updates.
SlabTrack: cert number registry links, contact attempt logging, inline grade/cert entry, split tracking fields, and a full analytics reports page.
- NewCert number links: PSA, BGS, and TAG cert numbers are now clickable links that open the grading company's official cert verification page. Shows in card rows and "Verify ↗" button in the cert field. Links also included in customer notification emails.
- NewContact attempt log: replaced the single Contacted toggle with a "Log Attempt" button that records a timestamped history of contact attempts per customer. Shows attempt count and last attempt date.
- NewSlabTrack Reports page: grade distribution bar chart, submission pipeline breakdown, by-company card/graded/declared value stats, top customers by card volume, and headline stats (avg grade, total declared value, % graded).
- ImprovedReports link added to the Submissions page header for quick access.
Email receipt delivery, customer email profiles, and post-finalization customer linking.
- NewEmail receipts: send a deal receipt directly to the customer from the receipt modal. Sends from noreply@toploader.io — no reply-to, replies go nowhere.
- NewCustomer profiles now store an email address, editable from the customer detail page and used to prefill the receipt email field automatically.
- NewSending a receipt auto-syncs the email address back to the linked customer profile.
- NewFinalized deals can now be linked to a customer profile after the fact directly from the deal view.
- ImprovedReceipt email field prefills from the linked customer's saved email. Blank if no email on file.
- ImprovedEmailed receipts correctly apply the shop's payout rounding setting (floor, ceil, nearest) to match what's shown on screen.
Service-aware UI throughout the app, CardLadder search button, clickable dashboard stats, and the /deals route restructure.
- NewService gating: deal and SlabTrack routes now redirect automatically if a shop does not have that service enabled. No access, no route.
- NewWelcome banner, dashboard stats, settings tabs, customer detail panel, and mobile nav all adapt to which services a shop has active.
- NewCardLadder search button added to the deal editor alongside the TCGPlayer button. Both show inline color-coded labels (blue "TCG", green "CL") when enabled together.
- New/deals is now the primary public landing page. / permanently redirects there.
- NewHidden /slabtrack page created for the upcoming SlabTrack product launch. Not linked publicly yet.
- NewHidden /platform page created as the future umbrella brand page for the full TopLoader product suite.
- ImprovedDashboard stat cards (Open Deals, Cards Active, Inventory Value, Submissions Out, etc.) are now clickable and navigate to the relevant section.
- ImprovedSettings page hides deal-related tabs and sections (Item Rates, Item Types) for shops without deal management, and hides Grading Companies for shops without SlabTrack.
- ImprovedMobile bottom nav and FAB button adapt per service: shows "New Deal", "New Submission", or nothing based on what's enabled.
POS inventory export for 6 systems, server-side export history, landing page overhaul, and security hardening.
- NewInventory export in 6 formats: Generic CSV, BinderPOS, Square, Lightspeed, Clover (XLSX), and Shopify. Accessible from the Inventory page.
- NewClover export generates a properly structured XLSX with all 4 required sheets: Items, Modifier Groups, Categories, and Tax Rates.
- New"New since [date]" export button appears after each export. Only exports items added since the last run, preventing duplicate imports in your POS.
- NewExport history is now stored server-side per shop and format. Works correctly across devices and browsers.
- NewChangelog, Pricing, About, Terms, Privacy, and Bug Report pages added as public routes.
- NewPricing page added with honest tier breakdown and what each plan includes.
- ImprovedLanding page strengthened with social proof, pain-point breakdown, "How it works" steps, and expanded feature cards.
- ImprovedContact form now rate-limited to 5 submissions per hour per IP.
Revoke pending invitations and fix for invites not appearing in team UI.
- NewAdmins can now revoke pending invitations directly from the team page. No more logging into Clerk.
- FixedPending invitations now correctly appear in the team management UI after a Clerk SDK status filter issue was resolved.
- ImprovedSeat count display now shows pending invites separately: "3 / 5 seats (1 pending)".
- ImprovedRevoke confirmation matches the remove-member pattern: click to confirm, optimistically removed on success.
Pending invitations are now tracked in the team screen and counted against seat limits.
- NewPending invitations shown in a dedicated section on the team management page.
- ImprovedSeat enforcement now includes pending invitations. Invite flooding is blocked at the server level.
- ImprovedTeam header now shows both member count and invite count: "4 members · 1 invited".
- ImprovedInvite error message updated to clarify that seat count includes pending invites.
Full team management: invite staff, assign roles, and control access with per-plan seat limits.
- NewInvite team members by email address. They receive a Clerk invitation link.
- NewRole system: Admin, Manager, and Employee. Each role has different permissions across the deal workflow.
- NewPlan-based seat limits: Starter (2), Team (5), Pro (unlimited), Founding (5).
- NewAdmins can change any member's role. Members cannot change their own role.
- NewRate limiting on invite sends: 20 per hour per admin.
Unusual deal banner and finalize confirmation modal for added confidence before committing.
- NewUnusual deal banner: orange warning appears when your effective payout rate exceeds your base rate by more than 10%.
- NewFinalize confirmation modal shows the full deal summary: customer name, item count, market value, and color-coded cash/trade payout breakdown.
- ImprovedMixed-payout deals now show cash (amber) and trade (violet) blocks side-by-side in both the confirm modal and the receipt.
- ImprovedReceipt print updated to render both payout types for mixed deals with inline color labels.
Mistake prevention warnings so bad deals get caught before they're finalized.
- NewWarning banner surfaces: blank customer name, items with $0 market value, and duplicate card names in the same deal.
- NewItems with a $0 market value are highlighted in red until corrected.
- ImprovedSave status ("Saved at 2:14 PM") is now always visible, no longer hidden on mobile.
Bottom finalize button and cleaner receipt payout display.
- NewAdded a Finalize Deal button at the bottom of each deal. No more scrolling back to the top.
- ImprovedReceipt redesigned to show cash and trade payouts separately with distinct color blocks and large type.
- ImprovedDeal status bar (Saved, Finalized, Voided) now always visible regardless of scroll position.
Plans and seat limits, the billing architecture foundation.
- NewFour plans introduced: Starter, Team, Pro, and Founding. Each has a default seat limit enforced server-side.
- NewPer-shop seat overrides stored in Supabase for custom arrangements.
- NewSeat limit error message shown at invite time, not after a broken state.
- ImprovedStripe-ready billing architecture with customer ID column and plan fields in place.
Business reports with margin trends, deal volume, and employee performance.
- NewReports dashboard: deal count, payout totals, market value acquired, and gross margin.
- NewEmployee performance breakdown: see who is running the most deals and at what margin.
- NewDate range filtering for all report views.
- NewInventory analytics: items in stock, total market value held.
Inventory system: finalized deals automatically populate stock.
- NewInventory system launched. When a deal is finalized, all items are automatically added to inventory.
- NewInventory status tracking: Available, Sold, and Returned.
- NewInventory view with sorting and filtering by status, value, and date.
Deal lifecycle states and digital receipts.
- NewDeal lifecycle: Open to Finalized to Voided. Finalized deals can be reopened by admins.
- NewDigital receipts generated at finalization, customer-ready and printable.
- NewVoid deal with reason. Voided deals stay in history and are clearly labeled.
- ImprovedRole-based deal controls: employees can create, managers and admins can finalize.
Autosave and conflict detection.
- NewAutosave: deals save automatically as you type. No manual save required.
- NewConflict detection: warns you if a deal was updated from another session while you were editing.
- NewDeal timestamps: created at, last saved at, and finalized at tracked on every deal.
Multi-item deals, pricing engine, and payout modes.
- NewMulti-item deal support: add any number of cards or lots to a single deal.
- NewPayout modes: Cash, Trade, and Mixed. Mixed splits payout across both types.
- NewTier-based pricing with configurable rate tiers based on market value thresholds.
- NewMarket value adjustment field for overriding calculated totals.
- NewPer-item cash and trade offers shown inline as you build the deal.
Initial internal release. Deal creation and basic pricing.
- NewInitial release, internal only.
- NewDeal creation with market value input and manual payout calculation.
- NewBasic cash offer display based on a fixed rate.