-
-
Upload the BOQ and RA Bill history to kick off reconciliation, no manual cross-checking needed.
-
Running the 3 deterministic checks live: rate drift, cumulative cross-bill, and GST vs. HSN.
-
AI Summary flags the project as HIGH risk and surfaces the top issue with recommended action, hold payment until corrected.
-
One click drafts a ready-to-send vendor dispute email — item, discrepancy, rupee impact, and requested action, pre-filled.
-
Vendor Trends view: M/s Verma Constructions — 3 flags across 3 bills, ₹1,96,650 total disputed.
-
Every flag: WHERE, WHAT, rupee impact, confidence score, and citation — plus AI-recommended next actions.
Inspiration
Construction sites in India run on paperwork chaos. A single project's billing trail — the BOQ (Bill of Quantities), and every RA (Running Account) bill submitted after it — gets checked by hand, often against photos of paper bills forwarded over WhatsApp. Every RA bill has to be checked twice: against the original locked BOQ, and against every bill certified before it. Nobody can do that reconciliation reliably at scale, and the leaks are always the same three things: a rate that's quietly drifted from the BOQ, a quantity that's been billed twice across two different bills, or GST charged at the wrong rate for the line's HSN code. By the time an auditor catches it, the payment has usually already gone out the door. We wanted to catch it before that happens, not after.
What it does
ContractGuard ingests a project's full BOQ and its entire RA bill history, then runs three deterministic checks against them: rate drift, cumulative cross-bill double-billing, and GST-vs-HSN mismatches. Every discrepancy it finds is surfaced as a flag with five parts: WHERE (bill + line item), WHAT (a plain-language explanation), RUPEE IMPACT, a CONFIDENCE score, and the exact CITATION proving it. From there, a single click drafts a ready-to-send vendor follow-up email disputing that specific line — subject, body, rupee impact, and requested action, all pre-filled.
On our demo project — Shree Balaji Residency, Block B, contractor M/s Verma Constructions, a 15-line-item BOQ checked against RA Bills 1 through 3 — ContractGuard caught ₹1,96,650 in total disputed value across three flags: a GST/HSN mismatch on steel reinforcement (₹1,17,000), a cumulative double-billing on excavation (₹53,100), and a rate drift on brickwork (₹26,550).
How We built it
We split the build into three pieces that had to agree on one shared data
schema from day one. Mohar structured the BOQ and RA bill history into a
clean JSON schema (item_no, boq_rate, gst_pct, hsn_code for the BOQ;
bill_no, cum_qty_prev, cum_qty_todate, rate_charged,
gst_pct_charged for each RA bill line), and planted the three known
errors so the pipeline had a ground truth to be tested against. On the
logic side, we wrote three independent checks in Python: rate drift
compares rate_charged against boq_rate for the same item; the
cumulative check walks the bill history in order and compares each bill's
stated previous cumulative quantity against what was actually certified
in the true previous bill, catching re-billed quantities; and the GST/HSN
check cross-references gst_pct_charged against the correct rate for that
item's HSN code. Each flag carries a confidence score and a citation string
built directly from the source data. On the interface side, we built a
dashboard mockup that ingests the same data model — an executive summary
with a risk gauge, a document trail timeline, and a flag list ordered by
rupee impact — plus a one-click "Draft vendor email" action that pulls
flag details straight into an email template.
Challenges we ran into
Getting the cumulative cross-bill check right was the hardest part - a "double-billed" quantity isn't just a mismatch between two adjacent bills, it's a mismatch between what a bill claims was already certified and what actually was, which meant tracking a running certified-quantity ledger across the whole bill history rather than comparing bills pairwise. We also had to agree on one locked data schema early, since the detection logic, the sample data, and the dashboard all had to read the exact same field names, any drift there (e.g., "invoice" vs. "RA bill," or a renamed field) would have broken the pipeline silently. Keeping the demo deterministic and reproducible, no LLM guesswork in the actual math — was a deliberate constraint we held ourselves to throughout.
Accomplishments that we are proud of
Every flag ContractGuard raises is traceable: no black-box score, just a citation pointing at the exact BOQ line or bill entry that proves the discrepancy. We also proved the logic works end-to-end against real planted errors — the detection script runs against the sample data and lands on exactly three flags, at exactly the locked rupee amounts, with nothing extra and nothing missed.
What we learned
We came away with a much sharper sense of how much silent leakage in construction billing isn't fraud, it's just billing history nobody has time to cross-check by hand across dozens of line items and bills. We also learned how much a shared, locked data schema matters when three people are building interdependent pieces in parallel; agreeing on field names up front saved us from days of small integration bugs.
What's next for ContractGuard
Full vendor analytics across many projects and contractors (today's Vendor Trends view is intentionally a single mention-only screen), ingesting BOQs and RA bills directly from scanned PDFs and WhatsApp-forwarded images instead of structured JSON, and a "hold payment" workflow that integrates directly with a project's existing accounting or ERP system so a flagged bill is blocked automatically rather than just surfaced.