diff --git a/vision_runner.ts b/vision_runner.ts index e349e78..d4f4ebe 100644 --- a/vision_runner.ts +++ b/vision_runner.ts @@ -110,6 +110,7 @@ interface VisionRaw { how_did_you_hear: string | null; interested_in_updates: string | null; types_of_business_raw: string | null; + notes_business_raw: string | null; background_experience: string | null; total_purchase_price: string | null; down_payment_raw: string | null; @@ -274,7 +275,7 @@ const RESPONSE_SCHEMA = { "doc_type", "info_sheet_count", "info_page", "ca_page", "name_company", "prospective_buyer", "company", "phone", "cell", "email", "address", "state", "how_did_you_hear", "interested_in_updates", - "types_of_business_raw", "background_experience", + "types_of_business_raw", "notes_business_raw", "background_experience", "total_purchase_price", "down_payment_raw", "date_of_introduction_raw", ], properties: { @@ -293,6 +294,7 @@ const RESPONSE_SCHEMA = { how_did_you_hear: nullableString, interested_in_updates: nullableString, types_of_business_raw: nullableString, + notes_business_raw: nullableString, background_experience: nullableString, total_purchase_price: nullableString, down_payment_raw: nullableString, @@ -324,12 +326,13 @@ Task: Classify the document and transcribe form fields from a business brokerage - phone, cell, email, address, state - how_did_you_hear: "How did you hear about us" - interested_in_updates: answer/checkbox for receiving updates (transcribe what is marked, e.g. "Yes" or "No"), else null - - types_of_business_raw: "Type(s) of business interested in" (may span multiple lines — join with a space) + - types_of_business_raw: "Type(s) of business interested in" from the INFO SHEET only (may span multiple lines — join with a space). Do NOT put Notes-page content here. - background_experience: "Background/Experience" (may span multiple lines) - total_purchase_price: "Total Purchase Price" as written - down_payment_raw: "Down Payment" as written (e.g. "$350,000", "1.5M", "TBD") 6. If doc_type is "ca_only": transcribe what the confidentiality agreement page offers — the prospective buyer's printed or signed name into prospective_buyer, plus address/phone/email if they appear on that page. Everything not present stays null. 7. date_of_introduction_raw: the date written next to the buyer's signature on the confidentiality agreement page, verbatim (e.g. "6/25/26"), else null. +8. notes_business_raw (applies to ANY doc_type): Some packages contain a separate scanned "Notes" cover page — a handwritten sheet with fields like "Name:", "Date NDA Scanned:", and a two-column table headed "Business Interested In:". If such a Notes page is present, transcribe the business name(s) written in that table here, verbatim (join multiple entries with a comma). This is a DIFFERENT and INDEPENDENT source from types_of_business_raw (which comes from the info sheet) — never merge the two. If no Notes page exists or its table is empty, return null. A blank field, "N/A", "n", or an empty line = transcribe it as written; if truly empty, use null. Handwriting rules: Transcribe handwritten values letter by letter — do NOT complete them from context or from other fields. Email addresses are the most reliable spelling source on the page: read the email character by character, and if a handwritten name is ambiguous (e.g. B vs D), prefer the spelling that appears in the email address. Never alter the email itself to match your reading of the name. @@ -437,6 +440,7 @@ function mergeRecord(det: BuyerRecord, vis: VisionRaw, model: string): BuyerReco how_did_you_hear: cleanStr(vis.how_did_you_hear), interested_in_updates: cleanStr(vis.interested_in_updates), types_of_business_raw: cleanStr(vis.types_of_business_raw), + notes_business_raw: cleanStr(vis.notes_business_raw), background_experience: cleanStr(vis.background_experience), total_purchase_price: cleanStr(vis.total_purchase_price), down_payment: dp.value,