← Back to work
🟢 LiveLead Full-Stack Engineer · Nextbit · 2026

FeedbackRun

Product-feedback & roadmap SaaS — for humans and AI agents. Voting portal, embeddable widget, AI triage, and revenue-weighted prioritization.

The problem

Every product team drowns in feedback scattered across tickets, sales calls, and Slack — and none of it answers the only question that matters: what should we build next, and what is it worth? Existing tools (Canny, Featurebase) treat every vote as equal and stop at a list. FeedbackRun set out to be the source of truth for what to build next: collect feedback everywhere, prioritize it by real revenue impact, let AI do the triage, and — a category first — let AI agents operate the whole thing over a standard protocol.

What I built

A TypeScript monorepo with four apps and four shared packages: a Next.js 16 web app serving three experiences (marketing, public portal, dashboard) via route groups; a GraphQL-first Fastify API; a Preact embeddable widget (Shadow DOM, one script tag); a BullMQ worker fleet; plus shared DB, Zod schemas, email templates, and a dedicated MCP package.

Engineering highlights

1

GraphQL-first with directive-enforced multi-tenancy

Access control is declarative at the schema level via custom directives (@auth, @superAdmin, @requireFeature, @rateLimit). Every multi-tenant query filters on workspaceId and resolvers re-verify ownership; GraphQL Armor caps query depth/cost so the public API can't DoS the DB.

2

Embeddable widget with a hard size budget

One <script> tag, rendered inside a Shadow DOM so it never inherits host styles. Built in Preact, bundled as an IIFE, with its ~26 KB gzipped size enforced as a CI gate — over budget fails the build.

3

AI triage on pgvector

Incoming feedback is embedded and stored in pgvector for semantic duplicate detection, plus sentiment, priority scoring, drafted replies, and weekly summaries — all run as background jobs so the request path stays fast.

4

Agent-native via MCP

A Model Context Protocol server exposes the product to AI assistants (Claude Desktop, Cursor, Windsurf) as a first-class operator, alongside a public REST API and a natural-language query endpoint.

5

Stripe billing that survives the real world

Idempotent signed webhooks, plans stored as data (not enums), proration, and failed-payment grace periods with cascade-pruning of out-of-plan resources.

Results

  • A live, production SaaS: marketing site, multi-tenant portal, dashboard, widget, and worker.
  • Genuinely agent-native (MCP + REST) — ahead of the category, not a bolt-on.
  • ~117 unit/integration cases (Vitest + testcontainers) and Playwright e2e running in CI on every PR, alongside CodeQL and size-budget checks.
  • Operable on a single VPS via Docker Compose, with full observability and proven-restorable backups.

Full tech stack

TypeScriptNext.js 16React 19Tailwind v4Fastify 5graphql-yogaPostgreSQL 16 + pgvectorPrisma 6Redis 7BullMQPreact widget (Shadow DOM)OpenAI (gpt-4o-mini + embeddings)MCP serverStripeDockerCaddyOpenTelemetryPrometheusSentry

Built at Nextbit — the source lives in a private repository, so it isn't publicly available. A live screen-share demo and code walkthrough are available on request for hiring managers.