Map a profile onto form fields and emit a fill packet that never submits.
Job and intake forms ask the same twenty questions in twenty different field
names. FormLoop maps a structured profile onto a form's actual fields and emits
a fill packet — plus a DevTools snippet — so you review and submit yourself.
Every packet carries auto_submit: false. That is not a default you can flip
with a flag; there is no submit path in this tool at all.
Install
go install github.com/nstranquist/formloop/cmd/formloop@latest
Requires Go 1.26+.
Usage
formloop map --profile profile.json --form fields.json
formloop snippet --profile profile.json --form fields.json
map emits the field mapping as JSON. snippet wraps the same packet in a
DevTools console snippet you can paste into the page.
Try it against the committed fixtures:
formloop map --profile testdata/profile.json --form testdata/fields.json
formloop snippet --profile testdata/profile.json --form testdata/fields.json
Why a packet instead of an autofiller
An autofiller that submits is a liability: it applies to the wrong role, sends a
half-mapped form, and you find out afterwards. A packet is reviewable. You see
exactly which profile value landed in which field before anything is sent, and
the last action is always yours.
--profile takes a JSON profile. --jobkit-profile reads a YAML profile in
the jobkit layout instead, either from a path
you pass or from ~/.jobkit/profile.yaml:
formloop map --jobkit-profile ./profile.yaml --form fields.json
formloop snippet --jobkit-profile --form fields.json
Development
make gate # vet + test + smoke + leak scan
make publish-ready # run before tagging
make smoke runs every command documented above against the committed fixtures
and asserts auto_submit: false on each — so the safety property is a test, not
a claim in a README.
License
MIT.