Engineering blog
Notes from the build
We write when we ship something interesting. Deep dives on the pipeline, the infra, and the decisions behind turning user feedback into merged code.

Deduping user feedback with pgvector and Vercel AI Gateway
How we kill '500 error' spam on the public roadmap: cosine similarity on OpenAI embeddings, HNSW indexes on Neon, auto-link above 0.92, and a dashboard review queue for the gray zone.
By FeedbackIQ team

SEO without bloat: llms.txt, nano-banana OG images, a sitemap that knows about blog posts
robots.ts, sitemap.ts, a programmatic llms.txt route, one buildMetadata helper, and Gemini 2.5 Flash Image generating unique OG cards for every marketing page.
By FeedbackIQ team

URL-synced filters for a PR list that actually scales
searchParams as source of truth, 200ms-debounced URL writes, server-side Prisma filtering, a clear button that doesn't flash, and why client-side filtering fell over at 400 PRs.
By FeedbackIQ team

A liquid-glass UI pass: snake borders, noise, conic gradients
Rotating conic-gradient borders with @property, backdrop-filter glow cards, SVG feTurbulence noise, and the things we deliberately didn't do. The CSS behind why the dashboard feels different.
By FeedbackIQ team

Closing the loop: merged PRs → changelog → upvoter emails → RSS
GitHub webhook verification, LLM-written changelog drafts a human reviews, Resend for fan-out, and a first-class Atom feed because RSS is deeply uncool and still works.
By FeedbackIQ team

Upvote routing: when duplicates exist, the parent wins
Toggle semantics, duplicate-aware target ID, optimistic updates, localStorage-backed voter state, and the tiny invariant that keeps the public roadmap sane.
By FeedbackIQ team

Letting Claude open real pull requests from your feedback inbox
GitHub App installation, short-lived per-repo tokens, an agent loop that typechecks before committing, branch reuse with force-push, and auto-mode vs review-only semantics.
By FeedbackIQ team

Auto-tagging feedback: category, priority, tags — none typed by the user
Structured outputs with Zod schemas, Claude Haiku on Vercel AI Gateway, project-aware tag hints, and a hand-written priority rubric that keeps the model from either under- or overreacting.
By FeedbackIQ team

Auto-detecting a site's theme so the widget doesn't look pasted-in
Reading CSS custom properties, sampling existing buttons, deriving panel chrome from background luminance. How the widget paints itself to match whichever site it's embedded on.
By FeedbackIQ team

A one-line embed: rebuilding the feedback widget in vanilla JS
Shadow DOM, 7KB gzipped, lazy-loaded screenshot capture, offline queue, and zero framework runtime. The smallest piece of code and the most scrutinized-at-3am piece of code.
By FeedbackIQ team

Picking the stack for a solo-founder SaaS that needs to scale
Next.js 16 with Turbopack, Prisma on Neon, Clerk, Vercel AI Gateway, Resend. Why each, and what I deliberately did not pick.
By FeedbackIQ team

How a LinkedIn post at midnight became a SaaS
A short demo video showed a feedback form spinning up a GitHub PR in real time. The commenters called it a toy. They were wrong, and here's why that 30-second clip became FeedbackIQ.
By FeedbackIQ team