June 2026
- shipped
GET /api/v1/distributors
2026-06-10
New endpoint returns the distributors connected to your tenant — those with a feed configured or that have sent at least one pricefile. Symmetric with /api/v1/catalog, /api/v1/customers, /api/v1/quotes. Read scope.
- shipped
/trust — one URL for procurement
2026-06-10
Single landing that links the Security overview, Privacy, DPA, Cookie policy, Sub-processors, Live status, Accessibility, and Changelog. Reviewers can keep this URL and skip hunting through the footer. Pre-written invitation to send security questionnaires for a one-business-week turnaround.
- improved
WCAG 2.1 AA accessibility audit
2026-06-10
Manual sweep against the AA criteria. Added explicit labels on the few placeholder-only inputs we had, documented the verified criteria and the residual roadmap (automated CI a11y check, VPAT on request). Skip-to-content link and reduced-motion gating already in place. Procurement Q&A pre-written for reviewers.
- shipped
Onboarding step 6 — send your first quote
2026-06-10
The /portal home checklist now tracks the full build-to-deliver loop. The sixth step completes once any quote has actually been sent to a customer (status leaves draft), not just built and saved. Available in all four portal languages.
- improved
Admin UI primitives
2026-06-10
Shared layout primitives (AdminPageHeader, AdminStatCard, AdminTable, AdminEmptyState, AdminBadge) replace per-page header markup across the admin surface. Visible payoff: consistent typography, breathing room, and action-button placement across /admin/sub-processors, /admin/data-requests, /admin/deals, /admin/distributors, /admin/ingestions.
- shipped
Portal in Dansk, Svenska, and Norsk
2026-06-04
The reseller portal now runs in four languages — the daily workflow (home, quotes end-to-end, customers, settings) is fully translated, with a language switcher in the sidebar. Remaining low-traffic pages fall back to English while translations are reviewed by native speakers.
- shipped
Customers accept or decline quotes online
2026-06-04
Every emailed quote now carries a secure share link. Your customer sees a branded quote page (sell prices only — never your cost or margin), downloads the PDF, and accepts or declines with an optional note. You get notified by email, the pipeline updates itself, and the response lands in the customer comms log.
- shipped
Send quotes by email, straight from the platform
2026-06-04
One click sends the quote as a PDF attachment from the quote editor — personal message optional, replies routed to your company email. Quote status moves to sent automatically and the send is audit-logged.
- shipped
See when customers open your quote
2026-06-04
The quote editor and portal home show share-link opens — "customer opened the quote 3×, last 2 hours ago". A response supersedes the view signal so the feed stays clean.
- shipped
Re-quote at current prices
2026-06-04
One click recomputes any quote against today's distributor costs and your markup rules, previews the per-line and total delta ("this configuration is now 4% cheaper"), and creates a fresh draft. Pairs with price alerts for proactive re-quoting.
- shipped
Daily price alerts on SKUs you quote
2026-06-04
When a distributor price drops 10%+ or stock hits zero on a product you have actually quoted, you get one email that morning — signal, not catalog noise. The price-changes page also shows which open quotes contain each moved offer. Per-user opt-out in settings.
- shipped
Quotes expire themselves
2026-06-04
Sent quotes past their validity date flip to expired automatically every morning, keeping pipeline and forecast numbers honest. The weekly digest warns about quotes expiring in the coming week so you can chase first.
- shipped
REST API v1: quotes and customers
2026-06-04
Read endpoints for catalog, customers, and quotes (with incremental sync via updated_since), customer creation, and draft-quote creation — lines resolve against your catalog by SKU or MPN with your markup rules applied. Scoped API keys managed in the portal; reference at /api-docs.
- shipped
Webhooks for quote lifecycle events
2026-06-04
Subscribe your ERP to quote.sent, quote.accepted, quote.declined, and quote.expired. HMAC-SHA256 signed deliveries with automatic retries (5 min → 30 min → 2 h backoff), a test button, and a per-endpoint delivery log. Configured next to your API keys.
- shipped
Global search
2026-06-04
Ctrl/Cmd+K anywhere in the portal searches catalog, customers, and quotes at once. Keyboard-first: arrows + Enter.
- shipped
CSV customer import and bulk quote operations
2026-06-04
Import your customer book from CSV with auto-detected Nordic column names and three dedupe modes. The quotes list gained status filters, search, multi-select with mass status change, export-selected, and duplicate/re-quote actions.
- shipped
Sub-processor change notifications
2026-06-04
GDPR Art. 28(2) notice is now system-enforced: sub-processor changes require a 30-day minimum effective date and broadcast email to all customers. The public privacy and security pages render the live register.
- improved
Server-rendered quote PDFs
2026-06-04
Quote PDFs are now generated server-side — identical from the download button, the email attachment, and the customer share page. No more browser print dialogs.
- shipped
Public product tour at /demo
2026-06-03
Four-section scrollytelling walkthrough — catalog, pipeline, sustainability scorecard, branded quote PDF — with rendered mockups so the page always tells a clean story. Linked from the navbar.
- shipped
FAQ and About pages
2026-06-03
33-question searchable help center covering distributors, quotes, sustainability methodology, billing, and security. About page replaces the previously dead footer link.
- shipped
Swedish and Norwegian translations
2026-06-03
Landing page available in English, Dansk, Svenska, and Norsk. Locale switcher in the navbar; cookie-based persistence; HTML lang attribute set per request for SEO and accessibility.
- shipped
Tenant onboarding checklist
2026-06-03
New tenants see a 5-step setup card on the portal home (logo, markup, customer, distributor, quote). Steps auto-tick from data; dismissible when done.
- shipped
Legal pages and cookie consent
2026-06-03
Terms of Service, Privacy Policy, Cookie Policy, and DPA template available at /terms, /privacy, /cookies, /dpa. GDPR-compliant cookie banner.
- shipped
Stripe subscription billing
2026-06-03
Self-serve checkout, customer portal for card/cancel management, signed webhook handler with idempotency, billing UI at /portal/billing. Plans: Founders €49/Standard €79/Pro €199/Enterprise.
- shipped
Per-tenant logo upload
2026-06-03
Upload your logo at /portal/settings; appears on every quote PDF and customer sustainability statement, replacing the generic Nexvendo mark.
- shipped
Distributor performance scorecard
2026-06-03
Per-distributor view of quoted vs. accepted value, win rate, average margin, refurb share, feed health. Sortable; ready to use as renegotiation prep.
- shipped
Customer-facing sustainability statement PDF
2026-06-03
Per-customer printable carbon report — total embodied, avoided emissions, refurb units delivered, breakdown by quote. Methodology disclosed in plain language. Customers attach to their own ESG reporting.
- shipped
Weekly Monday digest email
2026-06-03
Per-tenant summary of the week: quotes won, quotes sent, pipeline change, biggest price drops, sustainability impact, stale feeds. Per-user opt-in toggle in /portal/settings.
- shipped
Sales pipeline Kanban
2026-06-03
Drag-stage pipeline at /portal/pipeline with weighted forecast (draft 10%, sent 40%, accepted 100%, revised 30%). Filter by customer.
- shipped
Customer CRM
2026-06-03
Tenant-side customer book with status (lead/active/inactive). Quote editor picks customers from the book; quote snapshot fields preserve identity even if the customer is later renamed.
- shipped
Sustainability dashboard at /portal/sustainability
2026-06-03
Tenant-wide CO₂e aggregation across sent and accepted quotes. Quarterly trend, refurb share, top customers by avoided emissions.
- shipped
Carbon scorecard on quote PDF
2026-06-03
Quote print view now includes per-line CO₂e and a summary panel showing avoided emissions vs new-equivalent. Methodology footer keeps the math honest.
- shipped
Portal home dashboard
2026-06-03
Daily situation: stalled deals, expiring quotes, stale feeds surfaced as actionable callouts. Replaces the previous redirect to /portal/products.
- shipped
HTTPS feed support
2026-06-03
Pull pricefiles from authenticated HTTPS URLs — Basic auth, Bearer token, or none. Same scheduler and idempotency as SFTP.
- improved
Per-feed pull frequency
2026-06-03
Configure each distributor feed independently: hourly, 4h, 12h, daily, weekly. Cron runs hourly and picks feeds whose next_due_at has passed. Replaces the freeform cron-expression input.
- improved
Fuzzy product matching
2026-06-03
Third matcher pass: pg_trgm similarity on normalised product name within the same canonical manufacturer. Catches refurb supplier offers that arrive without EAN or MPN.
- shipped
Mobile portal navigation
2026-06-03
Hamburger top bar + slide-in drawer below md breakpoint. The portal sidebar previously hid on phones, leaving no navigation — fixed.
- shipped
Demo tenant seed
2026-06-03
One-click seed of a synthetic "Demo Reseller AB" tenant with 5 distributors, ~30 products, ~120 offers, 30 days of price history, and a sample quote. For sales demos and personal testing.
- shipped
SFTP feed pulling
2026-06-03
Distributors can hand over SFTP credentials and we pull pricefiles on schedule. AES-256-GCM credential encryption at rest, SHA-256 idempotency on file content, parse + import + match runs automatically.