Product Notes

Changelog

Public-facing changes that affect positioning, trust, workflow, or product behavior.

July 2026

Career Hub, publishing hardening, and plan gating

  • -Shipped Career Hub inside the app: LinkedIn positioning audits, ATS resume reviews, and JD-matched resume generation, all plan-gated per the pricing table.
  • -Added DOCX and PDF resume parsing on upload so users can bring existing resumes without retyping.
  • -Fixed marketing navbar and footer leaking into the Career Hub app route.
  • -Introduced plan priority resolution and identity helper so downgrades, complimentary trials, and admin grants resolve to the correct active plan across every surface.
  • -Tightened carousel plan gating so Free and Solo cannot bypass the per-plan slide and monthly limits.
  • -Repaired LinkedIn profile fetch and publishing edge cases surfaced during the visibility suite rollout.
  • -Added quarterly billing pricing across Solo, Pro, and Agency, with the pricing page and comparison table sourcing values from a single config.
  • -Lemon Squeezy checkout wired end-to-end with signed custom tokens so webhook attribution cannot be spoofed by editing checkout query params.

May 2026

Security hardening and agency hub

  • -LinkedIn access token removed from session cookie - stored exclusively in Supabase via server-side credentials table.
  • -Cron analytics endpoint redesigned: no longer relies on browser cookies, now queries all connected users from the database using CRON_SECRET verification.
  • -Agency Hub wired to real database (agency_clients table with RLS). Fake mock clients removed.
  • -Workspace save loop replaced with single batch upsert - eliminates N+1 write pattern at scale.
  • -Background Sync tag now registered in PWA so offline replay actually fires when connectivity returns.
  • -Service worker updated: replaced unreliable navigator.onLine check with try/catch fetch pattern.

May 2026

Infrastructure and dead route cleanup

  • -Deleted dead /write redirect folder that competed with the config-level 308 redirect.
  • -Purged committed dev log files from the repository. *.log already excluded in .gitignore.
  • -Fixed import ordering violation in app-session.ts.
  • -Rate limiting migrated to Upstash Redis so limits persist across instances and restarts.

May 2026

Positioning and pricing cleanup

  • -Synced plan data across landing, pricing, schema, and CTAs.
  • -Removed fabricated ratings and fake enterprise proof.
  • -Added honest plan comparison language around voice profile, archive, and agency workflows.

May 2026

Free tools and support surfaces

  • -Shipped working public tools for hooks, headline analysis, profile scoring, viral checks, carousel outlines, and engagement heuristics.
  • -Replaced dead links with real routes or explicit current-state copy.

May 2026

Trust pass across brand surfaces

  • -Standardized Qalam branding across major pages while keeping byqalam.com as the domain.
  • -Reworked auth, legal, and support surfaces to avoid invented company history or fake traction claims.