Agent skill
apartment-finder
Install this agent skill to your Project
npx add-skill https://github.com/hanzili/hanzi-browse/tree/main/server/skills/apartment-finder
SKILL.md
Apartment Finder
You search for apartments across multiple platforms using the user's real signed-in browser, compare listings in a structured table, and help fill out inquiry or application forms — always confirming before submitting anything.
Tool Selection Rule
- Use Hanzi for all apartment searches — listings require real browsing: dynamic filters, map views, saved searches, and inquiry forms don't work with plain HTTP.
- Do not use WebFetch or scraping tools — real estate sites block non-browser requests and require login for full contact info.
- One platform at a time — complete one site's search before moving to the next.
Before Starting — Preflight Check
Call browser_status to verify the browser extension is reachable. If unavailable:
Hanzi isn't set up yet. This skill needs the hanzi browser extension running in Chrome.
- Install from the Chrome Web Store: https://chromewebstore.google.com/detail/hanzi-browse/iklpkemlmbhemkiojndpbhoakgikpmcd
- The extension will walk you through setup (~1 minute)
- Then come back and run this again
What You Need From the User
Before opening a browser, confirm all of the following:
- Location — city, neighborhood, or zip code (the more specific, the better)
- Budget — monthly rent range (min and max)
- Bedrooms — studio / 1BR / 2BR / etc.
- Move-in date — approximate date or "ASAP"
- Roommates — solo or shared? If shared, how many people total?
- Commute destination — address or neighborhood to estimate commute from (optional but useful)
- Must-haves — pets, parking, laundry, furnished, utilities included, etc.
- Platforms to search — defaults to Zillow + Apartments.com + Craigslist if not specified
If any required field is missing, ask before proceeding. Don't guess on budget or location.
Phase 1 — Search
Search each platform sequentially. For each platform:
- Navigate to the site and apply filters (location, price, bedrooms, move-in date)
- Scroll through results and collect the top listings (aim for 5–10 per platform)
- For each listing, record:
- Title / unit name
- Price (monthly rent)
- Address or neighborhood
- Bedrooms / bathrooms
- Square footage (if shown)
- Available date
- Key amenities (pets, parking, laundry, gym, etc.)
- Listing URL
- Take a screenshot of each platform's results page
Platforms and starting URLs:
| Platform | URL |
|---|---|
| Zillow | https://www.zillow.com/homes/for_rent/ |
| Apartments.com | https://www.apartments.com/ |
| Craigslist | https://[city].craigslist.org/search/apa |
| Redfin | https://www.redfin.com/apartments-for-rent |
Domain-specific interaction tips for Zillow, Apartments.com, and Craigslist are injected automatically into your system prompt when you navigate to those sites (they live in server/src/agent/domain-skills.json). Follow whatever that guidance says.
After searching all platforms, proceed to Phase 2.
Phase 2 — Compare
Present all collected listings in a single comparison table:
| # | Platform | Price/mo | Bedrooms | Address/Area | Sq Ft | Available | Pets | Parking | Link |
|---|----------|----------|----------|--------------|-------|-----------|------|---------|------|
| 1 | Zillow | $1,850 | 1BR/1BA | South End | 680 | May 1 | Yes | Street | [url]|
| 2 | Craigslist | $1,700 | 1BR | Jamaica Plain| — | Immed. | No | — | [url]|
...
If the user provided a commute destination, add a Commute column with estimated travel time (use Google Maps directions if possible, or note "~20 min by T" based on neighborhood knowledge).
After the table, add a short summary:
- Cheapest option
- Best value (price vs. amenities)
- Any listings that look suspicious (see Safety section)
- Recommended top 3 to contact
Ask: "Which listings would you like to inquire about or apply to?"
Phase 3 — Contact
For each listing the user selects:
- Find the contact method — inquiry form, email, or phone number
- Draft the message before sending. Show the draft to the user:
To: [landlord/property name]
Re: [unit address]
Hi, I'm interested in the [1BR] unit at [address] listed at $[price]/month.
I'm looking to move in around [date] and would love to schedule a viewing.
[name from user]
- Wait for explicit approval before submitting. Never send without confirmation.
- After sending, take a screenshot as confirmation.
- Log each contacted listing to
~/.hanzi-browse/apartment-contacts.txt:[date] | [platform] | [address] | [price] | [contact method] | [status: sent/pending]
Safety
Flag these as potential scams — do not contact without warning the user:
- Price significantly below market rate for the area (>25% cheaper than comparable listings)
- Only contact method is a personal Gmail/Yahoo with no other info
- Listing says "owner is overseas" or "send deposit to hold the unit"
- No photos or generic stock photos
- Craigslist listings asking to text or WhatsApp before viewing
Never fill in:
- Payment information, credit card, or bank account numbers
- Social Security Number unless user explicitly confirms they are on an official, verified application platform
- Background check portals that aren't linked directly from a verified property management site
Application forms (Zillow, Apartments.com built-in applications):
- These are legitimate — but still show the user what fields will be submitted before proceeding
- Stop and confirm before hitting the final "Submit Application" button
Platform-Specific Notes
Zillow
- Log in first for full contact info and saved search features
- Use "For Rent" filter, then refine by price, beds, and "Move-in Date"
- Map view is useful — switch to list view for easier data collection
- "Request a tour" button submits a form — draft and confirm before clicking
Apartments.com
- Has a built-in application flow — very structured
- Filter bar is at the top: price, beds, move-in date, amenities
- "Send Message" button opens an inline form — show draft before submitting
- Some listings are managed by large property companies with fast response times
Craigslist
- URL pattern:
https://[city].craigslist.org/search/apa?minAsk=[min]&maxAsk=[max]&bedrooms=[n] - Contact is always via email (anonymized relay) — no built-in application
- Listings have no photos sometimes — flag these as higher risk
- Sort by "newest" to avoid stale listings
Redfin
- Strong map interface — good for comparing by commute/neighborhood
- "Rental estimate" feature helps validate if price is fair for the area
- Contact goes through a Redfin agent form
When Done
Report:
Apartment search complete.
Searched: [platforms]
Total listings found: [N]
Top picks: [3 addresses with prices]
Contacted: [N listings]
✓ [address] — inquiry sent via [platform]
✓ [address] — inquiry sent via email
Contacts log saved to: ~/.hanzi-browse/apartment-contacts.txt
Screenshots: [list]
Next steps:
- Watch for replies (usually 24–48 hours)
- Run again to search new listings: "find more apartments in [area]"
- Say "apply to [address]" to start a formal application
Rules
- Always confirm location, budget, and move-in date before starting
- Never submit a form or inquiry without showing the draft and getting explicit approval
- Never enter payment info, SSN, or sensitive personal data without user confirmation on a verified platform
- Flag suspicious listings — don't silently skip them
- Search at least 3 platforms unless the user specifies otherwise
- Log all contacted listings to
~/.hanzi-browse/apartment-contacts.txtto avoid duplicates - Take screenshots after each platform search and after each inquiry sent
- If a listing URL goes dead (404), note it in the table as "listing removed"
- If you encounter a CAPTCHA or rate limit on any platform, stop immediately and tell the user — do not attempt to solve or bypass it
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
data-extractor
seo-checker
Audit web pages for SEO issues in a real browser. Checks rendered meta tags, heading hierarchy, image alt text, structured data, canonical URLs, mobile rendering, and performance signals. Produces a scored report with specific findings and fixes. Read-only — inspects, doesn't modify. Requires the hanzi browser automation MCP server and Chrome extension.
linkedin-prospector
Find people on LinkedIn and send personalized connection requests. Supports multiple strategies based on goal — networking (search posts), sales (search by role/company), partnerships (combine both), hiring (search by skills), or market research (analyze posts + comments). Each connection note is unique and personalized. Requires the hanzi browser automation MCP server and Chrome extension.
a11y-auditor
Audit web pages for accessibility issues in a real browser. Checks contrast, font sizes, focus indicators, keyboard navigation, ARIA labels, and semantic HTML against WCAG 2.1 AA. Reports findings with screenshots and specific remediation steps. Requires the hanzi browser automation MCP server and Chrome extension.
competitor-monitor
Monitor competitor websites for changes. Visit a list of URLs, extract pricing, features, positioning, and key content, compare against previous snapshots stored locally, and generate a change report summarizing what's different. Use when the user says "check competitors", "what changed on their site", "monitor these URLs", or wants periodic competitive intelligence. Requires the hanzi browser automation MCP server and Chrome extension.
x-marketer
Professional X/Twitter growth skill. Finds high-value conversations, builds warm engagement, and posts contextual replies from your real signed-in account. Supports three modes — reply-to-conversations (find pain points + reply), engage-influencers (warm up large accounts), and monitor-brand (track mentions + respond). Thinks like a specialist X marketer, not a bot. Requires the hanzi browser automation MCP server and Chrome extension.
Didn't find tool you were looking for?