Jonathan Hipolito

← All projects

Multi-tenant SaaS

Hearsay feedback boards

A feedback board product that software companies sign up for, in the style of Canny. Each company gets its own workspace where customers post and vote on feature requests, and the team ranks them by the revenue behind the votes, then closes the loop with a public roadmap and changelog. The demo hands every visitor a private copy of a made-up field-service app's workspace.

Hearsay feedback inbox with a QuickBooks sync request open, showing its owner, ETA, the $7,059 a month of customer revenue asking for it, voters and the discussion
Hearsay billing page on the Pro plan with Free, Pro and Team plan cards, the test clock controls, invoices and the webhook event log
Hearsay platform console with MRR, paying tenants, ARPA, trials, past-due and churn, an MRR by month chart and the plan mix

What I built

  • Real tenancy: path-based workspaces with every query scoped to its workspace, a workspace switcher, and a second workspace one click away. Another tenant's address answers 404, the same as one that doesn't exist
  • Accounts with hashed passwords and session tokens, owner, admin and member roles that can't leave a workspace without an owner, and invite links that hold a seat until someone accepts
  • Free, Pro and Team plans with board, seat and request limits and gated features, each limit turning into an upgrade prompt. A 14-day trial that drops to Free when it ends, without deleting anything
  • Billing in test mode: a checkout with succeeding and declining test cards, prorated plan switches, cancel at period end, and a test clock that runs renewals, failed payments, retries and cancellations, logged as the same webhook events Stripe sends. Real Stripe Checkout and signed webhooks switch on with a key
  • The product itself: an inbox to triage new requests, revenue per request from the voters' plans, merging duplicates with their votes, internal notes, a drag-and-drop roadmap, and a changelog that marks requests shipped when it's published
  • A platform console for the operator with MRR by month, plan mix, past-due and churned tenants, and read-only 'view as' for any sample tenant

Stack

Cloudflare Workers, D1 (SQLite), TypeScript, WebCrypto, Stripe API

Live

feedback-demo.jnathan.dev ↗