How the record was read
This app reads a single cloud database built by the insight-bridge pipeline from the public record of the Joint Standing Committee on Foreign Affairs, Defence and Trade's inquiry into the role of Australia's international development program in preventing conflict: 88 submitters, 150 documents, 1,789 passages, 482 submitter–topic memberships, 264 submitter-level stances and 32 sector perspectives. Everything on every page is a live query against Cloudflare D1 (the relational residual) and Vectorize (the embeddings), through fully-typed Drizzle. The same data is exposed to agents over an MCP server at /mcp.
The pipeline
- Collection & ingest
Every document on the inquiry’s page on the Parliament’s site was downloaded: the numbered submissions with their supplementaries and attachments, and the official Hansard transcripts of the public hearings. Each transcript was cut to the turns attributed to one submitter’s witnesses, so a submitter’s hearing evidence is its own document under the same stable id as its submission; the committee’s questions and other witnesses are left to the linked full transcript. Text was extracted from the PDFs, with OCR on image-only pages, then chunked into passages and embedded.
- Facets — the sector lens and the inquiry’s own records
Each submitter carries what the inquiry records about it (submission number, whether it wrote, whether it appeared and when) and one classification the pipeline made: its sector, from a six-value vocabulary. Sector is the one comparative lens in this app; every comparison is by who is speaking. Each document carries its type, the Parliament’s own descriptor, the hearing’s date, place and witnesses, and the link to the original file.
- Per-document extraction
Each document is read end-to-end by a language model against the consultation profile: the submitter’s substantive concerns, propositions, recommendations, requested actions and evidence, as key points with verbatim supporting quotes, every quote checked against the document text. Claims a submitter makes are distinguished from views it merely quotes; form boilerplate and procedural material are left out.
- Embedding & topic clustering
Every passage is embedded and clustered bottom-up with HDBSCAN under a cross-submitter distance penalty; the soft memberships that follow place each passage and each submitter against every cluster at a graded strength (exemplar / high-value / member), and each document is assigned its dominant cluster. An advisory junk review flagged the cluster whose synthesis reported no substantive shared content; a reviewer confirmed it, and it is excluded from every aggregate here.
- Perspective synthesis
Each cluster’s proposition and key points are synthesised first; then every exemplar and high-value submitter’s stance is assessed AGAINST the completed proposition — a position from Supports to Opposes, with framing, analysis, key points and quotes. The same is done per sector, giving the lens. The model never writes quote text at this stage: every citation is chosen from a catalogue of the submitter’s own sentences and verified before it is stored. Positions are therefore relative to each cluster’s own framing, never absolute agreement.
- The grouping tree
The substantive clusters are offered upward for grouping, generation by generation. The app reads the tree as the pipeline left it, however many generations it has; in this run the clusters did not merge further, so the topics stand on their own and nothing above them is chosen by hand.
- Preparation for this app
Outside the pipeline, before loading: the facet table was flattened to columns, with the organisation’s sector treated as primary where a submitter was placed in two; every quote the pipeline could not verify was re-checked with a rule that reads across page furniture; the tree was flattened per generation; and each topic’s place in the galaxy was baked once so the reading pages can draw it without WebGPU.
How to read the output
These rules apply to every Insight Bridge corpus. They are properties of the method, not caveats about a particular run.
- Positions are relative to a proposition. A source’s position records how it stands against that cluster’s particular framing — not whether it agrees with some absolute claim. The same source can support one cluster and redirect a neighbouring one that covers similar ground differently.
- Propositions are synthesised from the cluster’s own members. Because the argument is built from the sources that were grouped together, and those sources are then assessed against it, a degree of agreement is built into the method. Comparisons between groups carry weight; a corpus-wide agreement rate does not.
- Counts describe the corpus, not the world. Every corpus here is curated. “N sources say X” measures what was collected and is never a measure of how common X is in the field.
- Clusters differ in how many distinct sources back them. A long document can fragment across many clusters, so weight a theme by the distinct sources beneath it rather than by how many clusters it contains.
- Every extraction and position is a model judgement. Key points, stances, propositions and syntheses are produced by a language model reading the source. They inherit its calibration and are not determinations of fact.
This run's facts
Excluded after review. “Missing Summary: No Substantive Position Can Be Identified” — The cluster explicitly supplies no substantive content, identifiable proposition or distinguishing argument.
Witnesses without a numbered submission. (2026-02-23); (2026-02-23). They are counted as submitters; their evidence is their only document.
Placed in two sectors. (Academia and Individual, read as Academia); (Academia and Individual, read as Academia); (Individual and Academia, read as Academia); (Academia and Individual, read as Academia); (Company and Government, read as Company). The organisation's sector is primary; both values stay on the record.
Hearing evidence is an extract. Each hearing document holds one submitter's own turns from the official transcript. Read the linked full transcript for the committee's questions and the exchange around an answer before citing.