Capture is a conversation
Asking one question at a time, in the tone of the sector and adapting to what the person already said, converts better than a long form shown all at once.
Rivelko generates AI conversational forms, embeds them on any site with one line of code, and works every captured lead through pipelines, deals and tickets.
Rivelko is an AI conversational form builder that turns a static contact form into a conversation that captures more leads. Every captured lead continues inside the same product —pipelines, deals and tickets— so nothing you capture goes cold.
Verifiable in the product's repository.
And the lead it captures usually dies in an inbox.
Six cold fields are a barrier for someone still deciding whether you're worth it. And even when they fill them in, the lead lands in an email nobody opens again. Rivelko attacks both halves of the problem with two product decisions.
Asking one question at a time, in the tone of the sector and adapting to what the person already said, converts better than a long form shown all at once.
That's why the CRM is inside the product rather than integrated with a third party: the jump between tools is exactly where leads get lost.
Expand each one for the reasoning.
The domain depends on nothing, and infrastructure is the only layer touching the outside world.
The domain layer imports nothing; use cases depend only on port interfaces; and infrastructure —Prisma, Stripe, Resend, the AI SDK— is the only layer that talks to the outside. A use case importing the Prisma client directly has broken the architecture, and that's the rule the directory tree can't teach on its own. Today it's 20 use-case modules.
Built with esbuild, served as an IIFE and mounted in a Shadow DOM.
The widget cannot import from the application: it is an independent bundle. That constraint is what keeps it at 13KB gzipped and what stops the host site's styles from deforming it, because it lives inside a Shadow DOM. It embeds with a single script tag and behaves the same on WordPress, Shopify or hand-written HTML.
Marketing and app are served from the same project, with a single source of truth for routes.
rivelko.com serves the marketing site and app.rivelko.com the dashboard and API, both from a single Vercel project. A domain routes module is the source of truth, and a test fails if the configuration drifts. The critical invariant: the API is never redirected. A 308 on a preflight request or on a POST would break every embedded form, and the browser would report it as a CORS error, not a redirect.
The tenant boundary is enforced in the use cases, and a pentest suite guards it.
Looking up by id deliberately doesn't filter by tenant: the ownership check lives in the use-case layer, where the resource is read and then verified to belong to the caller. So that this doesn't depend on anyone's memory, a pentest suite walks the routes with an id parameter and fails if any of them skips the check. It's the defence against the first risk in the OWASP API Security Top 10.
An MCP server lets an agent operate the account, with a brake on destructive actions.
Rivelko exposes an MCP server so an AI agent can create forms, query conversations and move deals. Destructive operations aren't available by default: an explicit window has to be opened before anything can be deleted, and the ordering between checking scope and opening that window is pinned by tests.
OWASP API Security Top 10 — API1:2023 Broken Object Level Authorization
Chosen to ship fast without mortgaging maintenance.
A complete product, from idea to deployment, solo.
Rivelko isn't client work: it's my own product. That means every decision —what to build, what not to, how to charge for it and how to sustain it— is mine, and the result can be audited end to end.
Rivelko is an AI conversational form builder. It turns a static contact form into a conversation that captures more leads, and then works every lead through pipelines, deals and tickets inside the same product.
A classic form shows every field at once and hands the result to an inbox. Rivelko asks one question at a time, adapts the tone to the sector, and drops the lead on a board where it's followed through to the close. It also offers classic forms when that's the better fit.
With a single script tag. The widget weighs 13KB gzipped, mounts in a Shadow DOM so the host site's styles can't affect it, and only runs on domains that have been authorised beforehand.
Ray Martín, fullstack product developer. It's an own product, built solo end to end: product, architecture, frontend, backend, widget, billing and infrastructure.
If you have a product in hand and want it shipped to production at this level of finish, let's talk.