% ============================================================================ \section{Robustness and Limitations} \label{sec:robustness} % ============================================================================ \subsection{Inference and Subsample Stability} \label{subsec:robust} Several features of the design guard against spurious results. The two-part specification (Section~\ref{subsec:econometrics}) ensures that estimates are not driven by the non-random availability of living area: coefficients on attributes common to both models retain their sign and rough magnitude whether or not area is conditioned on. The ``\texttt{has\_}'' indicators accompanying each imputed field let the regression separate observed from imputed information, so median imputation does not silently attenuate the size coefficients. The price-per-square-foot trim removes the residual parsing errors that would otherwise dominate the tails, and the municipality fixed effects absorb the first-order spatial confound emphasized by \citet{can1992spatial} and \citet{anselin1988spatial}. \paragraph{Inference.} Because listings within a municipality share unobserved local shocks, our preferred standard errors are clustered at the municipality level (195 clusters; \citealp{cameron2015cluster}), the same level as the fixed effects. Clustering matters exactly where theory predicts: the text- and vision-derived quality attributes---which vary house by house within a municipality---are essentially unaffected (curb appeal, renovation level, luxury, garage, materials, landscaping, and the rural-setting discount all remain significant at the 5\% level or better in Model~A, as do the LLM condition scale, renovated kitchen, and hardwood indicators), whereas keyword amenities with a strong spatial component lose precision (public-transit proximity falls to the 5\% boundary in Model~A and is insignificant in Model~B; central air conditioning is insignificant in Model~B; the curb-appeal score, precisely estimated in Model~A, loses significance in the broader Model~B). Heteroskedasticity-robust (HC3) standard errors \citep{white1980heteroskedasticity,mackinnon1985some} yield the same qualitative pattern with uniformly smaller intervals. The last column of Table~\ref{tab:rob_ai_coefs} reports 95\% intervals from a pairs cluster bootstrap that resamples the 195 municipalities with replacement; they are wider than the analytical ones, as expected with clusters of very unequal size \citep{mackinnon2017wild}, and they exclude zero for curb appeal, the renovation level, the luxury cue, the visible garage, brick, stone, vinyl, the rural setting, the LLM condition scale, and the renovated kitchen; the intervals for landscaping and hardwood flooring include zero by a small margin. This asymmetry between property-level and location-level regressors supports our main claim: the AI-generated attributes capture within-market, property-level quality variation rather than repackaged location effects. \input{tables/rob_ai_coefs} Table~\ref{tab:robustness} probes the stability of the predictive blend across subsamples. Three patterns stand out. First, accuracy is comparable whether living area is observed (median error 13.5\%) or imputed (14.4\%), so the area-free model prices the incomplete listings almost as well as the rich model. Second, the model fits the broker-listed Realtor.ca inventory much better ($R^2_{\text{OOS}}=0.80$) than the smaller for-sale-by-owner DuProprio segment (0.58), though median errors are identical at 14.0\%; the gap is consistent with the compositional and marketing differences between brokered and FSBO platforms documented by \citet{hendel2009mls}, and with the absence of the room block for DuProprio listings. Third, the median error is stable across price terciles (11--16\%), lowest in the mid-market and modestly higher in the tails, where idiosyncratic and luxury attributes are harder to capture. (Within a single tercile $R^2$ is uninformative because the price range is restricted; the median error is the comparable metric.) \input{tables/robustness} \subsection{Language of the Description} \label{subsec:robust_language} Section~\ref{subsec:text_content} showed that English-language listings are substantially more expensive than French ones. Column~(2) of Table~\ref{tab:rob_ai_coefs} adds the two language indicators and the description length to Model~A. The English indicator is large and precisely estimated: an English description is associated with a 7.2\% higher asking price conditional on every structural, amenity, text, and vision attribute and on the municipality (11.8\% in Model~B), and the mixed-language indicator with 4.6\%. We read this as a location and clientele effect within municipalities---English listings cluster in the most expensive parts of large municipalities such as Montreal, and brokers write in the language of the clientele they target---rather than as a price of the language itself. What matters for our purpose is that the AI-derived implicit prices are unchanged to the third decimal when language is controlled for: curb appeal moves from 0.023 to 0.022, the luxury cue stays at 0.051, brick at 0.032--0.033, vinyl at $-0.044$, and the LLM condition and kitchen coefficients at 0.017 and 0.025. The language indicators also leave the explanatory gain of the AI layers intact (Panel~A of Table~\ref{tab:rob_language_source}: 0.719 $\to$ 0.727 $\to$ 0.757 with language controls, against 0.717 $\to$ 0.725 $\to$ 0.755 without). The gains are present within each language group. Re-estimating the nested ablation of Model~A separately on French and English descriptions (Table~\ref{tab:rob_language_source}, Panel~A), the text layer adds 1.5 points of $R^2$ for French listings and 0.6 for English ones, and the vision layer 3.4 and 2.2 points; out of sample, gradient boosting gains 1.5 points from the text in both groups and 3.1 and 2.6 from vision (Panel~C). The smaller text gain for English listings is consistent with a specification that already fits English listings better (base $R^2$ of 0.763 against 0.704), so that less is left for the text to explain, rather than with a weaker extraction in English. Adding the language indicators to the gradient-boosting feature set raises its out-of-sample $R^2$ from 0.770 to 0.774, a modest gain that confirms language is informative but largely redundant with location and the other attributes. \input{tables/rob_language_source} \subsection{Information Leakage Through the Text} \label{subsec:robust_leakage} Because every DuProprio description contains the asking price, the clean test of the text layer is the Realtor.ca subsample. The contrast in Panel~A of Table~\ref{tab:rob_language_source} is stark. On Realtor.ca listings the text layer adds 0.6 points of in-sample $R^2$ to Model~A and the vision layer 2.4 points; on DuProprio listings the increments are 3.3 and 4.1 points. Out of sample (Panel~C), gradient boosting gains 1.2 points from the text on Realtor.ca and 3.1 on DuProprio. Three remarks temper the comparison. First, the DuProprio base is much weaker (in-sample $R^2$ of 0.564 against 0.779) because the room block is missing, so every additional block has more left to explain there; the vision layer, which never sees any text, also gains more on DuProprio (4.1 against 2.4 points), and the ratio of the DuProprio to the Realtor.ca gain is about 1.7 for vision against 5 for text. Second, the DuProprio ``description'' also embeds structured fields (cladding, heating, inclusions) that the LLM can read verbatim and that are genuinely informative, so part of the excess text gain is legitimate. Third, the asking price itself cannot be reproduced by any field of the schema; what the price can do is tilt the model's reading of ambiguous fields (condition, turnkey, luxury-type highlights) towards the expensive or the cheap end. We cannot separate these channels without re-running the extraction on descriptions purged of the price, which we recommend as the first step of any replication and which the archived raw text makes possible at a cost of about \$1. Until then, we regard the Realtor.ca increments---0.6 points of in-sample $R^2$ and 0.6 (OLS) to 1.2 (gradient boosting) points out of sample for the text layer---as the credible estimate of what the LLM specifications add beyond keyword amenities, and we note that none of the paper's conclusions about the vision layer is affected, since the vision model is exposed neither to the text nor to the price. Column~(4) of Table~\ref{tab:rob_ai_coefs} re-estimates Model~A on Realtor.ca listings alone with RTA fixed effects and language controls: curb appeal (0.021), the renovation level (0.041), the luxury cue (0.042), the visible garage (0.041), stone ($0.030$), vinyl ($-0.051$), landscaping (0.027), and the renovated kitchen (0.030) retain their magnitude and significance, whereas brick, the rural setting, the LLM condition scale, and hardwood flooring keep their sign but lose significance in this smaller sample of 5{,}781 listings. \subsection{Finer Location Controls and Spatial Validation} \label{subsec:robust_spatial} Municipalities are coarse spatial units: Montreal, Quebec City, Laval, and Gatineau each contain neighbourhoods whose price levels differ by a factor of two or more. Column~(3) of Table~\ref{tab:rob_ai_coefs} replaces the 195 municipality effects by 250 RTA effects. In-sample fit improves (Model~A $R^2$ from 0.755 to 0.764, Model~B from 0.725 to 0.726), and the AI coefficients are stable: curb appeal 0.016, renovation level 0.029, luxury 0.045, garage 0.037, brick 0.031, stone 0.037, vinyl $-0.047$, rural $-0.122$, LLM condition 0.015, renovated kitchen 0.019, hardwood 0.016, all significant at the 5\% level with standard errors clustered by RTA. The in-sample increments from the two AI layers under RTA effects are 0.7 and 3.2 points (Table~\ref{tab:rob_language_source}, last row of Panel~A). Finer location controls therefore do not absorb the AI-measured quality, which is what one expects if the layers measure property-level rather than neighbourhood-level attributes. Random cross-validation folds let every held-out listing borrow strength from neighbours in the training folds. Table~\ref{tab:rob_spatial} repeats the nested ablation with folds formed by RTA, so that an entire postal area is predicted from a model that has never seen it. All levels fall, as they must: the full text\,$+$\,vision OLS drops from 0.686 to 0.638 and gradient boosting from 0.770 to 0.734, with median absolute errors rising by about 1.5 percentage points. The increments from the AI layers, however, are preserved almost exactly---the text layer adds 0.7 (OLS) and 1.3 (gradient boosting) points under spatial folds against 0.9 and 1.4 under random folds, and the vision layer 7.0 and 3.1 points against 5.8 and 2.7. If anything, the vision layer is \emph{more} valuable when location is poorly measured, which is consistent with the façade carrying information about the neighbourhood (density, setting, housing vintage) as well as about the house. We regard the random-fold numbers as the relevant ones for an AVM operating within its coverage area, and the spatial-fold numbers as the relevant ones for extrapolation to new areas. \input{tables/rob_spatial} \subsection{Limitations} \label{subsec:limits} Seven limitations qualify the interpretation of our estimates. \emph{Asking prices.} The dependent variable is the asking price of properties listed for sale, not the transaction price. The list price is a strategic choice that anchors buyer search and bargaining \citep{horowitz1992list,knight2002listing,han2015microstructure,han2016asking}: it is set with sale in mind and is highly correlated with the eventual transaction price, but list-to-sale ratios vary systematically with market conditions and overpricing is more common in thin segments. Two implications follow. First, our implicit prices measure how sellers and their agents \emph{price} attributes into the ask, which converges to buyers' valuation only insofar as the market disciplines the ask; the economically sensible magnitudes and the monotone validation of Section~\ref{subsec:validation} suggest the discipline is substantial. Second, any attribute that shifts the list-to-sale ratio itself (e.g., attributes of hard-to-sell properties) will carry a coefficient that mixes valuation and listing strategy. Replicating the analysis on registry transaction prices is the natural next step. \emph{Price in the text.} For the 19.7\% of listings from DuProprio, the language model read the asking price as part of the description. The text-layer gains on that platform are therefore an upper bound, and the Realtor.ca gains the credible estimate (Section~\ref{subsec:robust_leakage}). The vision layer is unaffected. \emph{Non-causality and content endogeneity.} Descriptions and photographs are marketing instruments chosen by sellers and agents. Richer descriptions, more photographs, and higher visual quality correlate with higher-end listing agents and more valuable properties \citep{nowak2017textual}. The coefficients are therefore \emph{predictive} associations, not causal effects; they should not be read as the price change from physically adding a given attribute. We control for two observable dimensions of marketing effort (photo count and virtual tours) and for the photo quality score, but cannot rule out that residual marketing quality loads on the AI-derived attributes, and the three visual quality scores are collinear enough that only their joint contribution is well identified. \emph{Machine-generated features and their reproducibility.} LLM and vision outputs contain errors. Strict schemas and closed enumerations bound the \emph{form} of the output but not its accuracy, and the agreement analysis of Section~\ref{subsec:validation} shows that accuracy varies widely across fields: high for concrete amenities, low for waterfront, the visual setting, and the visual building type. We have no human-labelled validation set; a few hundred manually coded listings would allow field-level precision and recall against ground truth and are the obvious next step. Classical measurement error in the extracted scores biases their coefficients towards zero, which makes our implicit prices conservative, but errors correlated with price (through the leakage channel above, or because the model rates expensive-looking houses more generously on every dimension) need not. The text extraction ran at temperature zero, the vision extraction at the API default temperature, and both model identifiers are provider aliases rather than pinned snapshots; the raw outputs are archived, so the regressors are exactly reproducible from them, but a fresh extraction with a later model version could return different scores, and we have not measured test--retest variability. The vision layer judges each property from a single façade photograph and ignores interiors. \emph{Language.} The LLM processes French and English descriptions with the same French-language instruction and schema. We find no evidence that the extraction is weaker in either language and the implicit prices are robust to language controls, but the English indicator itself carries a large conditional premium that we can interpret only as a proxy for unobserved location and clientele. \emph{Selection.} Listed properties are not a random sample of the housing stock, and listings with missing area or room detail are not missing at random (they tend to be less complete listings, and all DuProprio listings lack the room block). The ``\texttt{has\_}'' indicators and the two-part design mitigate, but do not eliminate, the second concern, and the markedly worse fit for DuProprio shows that the pooled model is not equally adequate on both platforms. \emph{Cross-section.} The data are a single-date snapshot, so the model captures no market dynamics, no forward-in-time holdout is possible, and the location premia are fixed as of 3~July~2026. Municipalities with fewer than 20 listings are pooled, reducing spatial resolution where data are sparse, and some municipality effects in Model~A rest on very few observations (Section~\ref{subsec:location}).