aec-document-review
Document Review: an LLM agent that reviews architecture, engineering and construction (AEC) documents, as a Streamlit page. Upload drawings, specifications, submittals, reports or calculation packages; it reads the text, looks at the pages where the text is not the page (drawings, scans, tables drawn as lines), answers with the sheet or page it found each thing on, and hands back Word memos and marked-up copies of the PDF. A review aid: the judgement stays with the reviewer, and every markup it writes is signed as an AI draft.
It runs on two packages of the same project:
aec-agent-core, the shared core (model connections, vision calls, guards and records, Word and Excel), pinned exactly;planlens, the document layer (page maps, located text, tables, review markups), pinned exactly.
It imports nothing geotechnical. The geotechnical agent it was split from, GeotechStaffEngineer, is a separate package.
Install
pip install aec-document-review
pip install "aec-document-review[azure]" # Key Vault and certificate sign-in
Python 3.11 or later; it is tested on 3.11 and 3.12. A host behind a package mirror installs it from the mirror like any other package; a wheel installed by path works the same way.
Run
aec-document-review # streamlit run of the page
aec-document-review --server.port 8502 # further arguments go to Streamlit
or, in a host that starts Streamlit on a script of its own (an app.py of a
few lines):
from aec_document_review.tinyapps_entry import main
main()
With no model configured the page starts and says so in a banner.
Settings
Read from the environment, then from an Azure Key Vault (when KV_NAME
names one and the host has a managed identity), then from a .env file in
the working folder.
| Setting | What it is |
|---|---|
PROMPTER_URL, PROMPTER_MODEL, PROMPTER_API_KEY, PROMPTER_CA_BUNDLE |
The OpenAI-compatible model endpoint (the "Prompter"), its model (it must accept images), the key, and a CA bundle for the endpoint's certificate |
PROMPTER-API-KEY--<NAME>, PROMPTER_KEYS, PROMPTER_SHARED_KEY_FALLBACK |
One key per signed-in user (a Key Vault secret per user, or a JSON map), and whether a user without one may use the shared key |
KV_NAME |
The Key Vault the settings above may be read from |
GRAPH_TENANT_ID, GRAPH_CLIENT_ID, GRAPH_CLIENT_SECRET (or GRAPH_CLIENT_CERT, GRAPH_CLIENT_KEY, GRAPH_CLIENT_KEY_PASSWORD, GRAPH_CLIENT_CERT_THUMBPRINT) |
An app registration that may read and write the SharePoint site, by secret or certificate |
SHAREPOINT_SITE_URL (or SHAREPOINT_SITE_URLS), GEOTECH_SHAREPOINT_ROOT |
The site, or several, and the folder conversations are kept in; the cloud is read off the site's address (GRAPH_CLOUD to set it) |
X-Windows-Auth-Header (a request header, WINDOWS_AUTH_HEADER to rename it) |
The signed-in user, as a reverse proxy doing Windows sign-in passes it; each user's conversations are kept apart |
DEV_IDENTITY |
A stand-in for that header on a laptop (DOMAIN\user) |
GEOTECH_WEBAPP_DATA |
The folder conversations are kept in locally |
GEOTECH_MARKUP_AUTHOR |
Who markups are signed by (default: <user> via Document Review (AI draft)) |
GEOTECH_INSTRUCTIONS |
A folder of the deployment's own instructions for the agents: all.md for every agent and helper, then one <role>.md per role (main, general-purpose for the reading helper, figure). Each role's text goes last in its prompt, under protected rules the text cannot switch off, at most 4,000 characters a role; the connection diagnostics say what each role gets. Details: GeotechStaffEngineer's webapp/README.md, "Your deployment's own instructions" |
The settings keep the GEOTECH_ names the page had before the split, so a
deployment carries on unchanged.
The project's deployment notes are in its repository:
tinyapps/TINYAPPS.md
and the wrapper template
tinyapps/wrapper_repo/.
The review suite
The 38 review tasks the page is measured on, with deterministic checks, run through the core's suite framework on this page:
from aec_document_review.review_eval import score_review_suite
score_review_suite(model, out_dir="review_eval_run", docs_dir="docs",
dry_run=True) # lists the tasks and checks the documents
Licence
MIT. See LICENSE.
Metadata
Release files for aec-document-review 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| aec_document_review-0.1.0.tar.gz | 257.4 kB | With provenance | Details for aec_document_review-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| aec_document_review-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for aec_document_review-0.1.0-py3-none-any.whl |
Total release size: 535.5 kB
Release files / aec_document_review-0.1.0.tar.gz
| Download URL | aec_document_review-0.1.0.tar.gz |
|---|---|
| Size | 257.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cb31ac6505a5376a6ce4457a836b6444cfcf61436e0dcdcfda6ef2e5f5785f1d
|
|
BLAKE2b-256 checksum How to use checksums |
43c96629c4bc7c7a275f7111742dcc36956a56c095f5019d4e286265ddb92343
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 10, 2026.
Transparency logRelease files / aec_document_review-0.1.0-py3-none-any.whl
| Download URL | aec_document_review-0.1.0-py3-none-any.whl |
|---|---|
| Size | 278.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
02afd105ca4ad1a9ba3aa8e08879998ca4ef1861bb65152b2714b36939ba693f
|
|
BLAKE2b-256 checksum How to use checksums |
c04a00e2b6c7d24b11d7c7ebdd32cd8d0a914ed6b92e7977b682fd48b1e835fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 10, 2026.
Transparency logSecurity for aec-document-review 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for aec_document_review-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 10, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.