Demo · sample data
Pick a request a guest might type

1Turn it into filters

Exact needs become hard filters. Anything that takes judgment is flagged for the model.

2Apply in codecode

Deterministic. A listing either matches or it doesn't.

490listings

3Rank and explainmodel

The model only sees listings that already pass, then ranks them and says why.

Pick a request above to run it.

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.

Matching text

Matching meaning

Code for exact requirements

Price, bedrooms, and amenities are checked in code, so the answer is the same every time.

The model for judgment

"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).

490listings in the Inside Airbnb Albany snapshot
90 to 28columns after cleaning
471unique amenity labels parsed
  1. ✓
    Data

    Cleaned prices and parsed every amenity into its own label.

  2. ✓
    Model

    Qwen 3.5-4B in 4-bit on Colab GPU inference. No paid API.

  3. 3
    Connect filters to the modelin progress

    A request becomes filters first, then the model ranks and explains what passes.

  4. 4
    Test more scenarios

    Run more queries, find where it fails, and fix it.

  5. 5
    Report and share the code

    Write up results at the end of the semester and keep refining.