Build a research assistant from sample listings https://patrickz.ai/learn/listing-research-agent/ OUTCOME Normalize and compare listings without silently inventing missing facts. STACK Python · SQLite YOU NEED A coding assistant and five saved fictional rental listings. A chat assistant and a spreadsheet can cover the schema, sample and scoring steps. No scraping or messaging is needed in this session. 1. Set your boundary Define a common schema, a stable source identifier and explicit unknown fields. Start with saved examples before connecting a live website. 2. Define a listing schema Define a listing schema before scraping, with a stable source ID and explicit unknown fields. 3. Start with saved samples Start with saved sample data: your five fictional listings, before connecting any live website. 4. Score and filter the samples Build scoring and filters against those samples. Every score comes with a human-readable reason. 5. Store and deduplicate Add SQLite persistence and deduplication, keeping every source link and original value. LATER (NOT TODAY) - A live site adapter: Implement one site adapter, after checking that site’s access rules and using an approved API or permitted workflow. - Desktop table: Add a desktop table and detail panel. - Outreach drafts: Generate outreach drafts, but require a human click to send. PROMPT Help me build a small research assistant in Python in a new practice folder, using five saved fictional rental listings. First version only: a common schema with a stable source ID and explicit unknown fields, scoring and filters, and SQLite with deduplication. No scraping, site adapters, desktop table or outreach drafts. List the setup commands before changing any files. Then work in four checkpoints and, after each, tell me how to check it: 1. A listing schema with source ID, canonical URL, price, size, location and conflict flags. 2. Loading the saved listings, with missing values kept as unknown. 3. An explainable score and filters for rentals in [your city], where every score comes with a human-readable reason. 4. SQLite persistence that flags duplicates without losing source links and keeps conflicting prices visible. My budget and must-haves: [budget, size, transit]. FOLLOW-UP PROMPT Review the scoring in this code as an explainable rubric for rentals in [your city]. Check budget, accessibility, minimum size, transit, parks, furnishing, stale dates and contradictory fields. Every score must produce human-readable reasons, and missing or conflicting values must stay visible instead of being guessed. EXAMPLE / EXPERIMENT Include one duplicate, one stale listing and one conflicting price. Confirm the output preserves the original values and explains why each item was flagged. CHECK YOUR RESULT [ ] Duplicates are identified without losing source links. [ ] Missing and conflicting values remain visible. [ ] Every score comes with a human-readable reason. IF IT FAILS Do not assume a publicly viewable page permits automated collection. When adding a real source, check its access rules and use an approved API or permitted workflow. MY RESULT / NEXT CHANGE