% Author: Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca \providecommand{\figdir}{../figures} \section{Multi-agent architecture} \label{sec:architecture} The architecture is designed to make the theory of Section~\ref{sec:theory} testable rather than to produce a convincing valuation dialogue. Every design choice serves one of three purposes: to fix the information set so that the arms differ only in how they process evidence, to partition that evidence across roles in a way that can be removed or permuted, and to record every message so that the audit of Section~\ref{sec:design} can trace each number in the paper to a stored artefact. Figure~\ref{fig:architecture} gives the overall flow; the subsections describe the evidence packet, the roles and their views, the output contract, the provider layer, the deliberation protocols, the aggregation rules and the audit trail. \begin{figure}[t] \centering \includegraphics[width=\textwidth]{\figdir/fig_architecture.pdf} \caption{Flow of one property through the agentic arms.} \label{fig:architecture} \begin{minipage}{\textwidth} \footnotesize \textit{Notes.} The evidence packet is built once per property under the information-set rules of Section~\ref{subsec:data_infoset} and is identical for all arms. Each role receives only the sections of its view. Arm~F stops after round~0; arms~G, H and~I continue through the pre-specified number of critique-and-revision rounds. Aggregation applies the rules of Section~\ref{subsec:arch_aggregation} to the final estimates of the roles. Source: \texttt{figures/fig\_architecture.tex}. \end{minipage} \end{figure} \subsection{The evidence packet} \label{subsec:arch_packet} For each subject property the pipeline assembles one evidence packet containing four sections, each identified by an evidence code that agents must cite. The subject section, coded P, carries the valuation date, the information cutoff, the property class and subtype, the municipality and borough, the rounded coordinates, the roll attributes (floor area, land area, year built, storeys, number of dwellings, new-construction flag), the land, building and total assessment in force at the sale with the roll's reference date, the prior sale of the same unit when one exists strictly before the cutoff, and an explicit list of the fields that are missing. The subject's price never enters the packet; the builder asserts its absence on every packet. The comparables section, coded C01 to C12, is produced by a deterministic retrieval rule that is the same for every arm and is therefore not a source of difference between them. Candidates are sales of the same property class on other roll units, registered strictly before the cutoff and within 540 days of it. The search radius expands from one to three to ten kilometres and stops at the first radius that yields at least three candidates; if ten kilometres still yields fewer than three, the search is extended to 25 kilometres and the packet is annotated accordingly, which occurred for one of the 1,140 subsample subjects. Candidates are ranked by a similarity score, lower being better, that adds the distance divided by the retained radius, one and a half times the absolute difference in log floor area, half the absolute difference in construction year divided by fifty, and half a recency term proportional to the age of the sale within the look-back window; the twelve best receive the codes in score order. Each comparable carries its sale date, price, attributes, distance to the subject, and its ratio of price to assessment. The retrieval is intentionally simple and transparent; a role that disagrees with it can discard comparables and must say why. The market section, coded M1, summarises the local market from sales dated on or before the cutoff: the municipal median price, median price per square metre and sales count for the same class over the preceding twelve months; a monthly municipal index of median price per square metre, with base 100 at the first month with at least five sales and with the cutoff month flagged as partial, falling back to the regional series when the municipality has fewer than twenty sales in twelve months; the regional median and its year-over-year change; the number of sales of all classes within three kilometres as a liquidity measure; and the median ratio of price to assessment within three kilometres. A mortgage-rate field exists in the schema and is null in this snapshot, which the agents are told. The geographic section, coded G1, carries the flood-zone status where mapped, the number of transit stops within one kilometre, the population density and median household income of the dissemination area, and the distance to the nearest of six central business districts, with notes stating when flood exposure is unmapped. The packet closes with notes about the retrieval radius, the number of candidates and any extension. \subsection{Roles and least-privilege views} \label{subsec:arch_roles} The default committee comprises twelve roles listed in Table~\ref{tab:roles}. Each role is a simulated analytic role defined by a system prompt and a view, the subset of packet sections it may see. The agents are not licensed Quebec appraisers, lenders, brokers or inspectors, and their prompts say so; nothing they produce is a professional opinion of value. The views implement the evidence partition $A_k$ of Assumption~\ref{ass:evidence}: the building-condition specialist sees the subject alone and is instructed to state that no inspection has been performed and that condition is unobserved; the market economist sees the subject and the market context but no comparables; the comparables specialist sees the subject and the comparables but no market context; the geospatial specialist sees the subject, the geographic section and the market context; four roles, among them the data auditor and the skeptic, see the whole packet. The union of the views is the whole packet, and the overlap between views is substantial, as it is in any committee of practitioners; the partition is what the full-view variant of arm~G removes and what the placebo of arm~I preserves. \begin{table}[t] \centering \begin{threeparttable} \caption{The twelve default roles, their evidence views and mandates.} \label{tab:roles} \footnotesize \begin{tabular}{@{}llp{8.2cm}@{}} \toprule Role identifier & View & Mandate (one line) \\ \midrule \texttt{appraisal\_method} & P, C, M & Reconcile the sales-comparison, cost and income approaches and derive the point from the reconciliation \\ \texttt{comparables} & P, C & Rank, discard and adjust comparables; one traceable adjustment per retained comparable \\ \texttt{hedonic} & P, C, M & Treat the comparables as a local sample and reason from implicit prices of attributes and time \\ \texttt{market\_economist} & P, M & Convert the roll value to the valuation date from price levels, index path, liquidity and assessment ratio \\ \texttt{building\_condition} & P & State that condition is unobserved; reason only from vintage, size and the land--building split \\ \texttt{geospatial\_risk} & P, G, M & Quantify flood exposure, transit access, density, income and distance to the centre against local levels \\ \texttt{underwriting} & P, C, M, G & Prudent collateral value; downside stress in the lower quantile and in the counterarguments \\ \texttt{buyer\_wtp} & P, C, M, G & Price at which the marginal household is indifferent between the subject and its best substitute \\ \texttt{seller\_strategy} & P, C, M & Expected closing price after normal marketing time, with the assumed negotiation gap \\ \texttt{rental\_usercost} & P, C, M & Income-multiplier or user-cost reasoning with yield assumptions stated as assumptions \\ \texttt{data\_auditor} & P, C, M, G & Report inconsistencies and apparent post-sale information; estimate from the reliable evidence only \\ \texttt{skeptic} & P, C, M, G & Find the strongest reasons the committee could be wrong; propose a value only when justified \\ \bottomrule \end{tabular} \begin{tablenotes}[flushleft] \footnotesize \item \textit{Notes.} P, C, M and G denote the subject, comparables, market and geographic sections of the evidence packet. Identifiers and views are those of \texttt{src/agentic\_valuation/agents/roles.py}; the mandates paraphrase the role-specific prompts, whose SHA-256 hashes are part of the protocol freeze. All roles are simulated analytic roles, not licensed professionals. \end{tablenotes} \end{threeparttable} \end{table} Eight optional roles extend the committee to twenty for the robustness analysis: a construction-cost estimator, an urban-planning analyst, a macro and mortgage-rate analyst, an energy-efficiency analyst, a climate-risk analyst, a regional market expert, an uncertainty auditor and a fairness auditor, each with its own view. A generalist role with the full packet serves arms~E and~J. The placebo committee of arm~I consists of twelve members whose prompt contains no specialised mandate, only an instruction to apply general valuation judgement to the evidence visible, and whose views are, member for member, those of the twelve default roles; an alternative placebo permutes the twelve default prompts across the twelve default views with a seeded permutation. The system prompt of every role is the concatenation of a shared preamble, which states the task, the information cutoff, the evidence discipline and the answer format, the role identifier, the role-specific text, and the output rules; it is constant across properties, and its hash is recorded. \subsection{The output contract} \label{subsec:arch_contract} Every estimate turn must return one JSON object validating against a typed schema. The object contains a point estimate in CAD as of the valuation date; five quantiles at the 5th, 25th, 50th, 75th and 95th percentiles, required to be non-decreasing and to bracket the point; the list of evidence codes actually relied upon; a list of adjustments, each naming a comparable, the adjusted price after the stated adjustments and the reason; key assumptions; missing data; a confidence rationale; counterarguments; and a reasoning summary of at most 120 words. Critique turns return a set of critiques, each naming a target role, an agreement flag, the evidence-based points, the codes cited and an optional suggested value. The runtime validates the object against the schema and the ordering constraints and, on failure, returns the validation error to the model for at most two corrective retries; a turn that still fails is recorded with its error and a null estimate. Failed turns are excluded from the committee state and from aggregation and are never imputed, so that a committee of twelve may on occasion aggregate eleven estimates, and the transcript says so. The contract is what makes the faithfulness audit possible: cited codes can be checked against the packet, adjusted prices against raw comparable prices, and the point against the hull of the adjusted comparables. \subsection{Provider layer} \label{subsec:arch_providers} Two providers are supported through their official software development kits, the Anthropic Messages API and the OpenAI Responses API, each with the vendor's structured-output facility used to constrain the response to the schema. Reasoning is left to the vendor's adaptive mode at a medium effort setting; no temperature, nucleus or other sampling parameter is sent, both because the current Anthropic models reject them and because the design relies on the vendor's default sampling to generate the variation between repeated calls that arm~J needs. The two models of the main experiments are cost-matched: the mid tier pairs \texttt{claude-sonnet-5-5} with \texttt{gpt-6.1-sol}, both listed at two dollars per million input tokens and ten dollars per million output tokens on the vendors' pricing pages on 2026-10-27; the small tier pairs \texttt{claude-haiku-5-5} with \texttt{gpt-6-luna}, both at ten cents and fifty cents. Identical list prices mean that a committee with one provider and a committee with the other face the same token budget, so that a provider contrast is not a budget contrast. Three committee compositions are run: all-Anthropic, all-OpenAI, and a mixed committee in which the twelve roles are assigned to the two models by a balanced permutation seeded by the run seed and the property identifier, recorded in the transcript, so that no role is systematically tied to a provider. A mock provider that parses the packet and returns schema-valid estimates allows the whole pipeline and its tests to run without keys. The prompts are laid out for the vendors' prefix caching. The system prompt of a role is identical for every property of a run and carries the cache breakpoint; everything that varies, the packet view, the committee state, the verification flags and the task line, is in the user message. The twelve role prompts are therefore cached after the first property, and critique and revision turns of the same role within a property share the cached prefix. The ledger records, for every call, the model identifier, the prompt hash, the input, cached and output token counts, the estimated cost at list price, the latency, the request identifier and the number of validation retries; costs in the paper are estimates from this ledger, not invoices. \subsection{Deliberation protocols} \label{subsec:arch_protocols} Arm~F runs the twelve roles concurrently on their views and stops; its estimates are the round-0 vector $x^{(0)}$ of the theory. Arm~E is the same with a single generalist on the full packet. Arm~G is the structured debate. Round~0 is identical to arm~F. In each subsequent round every role first receives the committee state and returns a critique set, then receives the committee state together with the critiques addressed to it and returns a revised estimate. The committee state is an anonymised table of the current point estimates, 5th and 95th percentiles and reasoning summaries of the other members, identified by role and never by model or provider, together with the committee median of the current points and the list of evidence codes that other members cited and that lie outside the recipient's own view. Evidence exchange is thus by identifier only: a role learns that another member relied on the geographic section, never its content, and never anything about the price. The revision instruction states that an estimate may be kept unchanged and that moving toward the committee without an evidential reason is an error, which is the operational form of the distinction between the revision term $\zeta$ and the anchoring weight $\lambda$ of Definition~\ref{def:opinion}. The number of rounds is fixed in advance from the grid $\{1,2,4\}$. A stopping rule ends the debate early when the interquartile range of the log points changes by less than one percent between consecutive rounds; the event is recorded in the transcript with the round at which it occurred, and the rounds actually run are reported, but the rule is never used to select the best round, in keeping with Proposition~\ref{prop:consensus}, under which convergence is not evidence. Arm~H adds two elements to a two-round debate. The skeptic is removed from the rounds and blinded: it sees the packet and the committee's final estimates only, never the discussion, and its verdict is appended as a separate estimate. A deterministic verification tool runs on every estimate after each round and flags cited codes that do not exist in the packet, cited comparables that do not exist, adjusted prices more than forty percent away from the raw comparable price, and points outside the range of the adjusted comparables widened by a quarter; the flags are injected into the next prompt of the flagged member, which must address them. Arm~I keeps the mechanics of arm~G, two rounds, the same views, the same committee state, and replaces the role prompts by the placebo prompts, so that the only difference between G and I is the specialised mandate. The full-view variant of arm~G keeps the twelve default prompts and gives every role the whole packet, so that the only difference between G and G-fullview is the evidence partition. Arm~J is the cost-matched single agent: the generalist is sampled twelve times independently on the same prompt, which matches the number of round-0 turns and, in the pilot token counts, the token budget of arm~F, followed by a two-step chain in which the agent critiques its own first sample and then refines it in the manner of self-consistency and self-refinement \citep{wang2022selfconsistency}; its outputs are the sample mean, the sample median and the refined estimate. Matching arm~J to the token budget of the two-round debate rather than to arm~F would require roughly seventy samples, a configuration the pilot did not run; the contrast reported in the paper is therefore the conservative one, G against a single agent given the tokens of F, and the secondary contrast F against J isolates ensembling of one model from ensembling of twelve roles at equal tokens. \subsection{Aggregation} \label{subsec:arch_aggregation} All aggregation is done on the logarithms of the roles' final estimates and converted back. Six point rules are computed for every property: the arithmetic mean; the median; the twenty-percent trimmed mean \citep{jose2014trimmed}; the inverse-variance pool, with weights proportional to the inverse of each role's variance of log errors; stacking, a non-negative least-squares regression of the log price on the roles' log points with weights normalised to sum to one \citep{bates1969combination,timmermann2006forecast}; and a robust pool that places a Student-$t$ likelihood with four degrees of freedom on each role's estimate and locates the committee by iteratively reweighted least squares, with the scale taken from validation. The weights and scales of the last three rules are estimated once on the validation subsample, written to a file and applied unchanged to the test and holdout subsamples; when a run has no fitted weights, the inverse-variance and stacking rules fall back to equal weights and the robust rule to a scale from the committee's own dispersion, and the run manifest records the source of the weights so that the fallback is never silent. Following Proposition~\ref{prop:overshrink}, the primary comparisons use the median, which is invariant to the deliberation, and the fitted rules are reported as secondary. The interval of a committee is the median, across roles, of each of the five quantiles, which yields a 90 percent interval $[q_{.05},q_{.95}]$; an equal-weight mixture of the roles' distributions, with quantile functions interpolated in log space, is computed as an alternative and is reported in the calibration analysis. Every prediction file contains one row per aggregation rule, so that the choice of rule is a column rather than a run. \subsection{Audit trail} \label{subsec:arch_audit} Each run writes, for every property, the packet that was built, the full transcript of every turn with its prompt hash, model identifier, tokens, cost, latency, validation retries and error, the committee assignment, the stopping and verification events, the final estimates and quantiles of each role, and the aggregated values; a manifest records the arm, committee, tier, split, seed, model identifiers, package version, weights source and spend-cap status, and a ledger appends one line per API call. Runs are resumable: an interrupted run skips properties whose transcript exists and rebuilds its prediction file from all transcripts. Before any test-set evaluation, a freeze file records the SHA-256 hash of every role prompt, of the four configuration files, of the schema module, and of the agents, debate and provider code, together with the model identifiers of the cost-matched pairs; a check command lists every deviation from the frozen state, and any deviation after the freeze is reported as a protocol deviation. Hosted models are not deterministic, and the paper does not claim bitwise reproducibility of the agentic arms; it claims instead that every number traces to a stored transcript and that run-to-run variation is measured by repeating a tenth of the properties.