DEV Community

A small, not-so-smart model went from 10% to 99.6% at reading property deeds for $1.15, and it says 'check this line' instead of bluffing

Advik Divekar on October 25, 2026

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady N 86°29' E, 103.2 feet. That is one line of a propert...
Collapse
 
pengeszikra profile image
Peter Vivo • • Edited

Your program looks coole, my vote on you! Sure I don't have right to vote - but yo know I up your project.

Collapse
 
advikdivekar profile image
Advik Divekar •

Thank you so much!! This means a lot to me❤️

Collapse
 
emilywoodsnyc profile image
Emily Woods •

Testing the validator against your generator's own answers is the detail I'd keep next to the accuracy score. Before adding more training data, I'd freeze a small set where the polygon closes but a landmark or unit is wrong, then track whether each check catches it. That's the distinction I'd want to explain in a prachub ML question too like how I tested the model and how I tested the checker.

Collapse
 
advikdivekar profile image
Advik Divekar •

Thanks, that's a great point. A deed that closes but has a wrong landmark or unit is exactly the case the closure check can't catch. I'll freeze a small set like that and track which check catches each one.

Collapse
 
qisuancloud profile image
Alex Chen •

The most convincing result here is not the accuracy jump itself, but the change in failure mode: a wrong answer that is flagged is manageable, while a wrong answer presented as certain is not. Separating reading from arithmetic, and requiring the parcel to close before anything is drawn, turns the model output into a claim that can be checked rather than a verdict to trust. I would be curious how this approach holds up on real deeds where the description uses deflection angles or station and offset formats, which the post notes are not yet covered. If those cases are routed to review with the suspect line highlighted, rather than forced through the same checks, the safety argument becomes even stronger.

Collapse
 
advikdivekar profile image
Advik Divekar •

Thank youu, that's exactly the point I was going for. A flagged wrong answer is something you can fix. A confident wrong one is the dangerous kind. And you're right about deflection angles and station/offset formats. The plan is to send those to review with the suspect line highlighted, not force them through checks that weren't built for them.

Collapse
 
sikamikanikobg profile image
Arsen Apostolov •

the 500-deed row is where this post actually earns its trust claim: $0.08 and the silent-error count is zero, long before the 99.6% column. that jump matters more than the accuracy numbers for anyone who would put this in front of a title examiner. one gap i would poke at before real deeds: the generator writes prose from known truth, so the model has never met a deed that is wrong but self-consistent — a clerk error that parses, closes to 1:5,000, and matches its own sentences. the varas test shows the decoder rejects the unknown token, but a wrong number that still satisfies all five checks is the shared blind spot. how would you catch that kind of deed?

Collapse
 
advikdivekar profile image
Advik Divekar •

Thanks for pointing this out! You're right that a deed can be wrong while still passing all our checks. I'm working on addressing this by adding a cross-validation layer that compares extracted bearings, distances, and monument references against independent survey records wherever available. This would help catch errors that are internally consistent but don't match the actual survey data.

Collapse
 
golflover2023 profile image
golflover •

The model-reads/code-does-math split is the real headline here. The LoRA bump is nice, but the 5 to 0 drop in wrong-and-unflagged answers comes from never letting the model grade its own geometry. Closure checking works because deeds have a physical ground truth to fail against - most document extraction has none, which is exactly why this pattern rarely ports cleanly to invoices or contracts. One question: what happens on old deeds written before survey adjustments, where systematic magnetic declination offsets every bearing but the polygon still closes? The one-digit search would find nothing wrong and the closure check would pass. Does the NEEDS HUMAN REVIEW stamp ever fire on self-consistent but globally wrong data?

Collapse
 
advikdivekar profile image
Advik Divekar •

Thanks for highlighting it! We use multiple independent checks, including closure, clause-level validation, and a separate regex reader. But you're right that a systematic offset could pass these checks. The next layer would be validating bearings against the deed's survey date and reference system.

Collapse
 
khushighosh profile image
Khushighosh •

The one-digit-fix search is a great touch. A classic surveyor’s trick might make it cheaper and more trustworthy: the direction of the misclosure vector hints at which side is wrong. If it’s roughly parallel to a side, suspect that side’s distance; if it’s roughly perpendicular, suspect its bearing. Ranking candidate fixes by that alignment would help when more than one single-digit change closes the parcel. What does DeedReader show in that case, all candidates or only unique fixes?

Collapse
 
advikdivekar profile image
Advik Divekar •

Great tip, thank you @khushighosh! Right now DeedReader shows all candidates, not just unique ones: up to three fixes that close the parcel, ranked by how tightly each one closes, and each gets its own "apply" button. So if two fixes both work, you see both and the human picks. Ranking by misclosure direction is a really nice idea. A fix that agrees with the error vector (along the side means distance, across it means bearing) should go to the top. It's cheap and easy to explain, so I'm adding it to the list.

Collapse
 
robertpaschal profile image
Odinaka Robert Nnamani •

Refusing to draw the parcel beats a confident map that is 27 feet off and smiling about it

Collapse
 
advikdivekar profile image
Advik Divekar •

Agreed. It flags the bad line and shows the one-digit fix instead of drawing a wrong parcel.

Collapse
 
robertpaschal profile image
Odinaka Robert Nnamani •

yeah, flag the line, not a redrawn parcel.

Collapse
 
janhavi_sha profile image
Janhavi Shah •

Damnnn I loved your concept!

Collapse
 
advikdivekar profile image
Advik Divekar •

Thankyouu!!😊

Collapse
 
rajanjain5427 profile image
Rajan jain •

This amount of significant change is crazy asf!! Can you share your claude memory or anything you explicitly mentioned it to focus on, in order to get such low cost while sft

Collapse
 
advikdivekar profile image
Advik Divekar •

Thanks! No special memory or prompt. Most of the gain comes from the checks around the model and the training itself.

Collapse
 
kylejamieeeee profile image
Kylejamie •

I really enjoyed reading both the articles of yours. Agreed with flagging the feet off rather than a false structural confidence. The results are very impressive!!

Collapse
 
advikdivekar profile image
Advik Divekar •

Glad that you liked both of them! Thank you sm!!😊

Collapse
 
sarthak_narula_5789cd042d profile image
Sarthak Narula •

Interesting read Advik, great stuff

Collapse
 
advikdivekar profile image
Advik Divekar •

Thank you!! @sarthak_narula_5789cd042d 😊

Collapse
 
hordii_bohdan profile image
Bohdan Hordii •

Calibrated uncertainty on a dollar-fifteen budget will always out-engineer burning enterprise compute on bloated frontier models that hallucinate with confidence.

Collapse
 
advikdivekar profile image
Advik Divekar •

Thank you @hordii_bohdan! That's the whole idea. A small model that says "check this line" is more useful than a big one that's confidently wrong. And because plain code does the math, the confidence actually means something.

Collapse
 
heet_ranpura profile image
Heet Ranpura •

Impressive results! A great example of how focused fine-tuning and the right data can outperform brute-force model scaling!!

Collapse
 
advikdivekar profile image
Advik Divekar •

Coming from you is great bro! Thankyou!!

Collapse
 
manan_m34 profile image
mananmra •

great work

Collapse
 
advikdivekar profile image
Advik Divekar •

Thankyouu!☺️

Collapse
 
vishalg3108 profile image
Vishal •

Unbelievable work!!

Collapse
 
advikdivekar profile image
Advik Divekar •

Thank you!!😄

Collapse
 
nitikapatil_34569801d298d profile image
nitikapatil •

Really strong explanation of the whole thing, good read!!

Collapse
 
advikdivekar profile image
Advik Divekar •

Thank you so much!! 😊

Collapse
 
anjali_patil_7b9625b96ed2 profile image
Anjali Patil •

This is great!!

Collapse
 
advikdivekar profile image
Advik Divekar •

Thankyouu!!😊