Exact needs become hard filters. Anything that takes judgment is flagged for the model.
Deterministic. A listing either matches or it doesn't.
The model only sees listings that already pass, then ranks them and says why.
This is the flow we're wiring together now. The demo shows the target design with made-up listings.
Our first amenity search matched text, not meaning. Pick a search term to see what went wrong.
Price, bedrooms, and amenities are checked in code, so the answer is the same every time.
"Good for summer weather" needs interpretation. That's where the model earns its place, for example by surfacing a listing with a pool.
A second lesson: on test listings the model reasoned correctly but got stuck in loops, and adding more prompt rules made it worse. The fix came from Qwen's own documentation: switching to its recommended sampling settings (temperature 1.0, top_p 0.95, top_k 20).
Cleaned prices and parsed every amenity into its own label.
Qwen 3.5-4B in 4-bit on Colab GPU inference. No paid API.
A request becomes filters first, then the model ranks and explains what passes.
Run more queries, find where it fails, and fix it.
Write up results at the end of the semester and keep refining.