1d5daf2e5cccc587bbbfb5bd87bd3a3984b149ec
Surfaces "vehicle resolved but no parts/categories" — Sase's #1 churn signal, previously invisible to insights (a prospect emailed support instead of any insight firing). Client (PostHog session tagger): - fetch the catalog_*/category_view_changed/empty_catalog_cta_clicked event family (was never pulled) and tag parts_render_blocked (P1) / catalog_empty_result (P2), scoped to the real /dashboard product (demo excluded). Harden the search-affordance-misuse guard so a real parts failure is never suppressed. Route both tags to bug_triage. Server (decode-log catalog gaps): - new catalog-gap-detect worker job (every 6h) -> panel internal API /api/internal/catalog-gap-check aggregates "No catalog - identified as X" query_logs failures by brand -> upserts catalog_coverage_gap insights (Telegram on P1), respecting founder triage. Add NO_CATALOG error bucket. Validated: both apps typecheck clean; tagger smoke 21/21; aggregation over 90d real data yields 13 brand gaps (Renault/Fiat/Honda P1). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Süper Panel
Internal admin panel — sp.semih.ai — Tailscale-only access.
Phase 0 skeleton: Next.js 16 + Better Auth (email/password + TOTP) + Prisma + Postgres + Redis. Deployed on Coolify, fronted by Traefik with Let's Encrypt (Cloudflare DNS-01).
See super-panel-prd.md for the full PRD.
Local dev
pnpm install
cp .env.example .env
# fill DATABASE_URL_PANEL, BETTER_AUTH_SECRET (32+ chars)
pnpm --filter @panel/web prisma:generate
pnpm dev
Production deploy
Pushes to main trigger Coolify deploy via webhook.
Deploy status
First production deploy: 2026-05-13. Live at https://sp.semih.ai (Tailscale only).
Description
Languages
TypeScript
99.2%
CSS
0.4%
Shell
0.2%
Dockerfile
0.2%