We automated our Fortune 50 vendor onboarding form with a single agent
Every enterprise partnership eventually arrives at "that form."
You receive an email from a Fortune 50 procurement or enablement team with an attached 4-page PDF questionnaire:
- Fill in company, contact, and prior engagement history.
- Compute a custom enterprise Security ID formula (
FFMMDDZZZZcombining name characters, birth dates, and government ID numbers). - Check the correct compliance boxes without disturbing existing form elements.
- Apply a verifiable digital signature, printed name, and date aligned to the exact baseline.
- Reply back to the same email thread with the completed PDF as a native attachment.
In most companies, this takes 15 minutes of manual dragging in Acrobat or Preview, hunting down passport numbers in Slack, computing the string by hand, and emailing back.
Today, we handed the incoming email thread directly to a Daslab agent. It completed the entire workflow in 45 seconds.
The pipeline#
The automation runs as an integrated five-stage tool loop:
- Email ingestion: The agent reads the incoming RFC 2822 email thread via Gmail API, extracting the questionnaire attachment and discovering the sender context.
- Multimodal credential extraction: Given raw photos of an ID and phone number, the agent parses the relevant fields (passport number, date of birth, country code).
- Deterministic string calculation: The agent calculates the required enterprise Security ID (
FFMMDDZZZZ) in Python code rather than guessing tokens:# Formula: FF (First 2 chars) + MMDD (birth date) + ZZZZ (last 4 of passport) sec_id = f"{first_name[:2].upper()}{birth_date.strftime('%m%d')}{passport_num[-4:].upper()}" - Sub-pixel PDF coordinate alignment: Using
PyMuPDF(fitz), the agent inspects the word-bounding boxes of the target PDF to locate the exact baseline of theSignature:,Print Name:, andDate:labels, stamping vector-aligned text and a digital signature block. - Threaded response: Uploads the durable artifact and sends the reply back to the originating thread with a native MIME attachment.
The code that fills the form#
Here is the entire PDF mutation script that runs in the agent sandbox:
import pymupdf
doc = pymupdf.open("questionnaire.pdf")
# Page 2: Contact info & checkboxes
p2 = doc[1]
p2.insert_text((180, 420), "mirko@blackbeltlabs.com", fontsize=11, fontname="helv", color=(0, 0, 0.5))
p2.insert_text((395, 442), "+1 (650) 387-8012", fontsize=11, fontname="helv", color=(0, 0, 0.5))
p2.insert_text((389, 478), "X", fontsize=11, fontname="helv", color=(0, 0, 0.5)) # Employee: No
p2.insert_text((449, 525), "X", fontsize=11, fontname="helv", color=(0, 0, 0.5)) # External worker: No
# Page 3: Security ID, signature badge, and date
p3 = doc[2]
p3.insert_text((220, 77), f"Security ID: {sec_id}", fontsize=11, fontname="helv", color=(0, 0, 0.6))
p3.insert_image(pymupdf.Rect(110, 142, 238, 178), filename="sig_badge.png")
p3.insert_text((305, 173), "Mirko Kiefer", fontsize=10.5, fontname="helv", color=(0, 0, 0.6))
p3.insert_text((480, 173), "27.08.2026", fontsize=10.5, fontname="helv", color=(0, 0, 0.6))
doc.save("questionnaire_completed.pdf")Why this matters for agent architecture#
Most agent demonstrations focus on open-ended generation: summarizing long documents, drafting emails, or writing poems.
The high-value enterprise workflows look nothing like that. They are messy, multimodal, and constraint-bound:
- You cannot hallucinate a single character of a Security ID.
- You cannot misalign the text baseline by 15 pixels without the form looking amateurish.
- You must keep the cryptographic email thread intact.
When agents operate inside a real execution sandbox with native Python, vision, and tool primitives, routine enterprise bureaucracy disappears completely.