Case Study
One side of this lease has read a hundred others. Now you have too.
Built as "FinePrint" — a real, working prototype — view the repo. Both halves of the RAG pipeline (retrieval and generation) run live for every query, on real embeddings and a real, deliberately narrow knowledge base — no staged fallback data. Business impact figures below are reasoned estimates, not measured production numbers.
Landlords have seen dozens of leases; their lawyers wrote the template. A first-time renter is staring at theirs for the first time, trying to figure out if "landlord may enter for inspection" is normal or a problem. Today that means googling the individual phrase, sifting through forum answers and blog posts that rarely say which state's law they're describing, and — if the deadline to sign is close, which it usually is — giving up on researching every clause and just signing.
For someone diligent enough to actually try, this is realistically 1–2 hours of scattered searching per lease, with genuinely unreliable results at the end: general web search doesn't know that India's tenancy law is state-specific, or that Karnataka in particular hasn't adopted the central Model Tenancy Act that most online advice assumes applies uniformly.
| Friction | Root Cause | Impact |
|---|---|---|
| No single source of truth for "is this clause normal" | Indian tenancy law is state-specific and most online advice doesn't say which state it applies to | Renters can't tell if a clause is standard practice or a red flag |
| Confident answers regardless of actual knowledge | General search results and chatbots don't reliably ground answers in the current, applicable law text | A wrong confident answer is worse than "I don't know" — a renter might dismiss a real red flag or panic over a normal clause |
| Legal help is slow and expensive | A lawyer consultation costs money and takes days to schedule for a decision that has to be made before signing | Renters end up signing without review because the lease deadline moves faster than the legal-advice pipeline |
| Karnataka hasn't adopted the Model Tenancy Act | Most Indian tenancy content online assumes the central Act applies uniformly | A Karnataka renter relying on generic "Model Tenancy Act" advice could be told incorrect defaults |
voyage-4-lite) and compared by cosine similarity against every chunk in the knowledge base — the Model Tenancy Act 2021, Karnataka-specific rental practice, and a curated set of common red-flag clause patterns. The scan runs live across every provision, and the ones that actually match light up and stay lit.gemini-3.5-flash, thinking mode off — this is grounded classification, not open reasoning), instructed to ground every claim in them and cite the source.Error handling: if no retrieved chunk has meaningful similarity to the question, the model outputs classification: "insufficient_coverage", an explanation stating the knowledge base doesn't cover this, and an empty citations array — never a fabricated citation to a chunk that wasn't actually retrieved.
| Case | Input | Expected Output | What a Bad Result Reveals |
|---|---|---|---|
| Clear | The entry-notice example above, clearly covered by a retrieved chunk | red_flag, with an accurate, quoted citation | An uncited or paraphrased answer here means grounding isn't actually being enforced |
| Ambiguous / low-signal | A question about a clause type the 19-chunk knowledge base barely covers (e.g. a niche subletting clause) | insufficient_coverage, not a guessed classification | Answering confidently anyway means the system is prioritizing having an answer over having a correct one |
| Multi-signal / contradictory | A Karnataka question where the Model Tenancy Act chunk suggests one answer, but a Karnataka-practice chunk notes the central Act isn't adopted there | Both citations surfaced with the jurisdictional caveat stated explicitly, not a single confident answer | Silently picking the national answer would give a Karnataka renter incorrect defaults — exactly the failure mode this project exists to prevent |
| Edge case | An unrelated question pasted by mistake (e.g. "what's a good rent negotiation script") | insufficient_coverage or an explicit statement this isn't a fine/red-flag question, not a fabricated legal-sounding answer | Producing a confident-sounding answer to an out-of-scope question reveals the model filling gaps instead of admitting them |
| Metric | Before | After | Reasoning |
|---|---|---|---|
| Time to get a grounded read on one clause | ~15–20 min of googling and cross-referencing | ~30 sec | Retrieval plus grounded generation collapses the manual cross-referencing step into a single query |
| Time to review a full lease (~15 clauses) | ~1.5–2 hrs of scattered research | ~10–15 min | Asking each clause in turn replaces open-ended search with a targeted, grounded question |
| Jurisdictional accuracy stated explicitly | Generic advice often silently assumes national uniformity | Every answer states its jurisdictional coverage, including the Karnataka gap | A capability, not a rate — the system either states its coverage honestly or it doesn't, and the fallback triggers ensure it does |
The math, shown: 15 clauses worth checking in a typical lease, at ~7 minutes saved each (17–20 min of googling collapsed to ~30 sec of asking) ≈ 100+ minutes saved per lease reviewed — before counting the value of catching a red flag that a rushed, deadline-pressured skim would have missed entirely.
Risk: a narrow, 19-chunk knowledge base could give a false sense of complete coverage if the insufficient_coverage fallback doesn't trigger reliably. Mitigated by treating the similarity threshold as a product decision tuned conservatively — better to under-answer than overclaim, which is the project's own stated design principle.
Risk: users could treat a "worth_questioning" or "fine" classification as definitive legal advice rather than a grounded read of general patterns. Mitigated with persistent framing that this isn't a substitute for a lawyer on anything genuinely high-stakes — a large deposit dispute already escalated, for instance.
Design choice — what stays out of scope, on purpose: no state coverage beyond the Model Tenancy Act baseline and Karnataka, no lawyer marketplace, no accounts. This matches the project's own explicit scope stance rather than pretending to cover all of India before the jurisdictional-honesty work is actually done for each state.
Dependency: answer quality is bounded entirely by the knowledge base's completeness and chunking quality. A RAG system is only as good as what's actually indexed — this one is deliberately small rather than deliberately wrong.
voyage-4-lite) and real generation (Gemini gemini-3.5-flash), no staged fallback data anywhere in the flow.