% ============================================================================ % Appendix % ============================================================================ \newpage \begin{appendices} \renewcommand{\thetable}{A\arabic{table}} \renewcommand{\thefigure}{A\arabic{figure}} \setcounter{table}{0} \setcounter{figure}{0} \section{Machine-Generated Feature Definitions} \label{app:features} Table~\ref{tab:app_features} lists the attributes extracted by the language and vision models under their respective strict JSON schemas. All fields use closed enumerations or booleans; absent information is coded as \texttt{false}, \texttt{unknown}, or an empty list. \begin{table}[htbp] \centering \begin{threeparttable} \caption{Attributes Extracted by the AI Models} \label{tab:app_features} \small \begin{tabular}{@{}p{2.9cm}p{4.4cm}p{6.3cm}@{}} \toprule Layer & Field & Domain \\ \midrule \multicolumn{3}{@{}l}{\textit{Panel A: Text (LLM, \texttt{gpt-4o-mini})}} \\[3pt] Condition & \texttt{condition} & to renovate / original / good / renovated / like-new / new \\ Turnkey & \texttt{turnkey} & boolean \\ Renovated kitchen & \texttt{renovated\_kitchen} & boolean \\ Renovated bathroom & \texttt{renovated\_bathroom} & boolean \\ Flooring & \texttt{flooring} & hardwood / ceramic / laminate / carpet / vinyl / concrete \\ Countertop & \texttt{countertop} & granite / quartz / marble / laminate / wood \\ Heating & \texttt{heating} & electric / heat pump / wood / gas / oil / radiant / geothermal \\ Water view & \texttt{view} & water / mountain / city / none \\ Income property & \texttt{income\_property} & boolean \\ Large lot; quiet area & \texttt{large\_lot}, \texttt{quiet\_area} & boolean \\[6pt] \multicolumn{3}{@{}l}{\textit{Panel B: Vision (\texttt{claude-haiku-4-5}, façade)}} \\[3pt] Building type (visual) & \texttt{building\_type\_visual} & detached / semi / row / condo / cottage / land \\ Condition score & \texttt{condition\_score} & integer 1--10 \\ Curb appeal & \texttt{curb\_appeal} & integer 1--10 \\ Renovation level & \texttt{renovation\_level} & to renovate / dated / standard / renovated / high-end \\ Exterior materials & \texttt{exterior\_materials} & brick / stone / vinyl / wood / aluminum / stucco / concrete \\ Landscaping & \texttt{landscaping} & none / minimal / maintained / manicured \\ Setting & \texttt{setting} & dense urban / suburban / rural / waterfront / wooded \\ Luxury indicator & \texttt{curb\_luxury} & boolean \\ Photo quality & \texttt{photo\_quality} & integer 1--10 \\ \bottomrule \end{tabular} \begin{tablenotes}[flushleft] \footnotesize \item \textit{Notes:} Both extractions use schema-constrained decoding with closed enumerations, required fields, and \texttt{additionalProperties:false}; decoding temperature is zero. The text layer reads the free-text description; the vision layer analyzes one façade photograph per listing. Fields are mapped to numeric regressors (booleans to $0/1$, ordinal scales to integers, categories to indicators), each with an availability flag. \end{tablenotes} \end{threeparttable} \end{table} \section{Sample Construction Flow} \label{app:flow} \begin{table}[htbp] \centering \begin{threeparttable} \caption{From Raw Records to Estimation Sample} \label{tab:app_flow} \begin{tabular}{@{}lr@{}} \toprule Step & Records \\ \midrule Realtor.ca raw & 27{,}302 \\ DuProprio raw & 7{,}693 \\ Houses (single-family + townhouse) with price & 19{,}273 \\ After outlier cleaning & 19{,}123 \\ \quad of which with measured living area (Model~A) & 9{,}446 \\ \bottomrule \end{tabular} \begin{tablenotes}[flushleft] \footnotesize \item \textit{Notes:} See Section~\ref{sec:data}. ``Measured living area'' means reported area or area reconstructed from room-level dimensions. \end{tablenotes} \end{threeparttable} \end{table} \end{appendices}