% ============================================================================ \section{Results} \label{sec:results} % ============================================================================ \subsection{Baseline Estimates} \label{subsec:baseline} Table~\ref{tab:regression} reports the two hedonic specifications estimated on the full feature set (structural, amenity, room-detail, listing-signal, LLM text-derived, and vision-derived attributes). Model~A, which includes living area and is estimated on the 9{,}446 listings with a measured area, explains 75.5\% of the variation in log prices ($R^2=0.755$, adjusted $0.748$). Model~B, the area-free specification estimated on all 19{,}123 listings, explains 72.5\% ($R^2=0.725$, adjusted $0.721$). Adding the machine-generated feature layers in sequence raises Model~A's $R^2$ from 0.717 (structural, amenity, room, and listing attributes only) to 0.725 with the text layer and to 0.755 with the vision layer: 3.8 points in total, of which 0.8 come from the text and 3.0 from the façade photograph. The text increment is small because the fifteen keyword amenities already capture the most frequently mentioned features (garage, pool, fireplace, air conditioning), so the LLM is credited only with what keyword matching misses; Section~\ref{subsec:robust_leakage} shows that on Realtor.ca, where the text contains no price, the increments are 0.65 and 2.4 points. The estimated implicit prices are economically sensible and, with few exceptions, statistically significant with standard errors clustered by municipality. In Model~A, the living-area elasticity is 0.36 (a 10\% larger home commands roughly a 3.6\% higher price) and the lot-area elasticity is small (0.027) but precisely estimated. Each additional \textbf{bathroom} is associated with a 7.6\% premium and each parking space with about 1\%. \textbf{Central air conditioning} carries a 5.5\% premium and \textbf{public-transit} proximity 9.4\%, although the transit coefficient---like other keyword amenities with a strong spatial component---is estimated much less precisely once errors are allowed to correlate within municipalities. \textbf{Waterfront} access is associated with a 6.0--6.4\% premium, significant at conventional levels in the full-sample model. Age enters with a negative linear term ($-0.4$\% per year) and a small positive quadratic ($2.6\times10^{-5}$), so the price--age profile bottoms out at about 70 years and rises for older, heritage-type houses. \input{tables/regression} \subsection{Text- and Vision-Derived Attributes} \label{subsec:ai_coeffs} The two AI feature layers contribute distinct signal. \paragraph{Text (LLM).} Beyond the keyword amenities, the structured specifications carry independent information about finish and condition: a \textbf{renovated kitchen} is associated with a 2.6\% premium, \textbf{hardwood flooring} with 2.4\%, and the ordinal \textbf{condition} scale is positive and significant in both models (1.6\% per step). Listings the model reads as \textbf{income properties} are listed about 1.9\% below otherwise comparable houses. The \textbf{new-construction} indicator, by contrast, is indistinguishable from zero once age, the visual renovation level, and the condition scales are controlled for: the premium a naive specification would attribute to the label ``new'' is absorbed by the measured quality attributes. \paragraph{Vision (façade).} The image-derived attributes are jointly significant and add the larger increment to fit. Holding all structural, amenity, and text attributes fixed, a one-point increase in \textbf{curb appeal} (1--10) is associated with a 2.3\% higher price, and a one-step increase in the visual \textbf{renovation level} with 2.4\%. A visible \textbf{luxury} cue adds 5.2\%, a \textbf{visible garage} 4.7\%, and each step of \textbf{landscaping} quality 1.5\%. Exterior materials price as expected: \textbf{brick} ($+3.4$\%) and \textbf{stone} ($+3.7$\%) command premia, while \textbf{vinyl} siding carries a 4.4\% discount; because a façade can combine several materials, each indicator is measured relative to façades without that material. The visual \textbf{rural} setting is associated with an 11.5\% discount relative to the other settings even within municipalities, which indicates that the model picks up within-municipality variation in density that the fixed effects cannot. The visual condition score, by contrast, is not significant in Model~A once curb appeal and the renovation level are included; the three scores are highly collinear (the model rates condition, curb appeal and renovation level from the same cues), and their individual coefficients should be read as a joint ``visual-quality'' block rather than as three separate prices. That these visual measures remain significant after conditioning on the full text and structural set, with inference clustered at the municipality level, indicates that the façade photograph carries price-relevant information available in no other field. \subsection{Validation of Machine-Generated Features} \label{subsec:validation} Before relying on the AI-generated attributes we assess them in two ways. First, we check that the vision scores order prices in the expected direction. Figure~\ref{fig:validation} plots the median list price against the vision model's curb-appeal and condition scores among listings with a detected exterior shot. Both relationships are monotone: median price rises from the lowest to the highest visual scores, with no reliance on the regression to impose the pattern. Because these scores are produced by a model that never sees the price, the monotonicity shows that the vision layer extracts a price-correlated quality signal rather than noise; it does not, of course, establish that the signal is \emph{quality} rather than, say, the marketing budget of the seller (Section~\ref{subsec:limits}). \begin{figure}[htbp] \centering \includegraphics[width=\textwidth]{figures/fig_validation.pdf} \caption{Validation of the vision layer. Median list price rises monotonically with the model's curb-appeal (left) and condition (right) scores, among listings with a detected façade shot. The scores are generated without access to price.} \label{fig:validation} \end{figure} Second, because we do not have human labels, we measure extraction error indirectly by confronting the machine-generated attributes with independent sources (Table~\ref{tab:agreement}). Where the LLM and the bilingual keyword rule read the same text for the same binary feature, agreement is very high for concrete, unambiguous amenities---garage (agreement 98\%, Cohen's $\kappa=0.96$), fireplace ($\kappa=0.91$), swimming pool ($\kappa=0.81$)---and lower for features whose definition is fuzzy or whose keywords are ambiguous: central air conditioning ($\kappa=0.65$; the keyword rule also fires on ``air exchanger''), finished basement ($\kappa=0.56$; the keyword rule fires on any mention of ``basement''), and waterfront ($\kappa=0.50$). For waterfront the LLM flags 22.5\% of listings against 9.2\% for the rule, with a recall of 98\% but a precision of only 40\% relative to the rule, which suggests that the model treats water \emph{access} or \emph{views} as waterfront; the regression includes both variables, and the keyword waterfront is the one whose coefficient we report. Across modalities, the vision model's visible-garage flag agrees with the text-based garage indicator for 68\% of exterior shots ($\kappa=0.35$)---a garage need not be visible from the front---and its storey count matches the structured storey field exactly for 60\% of listings and within half a storey for 89\%. Two fields are clearly unreliable: the visual waterfront setting ($\kappa=0.39$ against the keyword) and the visual building type, which labels 12.7\% of façades as row houses when only 3.0\% of listings are townhouses (precision 18\%) and 14.5\% as ``chalets.'' We accordingly use the visual building type and setting only as controls and base no conclusion on them, and we read the reported coefficients of the vision block as prices of \emph{what the model sees} rather than of verified physical attributes. \input{tables/agreement} \subsection{Location Fixed Effects} \label{subsec:location} The 195 municipality fixed effects absorb the dominant locational component of price. Relative to the pooled group of small municipalities, the largest positive premia are estimated for \textbf{Westmount} ($\approx+231$\%), \textbf{Hampstead} ($+173$\%), and \textbf{Mont-Royal} ($+169$\%), followed by remote municipalities at the low end carrying discounts of 23--30\%. Figure~\ref{fig:premia} plots the extreme effects. The magnitude and ordering align with well-known patterns in the Quebec housing market and lend face validity to the specification; one apparent anomaly, Sainte-Anne-des-Plaines ($+143$\%), is an artefact of the two-part design: only two of that municipality's 33 listings report a living area and enter Model~A, one of them a \$5.5~million estate on a 100-acre lot, so the effect is identified from two observations. Municipality effects estimated on a single-date cross-section with sparse cells should not be read as permanent location premia. \begin{figure}[htbp] \centering \includegraphics[width=.74\textwidth]{figures/fig_premia.pdf} \caption{Estimated municipality fixed effects (Model~A), the twelve largest and eight smallest, expressed as percentage premia relative to the pooled group of municipalities with fewer than 20 listings.} \label{fig:premia} \end{figure}