AI Builder Day · Track 05 — Give Yourself a Promotion
In August 2025 I was a title-and-registration clerk at Clicklease.
By December I'd been promoted because I started automating the queue.
Today there are 10 of us doing this work full-time. With this system, you keep 2.
The problem
Every vehicle Clicklease leases starts with a Manufacturer's Certificate of Origin — a faxed, hand-stamped, often-skewed document that lists the VIN, year, make, model, MSRP, and originating dealer. Before a customer can drive away with title in hand, a clerk has to read the MCO, transcribe every field into Salesforce, look up the lease record, pick the right state form (50 states, 3 fee regimes), fill it in, and ship it.
The solution
Clerkless compresses the mechanical 90% of that workflow into seconds, and routes only the parts that actually require a human's judgment back to the clerk.
A vision model extracts every field — VIN, year, make, model, color, fuel type, MSRP, dealer name, dealer address — as structured JSON, with a confidence score per field.
The system queries the lease database by VIN, returns the customer record (name, license, address, lease terms, payment), and routes mismatches to review.
The customer's garaging state picks the template (TC-656 / REG 343 / etc.). Fees and taxes calculate from per-state rules. The packet is laid out exactly like the real DMV form. Clerk reviews, signs, ships.
Anything below the confidence threshold (currently 85%) is flagged yellow with a "⚠ needs confirmation" pill and an inline editor. The "Render Packet" button stays disabled until the clerk has confirmed every flagged field. The model can return "Unknown" with 10% confidence rather than gambling — exactly the behavior you want from a system that ships into a regulated workflow.
Live demo
All three samples below are synthetic — no real Clicklease customer data, no real
MCO scans. The vision model is claude-sonnet-4-6 via the Anthropic API.
Same code path you'd ship into production.
samples/mco-clean.png for the clean run, samples/mco-bad.png for the exception path.In Salesforce
Clicklease's title-and-registration team already works inside Salesforce all day. Production Clerkless slots in as a Lightning Web Component on the Equipment record page, calls out to the Lambda via a Named Credential, and writes the rendered packet back as a ContentVersion attached to the record.
┌──────────────────────────────────────────────────────────────────────┐
│ Salesforce Equipment record │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │ <c-clerkless-wizard> (Lightning Web Component) │ │
│ │ [ Drop MCO ] [ Extract ] [ Review ] [ Render Packet ] │ │
│ └────────────────────────────────────────────────────────────────┘ │
└──────────────┬─────────────────────────────────────┬─────────────────┘
│ Apex callout via Named Credential │ ContentVersion
│ CLERKLESS_API │ written back
▼ ▲
┌──────────────────────────┐ ┌────────────────────────┐
│ Clerkless Lambda (AWS) │ │ ContentDocument │
│ POST /api/extract │ ─── reads ──▶ │ attached to Equipment │
│ POST /api/packet │ │ (signed PDF artifact) │
└────────┬─────────────────┘ └────────────────────────┘
│
├── Anthropic API (vision extract from MCO)
├── Lease__c (customer lookup by VIN)
├── Dealer__c (originating dealer normalization)
└── State_Rule__c (fee + tax math, per state)
NameBillingAddressPhoneEmail__c
VIN__cYear__cMake__cModel__cColor__cMSRP__c
Lessee__c (lookup → Account)Equipment__c (master-detail)Start_Date__cTerm_Months__cMonthly_Payment__c
NameLicense_Number__cAddress__cDefault_State__c
State_Code__c (UT, CA, …)Form_Code__c (TC-656, REG 343, …)Fee_Regime__c (Call-Or-Email · Base-Plus · Choice-By-Trailer-Type)Title_Fee__cRegistration_Formula__cSales_Tax_Rate__cDistrict_Tax_Default__cRequired_Fields__c (multipicklist)Packet_Template_Id__c
State_Rule__c is the load-bearing pieceFifty states, three fee regimes, dozens of edge cases — that's not code, that's configuration. One record per state. Putting the rules in Salesforce means:
8.00.State_Rule__c record. The Handlebars template for TX 130-U is the only code touch.@AuraEnabled(cacheable=false)
public static String generatePacket(Id equipmentId) {
Equipment__c eq = [
SELECT Id, VIN__c, Year__c, Make__c, Model__c, Color__c, MSRP__c,
(SELECT Lessee__r.Name, Lessee__r.BillingState,
Start_Date__c, Term_Months__c, Monthly_Payment__c
FROM Leases__r LIMIT 1)
FROM Equipment__c
WHERE Id = :equipmentId
];
Lease__c lease = eq.Leases__r[0];
State_Rule__c rule = [
SELECT Form_Code__c, Title_Fee__c, Registration_Formula__c,
Sales_Tax_Rate__c, Packet_Template_Id__c
FROM State_Rule__c
WHERE State_Code__c = :lease.Lessee__r.BillingState
LIMIT 1
];
HttpRequest req = new HttpRequest();
req.setEndpoint('callout:CLERKLESS_API/api/packet'); // Named Credential
req.setMethod('POST');
req.setHeader('Content-Type', 'application/json');
req.setBody(JSON.serialize(new PacketRequest(eq, lease, rule)));
HttpResponse res = new Http().send(req);
// Write the returned PDF as a ContentVersion attached to the Equipment record
return ContentVersionService.attach(equipmentId, 'TC-' + eq.VIN__c + '.pdf', res.getBody());
}
That's it. ~30 lines of Apex, one Named Credential, one LWC, the existing State_Rule__c records the team already maintains for the current TITAN system. The Lambda doesn't change between Clicklease and any other vehicle-finance company that wants to run the same pattern.
The async upgrade
The version of Clerkless you saw above blocks until a human clicks Confirm on every flagged field. That works when the clerk is at their desk. But real T&R work is interrupted by phone calls, dealer visits, and customer escalations — the clerk is rarely sitting in front of the queue waiting on the model. So we make the flag-and-wait flow asynchronous over Microsoft Teams.
State_Rule__c kick in. Either it routes to a backup clerk, or the packet sits in a "Waiting on review" queue with an SLA timer.Even if every clerk takes a full 10 minutes to review the flagged fields and sign the packet (a conservative number for an experienced reviewer):
| Today | With Clerkless + Teams | Saved | |
|---|---|---|---|
| MCOs / day | 100 | 100 | — |
| Human-min / packet | 60–90 | ~10 (review only) | 50–80 min |
| Human-hr / day | 100–150 | ~17 | 83–133 hr/day |
| FTEs required | 10 (at peak) | ~2 | 8 FTEs redeployable |
| Annual cost saved | — | — | ~$400K – $600K |
At fully-loaded clerk cost of $50K–$75K (salary + benefits + overhead). Conservative; doesn't count the downstream cost of DMV correction loops or the customer-experience cost of titles that come back wrong.
Beyond the MCO
The MCO is the hard input on the dealer side. On the customer side, the driver's license is the equivalent — and it's where most title packets actually come back wrong. The DL on file in Salesforce was captured at lease origination; by the time the title application ships, the lessee may have moved, renewed their license, gotten married and changed their name, or had their address transposed by an intake agent.
Clerkless treats the DL exactly like the MCO: vision extraction → compare to the Salesforce record of truth → flag every mismatch for the clerk to confirm via Teams.
The clerk gets a single Adaptive Card per packet — MCO flags and DL conflicts in the same card. They review once, confirm once, the packet renders with both the model's MCO extraction and the human-vetted DL data baked in. One review, two documents resolved.
The control plane
The clerk-facing piece is the in-Salesforce wizard. The ops-facing piece is the Clerkless management UI: a queue view of every packet in flight and an editable table of state rules. Both views run on the same Cloudflare Pages origin as the demo.
Every packet in flight, with status (Extracted → Awaiting Review → Rendered → Filed). Filters by state, clerk, status, age. Click any row → see the MCO image, the extraction, the customer record, the rendered packet. The same SLA timer that fires the Teams escalation lives here.
One row per state. The T&R lead opens it, sees Utah at $6.00 title fee + 6.85% combined sales tax, types a new value, clicks save. Next packet that renders for a Utah lessee picks up the new rule. No deploy. No engineering ticket. No three-week wait.
The close
Same hundred MCOs a day. Same packet quality. Same legal compliance. Eight people on this team can do something else now — dealer onboarding, customer escalations, the exception cases the model flags. The work that actually justifies their salary instead of the work the company is paying for because there's nobody else to do it.
The whole pattern — vision-extract → entity-pull → template-render → human-in-the-loop review over Teams — generalizes. The playbook is in PLAYBOOK.md. Pick the queue-shaped slice of your own job and follow it. The build itself is a weekend.
Caleb Mason · Automation Support Specialist, Clicklease · Title-and-Registration Clerk, Aug–Dec 2025 · caleb@themasons.us