/checkAI Packager — Lender Gateway
Auto-check cases against your lending criteria before they reach your underwriters.
Who is this for
Lender Integration Team / Head of Operations at a mortgage lender. You receive hundreds of broker-submitted applications daily via your CRM. Most don't meet your specific lending criteria and waste underwriter time. You want Curvestone to sit between the broker and your underwriting desk, auto-checking every case and rejecting ones that don't meet criteria before a human ever sees them.
What you'll do
- 1Configure your lender-specific criteria profile with Curvestone
- 2Integrate the API into your case intake pipeline
- 3Every inbound case gets auto-checked against your 500+ lending criteria
- 4Cases that fail get auto-rejected with specific reasons; the broker is notified
- 5Only clean, criteria-matching cases reach your underwriters
The API call
Every inbound case from your broker portal triggers a lender_criteria depth check against your lender profile. The on_reject field configures automatic broker notification when a case fails.
from curvestone import Agentagent = Agent() # reads CURVESTONE_API_KEY from env# Every inbound case from your portal triggers thisresult = agent.check(case_type="residential_mortgage",depth="lender_criteria",modifiers=["interest_only", "remortgage"],documents=[open("application_pack.pdf", "rb"),open("fact_find.pdf", "rb"),],reference="APP-2026-14221",lender_profile="lender_natwest_v2026",metadata={"source": "broker_portal","broker_firm": "premier_mortgages","submitted_via": "crm_integration",},on_reject={"notify": "broker","method": "email", # or "api_callback""template": "criteria_rejection",},)print(f"Triage: {result.triage}")print(f"Checked: {result.criteria_checked}")print(f"Failed: {result.criteria_failed}")
Response — rejected case
When a case fails lending criteria, you get the specific rules that weren't met and the broker is notified automatically.
1{2 "id": "job_8kTx3mNpQ7",3 "type": "check",4 "status": "completed",5 "triage": "rejected",6 "reference": "APP-2026-14221",7 "processing_time": "45s",8 "lender_profile": "lender_natwest_v2026",9 "criteria_checked": 247,10 "criteria_passed": 241,11 "criteria_failed": 6,12 "rejections": [13 {14 "criteria": "Maximum LTV for Interest Only",15 "policy": "Max 75% LTV for interest only remortgages",16 "actual": "82% LTV",17 "status": "fail"18 },19 {20 "criteria": "Interest Only Repayment Vehicle",21 "policy": "Acceptable vehicles: pension, investments, property sale",22 "actual": "No repayment vehicle documented",23 "status": "fail"24 }25 ],26 "notification": {27 "sent_to": "[email protected]",28 "method": "email",29 "template": "criteria_rejection",30 "sent_at": "2026-02-21T14:32:00Z"31 },32 "cost": "£3.00"33}
Response — passing case
When a case meets all criteria, it is forwarded straight to your underwriting queue.
1{2 "id": "job_4nRy7kLpM2",3 "type": "check",4 "status": "completed",5 "triage": "pass",6 "reference": "APP-2026-14222",7 "processing_time": "42s",8 "lender_profile": "lender_natwest_v2026",9 "criteria_checked": 247,10 "criteria_passed": 247,11 "criteria_failed": 0,12 "forwarded_to": "underwriting_queue",13 "cost": "£3.00"14}
What happens
Lender criteria, not compliance
The lender_criteria depth checks against the lender's specific policy document — their Knowledge Bank criteria, which can include 500+ rules per lender. Unlike compliance checks which assess regulatory adherence, criteria matching checks whether the case meets the lender's commercial lending policy.
Auto-rejection with specific reasons
Cases that fail are auto-rejected with the specific criteria that weren't met. The rejections array lists each failed rule, the lender's policy statement, and the actual value found in the application — giving the broker a clear picture of what went wrong.
Broker notification closes the loop
The on_reject configuration sends an automatic notification to the broker explaining exactly what's wrong, so they can fix and resubmit or try a different lender. This eliminates the back-and-forth that wastes underwriter time. You can choose email or API callback depending on your integration.
Only clean cases reach underwriters
Passing cases are forwarded directly to your underwriting queue. Your underwriters only see applications that have already been validated against every criteria rule, so they can focus on credit assessment and judgment calls rather than manually checking whether basic lending criteria are met.
Next steps
Case Types & Depths
Full reference for case types, lender profiles, and the lender_criteria depth tier.
Read moreWebhooks & Integration
Set up webhooks to receive real-time notifications when checks complete or cases are rejected.
Read moreAuto-Triage Cases
A lighter, cheaper triage option when you need volume over depth.
Read more