You open the form builder. The cursor blinks in the empty Title field. HR has asked for a leaver form. You know roughly what should be on it — name, last working day, manager, reason — but you also know there's a fiddly bit you'll forget unless you start writing fields and discover what's missing as you go. Twenty minutes later you've got a working draft, and most of those twenty minutes were spent deciding what the form looks like, not building it.
The blank page is the bug. The form builder isn't slow at building forms; it's slow at starting them.
FreeITSM's AI Assist on the form builder fixes that bit specifically. Open a new form, click the AI Assist button in the toolbar, type a one-paragraph description of what you want, and a streaming Claude call generates a complete form definition — title, description, fields with the right types, sensible labels, required flags, dropdown options — and drops it straight into the editor. You then tweak whatever you want and save.
Total time from opening the builder to having a draft you can iterate on: about ten seconds. The twenty minutes of blank-page friction don't happen.
What it actually looks like
The button lives between Cancel and Save. Click it, type, hit Generate. Here's a real round-trip:
Six fields, sensible required-flags, the reason dropdown populated with the exact options the prompt suggested. The editor swaps in the result and switches to the Preview tab so you can read the form straight away. Anything off? Click into a label, retype it. Drag a field up or down. Mark a field required. Save.
Describe the form. Get the form.
Why it works
The risk people imagine when they hear "AI builds your form" is hallucinated nonsense — field types that don't exist, malformed JSON, vibes-driven labels. None of that happens here, and the reason is boring engineering rather than clever AI.
First, the schema is tiny. The form builder has exactly four field types: text, textarea, checkbox, dropdown. The system prompt explicitly forbids any other value. With a four-element enum, the model has nowhere to wander — either it picks one of the four, or the validator on the way back catches it and substitutes the closest match. There is no slot in the schema for "and Claude got creative and invented a date picker".
Second, nothing is saved automatically. The generated form lands in the editor as a draft. The Save button still has to be clicked by a human. This is the fundamental difference between AI features that are dangerous and AI features that aren't: dangerous AI is the kind that takes irreversible action without a human in the loop. Form Assist generates a draft you review. Even if the AI completely misreads your prompt, the worst outcome is you've wasted ten seconds and click Cancel.
Third, the response is validated server-side before it reaches the browser. Unknown field types get coerced to text. Empty dropdown options get a sensible default. An entirely empty result returns a polite error rather than a broken form. The front-end never has to defensively program against a malformed payload because the back-end has already cleaned it.
Constrained AI is the only AI worth shipping.
Streaming, because waiting is awkward
The call usually takes three to five seconds. That's short enough to be tolerable as a spinner, but long enough to feel awkward. So instead of a spinner, the JSON streams to the modal as the model writes it — the same claude.ai-style live token output the RFP Builder uses for its Pass 2 consolidation, sharing the underlying SSE helper code. A small monospace pane shows the JSON appearing line by line, with a counter that ticks up every time it spots a new "field_type": marker so you can see "fields detected: 4" climbing in real time.
It costs almost nothing to add streaming once you have the helper, and it makes a four-second response feel like progress instead of a delay. Worth it.
What this unlocks next
The build-from-scratch version is the obvious one. The interesting ones are the same plumbing pointed at slightly different prompts:
- Improve this form — "what's missing from this form for an HR leaver process?" The model returns a few additional fields that get appended.
- Shorten this form — "this form is overlong; trim it to the five most essential fields and explain what was dropped". The model returns a leaner version with a one-line rationale.
- Translate this form — "render the labels in Welsh / French / formal Japanese". Same JSON, different language strings.
- Match this form to that form — given an example form from another module, replicate the same fields-and-labels pattern for a different domain.
None of those need a new endpoint or new database tables; they need a new system prompt, a new button, and a small UI for accepting the operation type. The first version is on the shelf so the next four are an afternoon each.
AI done quietly
The conventional way of putting AI in a product is to plant a chat bubble on every screen and hope the user finds something to do with it. AI Assist on the form builder takes the opposite approach: a single button, in the place where the user is already stuck, that does one specific thing very well. No conversation, no chat history, no agents. Plain English in, working draft out, human in the loop on the save.
That's the shape worth aiming for in most ITSM workflows. The blank-page friction is real and AI is genuinely good at clearing it — but only when the schema is small enough to constrain, the human still owns the commit, and the streaming makes the wait feel like progress. Get those three right and the AI feature stops being a gimmick and starts being something you'd actually miss if it disappeared.