What we've shipped

What's shipping on the desk.

Every meaningful update we've shipped, in reverse-chronological order. New entries land the moment we cut a release — no newsletter, no announcement post, just the record.

  1. ·Public update
    Public sample briefing page

    A read-only /sample-briefing page that shows prospects exactly what lands in their inbox at 07:00 — built from realistic seeded data so the format speaks for itself, no login required.

  2. ·Public update
    Browser extension landing page + capture timeline

    The /extension landing page now ships with the four-signal capture timeline (price, stock, ad creative, reviews) and a beta waitlist hooked to the existing /api/waitlist endpoint.

  3. ·Public update
    Pricing tiers + six-question FAQ block

    Two paid tiers (Solo and Desk) and a six-question FAQ block built from objections we heard during the waitlist conversation — each answer links out to the team inbox for the long tail.

  4. ·Public update
    Blog (index + slug detail + JSON-LD + OG)

    Public /blog index with per-post /blog/[slug] detail, Article JSON-LD on each post, and a Blog JSON-LD block on the index — wired to the sitemap so posts are discoverable the day they publish.

  5. ·Public update
    Welcome email template

    Day-zero welcome email composed in @/lib/email/templates and dispatched through sendEmail() the moment a seller lands on the waitlist, framed so the first reply lands inside a working day.

  6. ·Public update
    Reviews + Ads surfaces inside the sellers console

    Two new authed surfaces inside /app: /app/reviews for star-velocity and topic-mix monitoring, and /app/ads for sponsored-creative diffing — both gated by requireAuth() and scoped per user.

  7. ·Public update
    Sellers console MVP

    The dashboard shell is live: competitors, alerts, briefings, rules, onboarding, and settings — all behind better-auth with per-user data scoping so two accounts see two separate desks.

  8. ·Public update
    Auth (better-auth) wiring + per-user data scoping

    better-auth is installed and wired through @/lib/auth-config; every /api route now calls requireAuth() and every Prisma query carries a userId where filter — zero cross-account reads survive a code review.

  9. ·Public update
    Waitlist capture form + admin view

    Public <WaitlistForm/> posts to /api/waitlist and the signed-in admin view at /app/waitlist renders the captured signups — both surfaces live, the form did not need a code change to be wired from the home.

  10. ·Public update
    Contact form + anonymous message capture

    A anonymous-accessible /contact page with <ContactForm/> island that posts to /api/contact — messages land in the company inbox via the Polsia email proxy, so a real human sees them before any automation does.