Guide · 6 min read · Updated
How to build AI that cites its sources
By the SeedInov Studio team, from our own builds.
Why citations decide whether AI gets used
A bid team can spend three weeks on a proposal and lose it on day one, because the bid bond had to be the original, not a copy, and that rule sat in one sentence deep in the submission section. In that world, a confident wrong answer is worse than no answer.
So the product has to show its work. If every finding links to the page and clause it came from, checking it takes seconds and the team can actually rely on it.
The hard part is reading the document
Any model can summarise a clean page of text. Real tenders and contracts are not clean.
- Layouts. Two-column pages, headers and footers, tables that run across pages.
- Scans. Annexes that are pictures of paper, not text.
- Numbering. Clause numbers that restart in every appendix, so “§4.2” alone is not an address.
Most of the work in Syphon went into layout-aware parsing that keeps every sentence tied to its page and clause. Once that anchor exists, every later step can point back to the source.
Retrieve first, then write
The order matters. In Contract Blitz the contract is split into clauses with their section numbers and stored for retrieval. For each question, the relevant clause is retrieved first, the explanation is written from it, and the flag links back to it. Nothing is said about a contract that is not in the contract.
This is retrieval-augmented generation (RAG), but the principle is simpler than the name: the model is only allowed to work from text you can show the user.
Let it say “Not in the document”
Models are trained to be helpful, which makes them want to answer. A document AI needs an explicit, honest way out. In Syphon, when a tender does not cover a question, the answer is “Not in the document”. That one behaviour does more for trust than any accuracy figure.
Put the team's rules on top
Extraction finds what the document says. Rules decide what matters to this team: a disqualifying bid bond, a 90-day notice period, payment terms that disagree between sections. Syphon applies each team's own rules to every tender the same way, and Contract Blitz scores each contract against legal and industry norms.
| Layer | Job | Example |
|---|---|---|
| Parsing | Read every page faithfully, with anchors | Page 147, §9.3 |
| Extraction | List every requirement or clause | Original bid bond, 2% of bid value |
| Rules | Flag what matters to this team | Disqualifying if missing |
| Answer | Write from retrieved text, cite it | Linked to the exact line |
A quick checklist
- Keep page and clause anchors on every sentence from the start.
- Retrieve the passage before writing any answer.
- Give the model an honest “Not in the document” answer.
- Show the source one click away from every finding.
- Apply the team's own rules on top of extraction.
Syphon AI
Contract Blitz