DCB / CURRENT APPLICATION / 14 SEPTEMBER 2026

Current App
Architecture & AI

A speaking brief for explaining the working prototype, with the technical detail one click away.

What runs where

Explore the architecture & sequence diagrams Inspect components or step through uploads, voice, assistant actions and PDF export.Current application architectureThe browser calls the Django API. Django stores records in SQLite and files on a private persistent volume. Background workers call OpenAI for AI work and Chromium for PDF rendering. AI results return through application validation and saved records.BROWSER / PWAResponsive interfacePlain JavaScript + HTML/CSSIndexedDB: unsynced workService worker caches the appDJANGO + REST APIApplication rulesLogin and access checksReport workflows + validationQueues background workSAVED STATESQLite + private filesRecords, revisions + audit trailOriginal media + exported PDFsPersistent /data server volumePDF RENDERERFixed draft reportSaved snapshot → HTML → PDFShared report assembly codePlaywright + ChromiumBACKGROUND WORKERSTwo work loopsProcessing: extraction + PDFsAssistant: model and tool runsStatus, retries + receiptsEXTERNAL AI / OPENAIModel inferenceDocument field extractionTranscription + structuringTool-using assistantHOSTING: COOLIFY → DOCKER → NGINX → DJANGO / WORKERSjobs + saved results
PartCurrent technologyWhy it is there
InterfacePlain JavaScript, HTML and CSSOne responsive app for capture and reporting.
BackendPython, Django, Django REST FrameworkAuthentication, workflow rules and saved data.
StorageSQLite + private filesystem volumeRelational records and original media for this single-server demo.
AIOpenAI APIs + OpenAI Agents SDKExtraction, transcription and controlled application tools.
Export / hostingPlaywright/Chromium; Docker, nginx, CoolifyRender frozen report snapshots and deploy the application.

Implementation: Storage settings ↗ · Processes ↗ · Container ↗

Three distinct AI paths

Upload PDF / image→Store original→Queue extraction→OpenAI → JSON→Validate + save

From document to report fields

The worker sends the PDF or document image to OpenAI with a schema of allowed fields. The model is instructed to return null for missing or uncertain values. Python validates the response before applying it.

Autofill is cautious: only blank, unchanged fields without prior human edits are automatically filled. Other extracted values remain alternative suggestions. The saved value links to the original document and processing job.

Traceability is document-level. The current extractor does not produce the exact highlighted page regions shown in the separate evidence-graph concept.

DEFINED PIPELINE

Walk through the fixed steps

The application chooses the route. Only the marked stages use AI.

What if the result takes a different branch?

Provider adapter ↗ · Apply rules ↗

Questions you may get

Short answers you can say aloud. Expand only what you need.

Is it a chatbot, an agent, or an AI pipeline?

All three interaction patterns exist, but they do different jobs. Document and audio processing follow fixed pipelines. The chat assistant uses an agent loop to choose from defined application tools.

Which models are you using?

The adapter defaults and deployment guide name gpt-5.6-luna for extraction and the assistant, and gpt-transcribe for audio. These are configuration choices, not hardwired architecture. The live environment can override them; this brief does not independently audit the running model settings.

Did you train a model? Is this RAG?

There is no custom training or fine-tuning pipeline in this implementation. The extraction path supplies documents directly to the model. The assistant retrieves saved information through application tools; there is no vector database or embedding-based retrieval pipeline in the inspected path.

Can the AI overwrite what an engineer entered?

Automatic document extraction preserves human edits and retains alternatives. An assistant edit explicitly requested through chat is a different path: deployment defaults allow direct changes after access, type and revision checks. Do not describe every AI change as requiring an approval card.

How do you prevent hallucinations?

The app limits extraction to allowed fields, validates structured output, retains originals and checks writes on the server. The assistant is instructed to use saved records and tool results. These controls reduce risk; they do not prove that every extracted value or generated answer is correct. The professional still reviews the report.

Is the AI making engineering decisions?

The AI assists with captured information and report tasks. It is instructed not to infer eligibility, inspection state, damage severity or professional conclusions. Certain workflow fields require explicit professional input. A generated report remains a draft, not professional sign-off.

Does it work offline?

The browser has an IndexedDB outbox and a service worker for prepared offline capture. Unsynced work stays on the device until it can sync. Cloud AI, server-side exports and the assistant need a connection; the assistant reads saved server state, not unsynced local changes.

What leaves our server?

For AI processing, the relevant document or audio is sent to OpenAI. The assistant also sends conversation context and tool results to its model. API credentials remain server-side. Responses calls set store:false and SDK tracing is disabled; that is not a blanket claim about provider retention or compliance.

How is the final PDF made?

Application code freezes a saved report version, assembles HTML and renders it with Chromium through Playwright. The PDF layout and numbering are produced by code, not invented by the model. Later edits create a new version rather than rewriting the earlier snapshot.

Is the evidence graph already built?

The graph you saw is a separate illustration. The working app has evidence IDs, source-linked fields, suggestions, revisions and report snapshots. It does not yet have the general reusable claims → verified facts → many reports knowledge layer or precise document-region citations.

What is MCP doing here?

MCP is an optional authenticated entry point to the same application tool registry, for an external assistant client. It needs OAuth and an explicitly linked user identity. Its implementation is present; this brief does not claim a live ChatGPT connection has been tested.

Could this scale into a product?

This is a single-server prototype with SQLite and persistent files. The application already separates the browser, business rules, workers and AI adapter. Production scale would require measured work on storage, concurrency and operations; it is not demonstrated by this demo.

What this briefing establishes

Based on source code at 0c62489 and checked-in deployment defaults, inspected on 14 September 2026. It explains implemented behaviour; it is not a fresh production-runtime, security or load-test audit.

The clean distinction: today’s app helps a professional turn captured evidence into a report. The evidence-engine concept adds a reusable, verified knowledge layer across many reports.

Further evidence: Python dependencies ↗ · Browser storage ↗ · Frozen report versions ↗ · PDF renderer ↗ · Deployment guide ↗