Convertly
Turns a contact form into a qualifier that scores every answer.
- Type
- Micro-SaaS
- Role
- Product design, full-stack development, integrations
- Year
- 2025–2026
- For
- Binary Brain Technologies product
- Stack
- Next.js 15 · React 19 · TypeScript · Supabase · TanStack Query · Paddle · Upstash Redis · Claude API · Vercel

02
Context
A contact form treats every enquiry the same: a name, an email, and no idea who to call first. Quiz funnels help, but most of them are built for engagement, not for sales.
Convertly is a Binary Brain Technologies product, started at the end of 2025 and live in 2026.
03
Role
I designed and built the product - builder, public quiz, scoring, analytics, integrations and billing. The repository has a single author.
04
Idea
The lead sorting machine.
The product began as a quiz builder and was repositioned as lead qualification. The difference is where the value lands: not in the quiz, but in the sorted list a team opens on Monday morning.
The art direction, “precision machine”, follows from that - instruments, scales and rows instead of cards and confetti.
05
Experience
- A builder for questions and options with points, score ranges with their own call to action, category scoring and conditional logic.
- AI generation drafts a complete quiz from an industry preset; the creator edits it like any other.
- Visitors answer a short multi-step quiz and see a results page (also as a PDF). The team sees leads with scores, filters, analytics and drop-off.
- Leads travel on: HubSpot, Mailchimp, Pipedrive, Klaviyo, ActiveCampaign, GetResponse, webhooks and a public REST API; a Zapier trigger is built and not yet listed publicly. Quizzes embed on any site with a plain-JavaScript widget.



06
System
- InterfaceNext.js 15 App RouterReact 19react-hook-form + Zodnext-intl (EN/PL)
- StateTanStack Query
- DomainServer actions for everything internalPlan limits enforced server-side
- APIPublic REST API v1 with hashed API keysZapier REST hooksEmbed widget scriptPaddle webhooks
- DataSupabase Postgres with row-level securityAtomic batch update as a Postgres functionEncrypted integration credentials
- InfrastructureVercelUpstash Redis rate limitingResend + React EmailSentry
07
Details
Saving a quiz is one transaction
The builder computes a diff on the client, gives new rows temporary IDs, and sends everything to a single Postgres function that applies it in one transaction - still under row-level security. Before that, partial saves and retries could produce duplicate rows.
Two doors, clearly separated
Everything inside the app goes through server actions. REST exists only for consumers outside it - the public API and Zapier - and both reuse the same hashed API keys instead of a second auth system.
Failing closed
If the rate limiter is not configured, rate-limited actions are denied rather than allowed. Outbound integration calls go through an SSRF-safe fetch.
08
Output
A live product at convertly.buzz with a public API, an embeddable widget and integrations with common CRM and email tools.
09
Reflection
Changing the positioning changed the design. Once the product was a machine that sorts leads, gradients, heavy rounding and decorative entrances no longer had a reason to exist, and they were removed.