AI Builder Day · Track 05 Give Yourself a Promotion
I built v3 of this system inside Clicklease and got promoted for it.
v4 is what the system looks like when you let it finish the job.
Vision: claude-opus-4-7
Structured output (json_schema)
Confidence-flagged
Async via Microsoft Teams
How we get to 10 → 2
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 working over Microsoft Teams:
| 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 |
The headline applies to any team running a paperwork queue. Plug in your numbers — average minutes per packet today, your team size, your loaded cost per FTE — and watch the math redo itself.
Compute cost basis: ~$0.008 per MCO on Sonnet 4.6 vision (typical), plus ~$0.0001 in Lambda invocation. Roughly $1/day at 100 MCOs.
The problem
Every trailer Clicklease leases — gooseneck flatbeds, dump trailers, enclosed cargo, horse trailers, equipment trailers — starts with a Manufacturer's Certificate of Origin. Faxed, hand-stamped, often-skewed. It lists the VIN, year, make, model, GVWR, axles, and the originating dealer. Before the lessee can title the trailer in their state, 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 — and trailers have their own fee tables in most of them), 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 ──▶ │ Packet PDF + FedEx │
│ POST /api/packet │ │ label both attached │
│ POST /api/ship │ │ to Equipment record │
└────────┬─────────────────┘ └────────────────────────┘
│
├── Anthropic API (vision extract from MCO)
├── Lease__c (lessee lookup by VIN)
├── Dealer__c (originating dealer normalization)
├── State_Rule__c (fee + tax math + carrier preference per state)
└── FedEx Ship Manager API (label PDF, dropped on printer queue)
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__cPreferred_Carrier__c (FedEx Overnight · FedEx 2Day · USPS Certified)Return_Receipt_Required__c (boolean)
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 equipment-finance shop running the same pattern — trailers, food trucks, generators, lifts.
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.preferred_carrier). The label PDF gets dropped on the printer queue and attached to the same Equipment record. Clerk never touches paper.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.The clerk reviews the AI-rendered TC-656 / REG 343 / 130-U onscreen, confirms the math, signs it. The legal-compliance review they should have been doing all along — and now have time for.
Packet, MCO, supporting docs, FedEx label — all printed and bundled by the system. The clerk physically moves the package from the desk to the pickup bin. That's it.
Between MCO arrival and FedEx pickup, everything is automated. The clerk contributes the two things only a human can contribute: a legal signature and physical handling of paper.
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