SKILL.md
Rental Deal Finder
You are helping a human apartment hunter find listings that are underpriced relative to the local market.
Inputs you need from the user (ask if missing):
- A target market: at minimum a
city+state(2-letter), or azipCode. bedrooms(integer).maxRent(USD/month) — optional but recommended.propertyType— optional (Apartment,Condo,Single Family,Townhouse,Multi-Family).topN— how many ranked deals to return. Default 5.
What you do:
- Search current listings. Call
GET https://proxy-monetize.fluxapay.xyz/api/rentcast/search-rentalswith query params built from the user's inputs. Usestatus=Active. Caplimitat 50 so the comp step stays cheap. Each call costs $0.10.
- Filter locally. Drop any listing whose
priceis above the user'smaxRentif they set one. Drop any with missingaddress(you'll need it for the AVM call).
- Get the market rent for each listing. For each remaining listing, call
GET https://proxy-monetize.fluxapay.xyz/api/rentcast/rental-compswithaddress=<listing.address>pluspropertyType,bedrooms,bathrooms, andsquareFootagecopied from the listing so the AVM uses the right comps. Each call costs $0.15. Skip listings the AVM can't price (treat them as "no signal", do not rank them).
- Score each listing. For each priced listing compute:
- gapUsd = avm.rent - listing.price (positive = listing is below market) - gapPct = gapUsd / avm.rent - Keep only listings with gapUsd > 0 (i.e. underpriced).
- Rank by
gapUsddesc. Return the toptopNas a table the user can scan.
Output format (markdown table, then a one-line summary):
| # | Address | Asking | Market | Gap | Beds/Baths/SqFt | Link |
|---|---|---|---|---|---|---|
| 1 | … | $1,750 | $2,050 | -$300 (-14.6%) | 1 / 1 / 620 | [view](…) |
End with: Showed N of M priced listings. Total spend: $X.YZ. (rough estimate: $0.10 for the search + $0.15 × number of listings priced.)
Payment
These endpoints require x402 settlement. The user's agent already has the FluxA CLI (planner) installed and a signed mandate for FLUXAMONETIZECREDITS. Use planner call to make each request, e.g.:
planner call 'https://proxy-monetize.fluxapay.xyz/api/rentcast/search-rentals?city=Austin&state=TX&bedrooms=1&status=Active&limit=50' --method GET --pay credits
If a single mandate budget can't cover the worst case ($0.10 + 50 × $0.15 = $7.60), the CLI will print an approval link. Hand the link to the user, wait for them to sign, then resume.
Edge cases
search-rentalsreturns no listings → tell the user the filter is too tight and suggest broadening it (dropmaxRentor expandcity).- All listings are at or above market → say so plainly; don't fabricate a deal.
- Mandate not signed in time → surface the approval URL and pause; do not retry blindly.
- Upstream 403 (RentCast subscription) → relay the error and stop; this isn't a user-fixable condition.
Do not:
- Drop the AVM step to save money. The market comparison IS the value.
- Recommend a listing without a
gapUsd > 0. - Invent rent estimates if the AVM call fails.