Full Stack Developer
Full Stack Developer
All ProjectsSaaS Platform for Businesses to create conversational forms
3x
Form completion rate vs. traditional forms
50+
Businesses onboarded
First quarter
40%
Reduction in avg. session time
99.9%
Uptime
Serverless architecture
IntentPlug reimagines web forms as natural conversations. Instead of static, multi-field forms that users dread filling, IntentPlug delivers a chat-based interface that guides respondents through a conversational flow — improving completion rates by up to 3x.
Traditional web forms suffer from low completion rates, poor mobile experiences, and a lack of engagement. Businesses need a way to collect high-quality data without creating friction in the user journey.
We built a drag-and-drop form builder that outputs interactive chat widgets. Each form can be embedded anywhere and supports conditional branching, file uploads, and real-time validation. An analytics dashboard provides funnel insights and response heatmaps.
I designed and built the entire product end-to-end as the sole developer. This included the JSON state machine schema that powers the form engine, the drag-and-drop builder in Next.js, the standalone ~8KB embeddable chat widget, and the Prisma + PostgreSQL analytics pipeline. I also handled Vercel deployment, CDN configuration, and onboarded the first 10 businesses directly.
Discovery
Audited drop-off patterns on existing client forms, identified friction points, and benchmarked conversational UI patterns across competing tools.
Decided to build our own form engine rather than wrap an existing tool — existing solutions couldn't support the conditional branching depth clients needed.
Architecture
Designed a schema-driven form engine — each form is a JSON state machine. This decoupled the builder from the renderer and made conditional logic trivial to implement.
Chose JSON state machine over code-gen because non-technical users needed to edit and extend forms without touching code.
Build
Built the drag-and-drop builder in Next.js, the embeddable chat widget as a standalone ~8KB script, and the analytics pipeline on Prisma + PostgreSQL.
Built the widget as a zero-dependency vanilla script rather than a React component — couldn't require clients to have React just to embed a form.
Ship
Deployed to Vercel with edge caching on the widget CDN. Onboarded first 10 businesses directly, iterated on feedback, then opened up self-serve.
High-touch onboarding first — spending time with early customers directly shaped the branching editor UX before opening self-serve.
The hardest part wasn't the conversational UI — it was making conditional logic feel simple for non-technical users. We went through four iterations of the branching editor before landing on a visual node graph. Lesson: complex power shouldn't require complex UI.
~ John Johnson