Skip to content

Case study 02 / 06

Formtified

AI onboarding forms for freelancers and creators.

A creator describes a client's project in a sentence. The AI asks a few clarifying questions, then builds a complete onboarding form with a share link. The client fills it in on their phone, and every response lands in the creator's dashboard.

formtified.com
Formtified's landing page: Know exactly what your client wants to build
A client filling in an onboarding form on a phone, with a progress bar
Type
AI SaaS web app
Status
Live at formtified.com
Code
Public on GitHub
Built with
Next.js 16 and Neon Postgres

01

The problem

Before a freelancer can quote a job or start work, they need the client's requirements in writing, and most of that comes from an intake questionnaire.

Writing a fresh questionnaire for every kind of project is slow, and a generic one misses the details that matter for that particular job. Formtified's promise is its headline: know exactly what your client wants to build.

02

What I built

Formtified turns one sentence about a client's project into a complete onboarding form with a share link. The client fills it in on their phone, and every response lands in the creator's dashboard.

  • 01

    AI form generator

    The creator describes the project. The AI asks up to four quick clarifying questions, which can be skipped, then builds a tailored form.

  • 02

    Share it anywhere

    Every form gets its own link, with sharing built for WhatsApp.

  • 03

    A full form editor

    Reorder questions, change their type, mark them as required and add options.

  • 04

    A form clients finish

    The client form works on a phone, with a progress bar that tracks the required answers.

  • 05

    Responses and alerts

    Responses arrive in the creator's account with an in-app notification, an optional email alert and CSV export.

  • 06

    Admin dashboard

    Users, subscribers, forms, site visits, announcements and an activity log of every admin change.

03

How it works

Architecture

Hover a component to trace its connections.

Formtified architecture. Creator feeds Next.js 16 on Vercel (describe). Client feeds Next.js 16 on Vercel (submit). Next.js 16 on Vercel feeds AI provider (2 calls). Next.js 16 on Vercel feeds Neon Postgres (SQL). Next.js 16 on Vercel feeds Resend (alert).
  1. 1

    Describe

    The creator writes a sentence about the client's project.

  2. 2

    Clarify

    A first AI call returns up to four clarifying questions, capped at 900 tokens.

  3. 3

    Generate

    A second call returns the form as compact JSON, capped at 4,000 tokens. The server expands and validates every field before saving it.

  4. 4

    Share

    The form gets a public link, ready to send to the client on WhatsApp or anywhere else.

  5. 5

    Collect

    The client submits, the answers are saved to Postgres, and the creator is notified in the app and, optionally, by email.

04

Tech stack and why

  • Next.js 16 and TypeScript

    One project for the interface and the API routes, deployed to Vercel with no extra configuration.

  • Neon Postgres

    Plain SQL that can be read and run in Neon's SQL editor. The HTTP driver needs no connection pool, which suits serverless functions.

  • OpenAI-compatible AI API

    The AI code works with any OpenAI-compatible provider. Switching provider means changing three environment variables, not the code.

  • Email and password auth

    bcrypt for passwords and a signed session cookie (jose), so nobody needs a third-party account to sign in.

  • Resend

    Emails the creator when a client submits. It's optional: without it, in-app notifications still work.

  • Tailwind CSS v4

    Colours and fonts live in one file, so the whole look can change in one place.

05

Challenges and what I learned

  • Keeping AI costs down

    Each form uses two small AI calls with hard token caps. The model replies in JSON with one-letter keys, which cuts the output by about a third, and a low reasoning effort stops it spending tokens on thinking. Every call is logged with its tokens and time.

  • Not trusting the model's output

    Nothing the model returns is saved as it comes back. The server expands the compact keys and validates every field first.

  • Fair use before payments

    Each AI-generated form costs one credit, refunded automatically if generation fails, and a per-user hourly cap stops runaway use. Payments for credit packs are next.

  • Counting visitors without cookies

    Site visits are counted with no cookies and no third-party tracker. A visitor is a daily hash of the date, IP address and browser, which can't be turned back into an IP.

What I learned

  • Two small, structured AI calls are cheaper, faster and easier to check than one large open-ended prompt.
  • Model output should be treated like user input: validated before it gets anywhere near the database.

What this is and isn't

Not in version one yet: payments for credit packs, password reset by email, file uploads in forms, and custom branding on public forms.

Have something like this in mind?

Have a project, role or research opportunity in mind? Let's talk.