In Buenos Aires, every apartment has two prices: the one on the portal, and the one it actually sells for. Nobody publishes the second one.
So sellers improvise. The asking price is often sentimental: a round number the owner won't go below, because it feels right.
Then the price drops a couple of thousand dollars every few days until the listing is "burnt": stale, and "hard to sell".
So I built Tasalo. Describe your apartment and get its value, a rental analysis and a PDF report. A weekend idea that grew to 30 commits, a Mercado Pago checkout (Argentina's default way to pay), login by emailed link, coupons and 46 neighbourhood price pages. It's live, in Spanish, at tasalo.tulocal.ar; quotes from it are my translation.
How do you value an apartment in Buenos Aires without sale prices?
Start from asking prices, adjust for condition, and say out loud that it's an asking price. That's the whole method. The AI is the smallest part.
The engine is arithmetic: a price per m² for your neighbourhood and room count, times your size. The range runs from 12% under to 15% over.
Then the quiz, which was the actual idea. Eight questions, each worth a fixed percentage. Severe damp: minus 12%. Original gas installation: minus 4%. A building over 50: minus 8%.

Upload photos and an AI that reads images rates the finishes and nudges the number. Optional. A garnish. The meal is the data.
Where does the data come from when the portals block you?
From the portals' own search pages, fetched slowly from inside a real browser, after two funnier methods failed.
One of the big listing portals sits behind a web application firewall, a bot blocker. Plain requests worked for a few dozen pages, then came back as HTTP 202 with an empty body, a polite "prove you're human": the firewall's challenge, not an answer. My first scraper read that as "no listings" and cheerfully recorded zeros. A neighbourhood with zero apartments. In Buenos Aires.
Attempt two: copy the firewall's token cookie from a real browser and replay it. It worked exactly once. The firewall fingerprints the connection itself, so a valid cookie from the wrong kind of client is still a stranger.
What works: the fetch runs inside a real Chromium, requests two to three seconds apart, a fresh browser context every 25 or so, any challenged context binned on the spot. Search cards already carry price, size and rooms, so no single listing ever gets opened. Fewer requests, fewer enemies. Three workers were fine. Four unpaced ones got the whole run blocked after about 150 requests.
Bonus comedy:
- The count went backwards. Two scrapers shared one checkpoint file, each overwriting it from its own stale copy. The "dead" one I'd relaunched was only napping in a retry backoff.
- The government spells creatively. The city's price file says "Paterl" for La Paternal and "Boca" for La Boca. Without aliases, three neighbourhoods quietly lost their history.
How does one valuation tool become 46 answer pages?
Each page answers one question people actually type, in its first sentence, with a number and a sample size. Palermo: a median of USD 2,941 per m² from 57 listings, plus the spread, its city rank and its drop from the official peak.

On top sit the rankings: priciest, cheapest, best rental yield, biggest drop from peak. Every page points back to "value your own apartment".
Two rules keep it honest. Snapshots are stored by capture day, so a falling median is measured, not claimed. And unchecked facts don't ship: train stations were checked against per-line station lists, and after several wrong first drafts only 23 train entries survived across all the neighbourhoods.
It's the rule I use everywhere, from AI property search down: feed the machine real records, then make it show them.
What isn't honest yet?
Six things, listed, because a valuation tool that hides its weak spots is just a confident stranger.

- The history line is mislabelled. My pages call the city's price series closing prices. The statistics office's own reports say it's built from a big portal's listings, so it's asking prices, like mine. Correction owed.
- The "real value" is a guess with decimals. Tasalo shows a market value 20% below asking. That 20% has no source. The only closed-deals index I found puts the haggle near 5%.
- The five-year projection is compound interest in a suit. It's the neighbourhood's yearly trend, compounded five times.
- Two datasets, not one. The evaluator still runs on an older 15-neighbourhood price table; the pages run on fresh medians for 46.
- The homepage brags. It shows a big round "properties analysed" number that my own runbook says the data doesn't back.
- La Boca outranks Recoleta. The page admits why: its listings skew to renovated lofts on the tourist circuit. A median is honest about its sample, not about the city.
And the testimonials: three glowing, star-rated quotes on the homepage, all placeholders. They're gone from the live page. A testimonial is a lie until a customer says it. Real usage: a handful of evaluations.
Here's the whole engine minus the PDF, fed with the neighbourhood pages' medians, the two discounts side by side. Play with it:
flat 20% off, no source
about 5% off
Will I come back to Tasalo?
I think so, because the hard part is done and the fun part isn't. The scraper runs, the pages index, the checkout works.
Its sibling already lives on tubarrio, my site for gated communities: a land-plot valuer that tells you whether it used real nearby listings or a fallback guess, and that found plots advertised on the water list 1.33x higher. In a drawer: a pipeline that turns a phone video walkthrough into a 3D scene on a rented GPU that costs nothing while idle.
If an agency ever wants it, I know the move: build the demo before you pitch.
Every apartment in this city has two prices. Tasalo knows one. I'd like to meet the other.
Value an apartment
Tasalo is live, in Spanish. The quick price range is free.
Questions people ask
How much does an apartment cost per square metre in Buenos Aires?
Across one snapshot of about 2,500 sale listings, the city-wide median asking price was about USD 2,300 per square metre, from roughly USD 1,000 in Villa Lugano to about USD 5,800 in Puerto Madero. These are asking prices; an index built only on closed deals puts the final price around 5% lower on average.
Are Buenos Aires apartments priced in US dollars?
Yes. Sale listings in Buenos Aires are almost always priced and negotiated in US dollars, and market indexes report the price per square metre in dollars. Most rents are quoted in pesos (about nine in ten in one snapshot of listings), so a rental yield calculation has to convert one side before comparing them.
What is the gap between asking and closing prices in Buenos Aires?
Around 5%. An index built only from completed sales of used apartments put the negotiation gap at 4.96%, after narrowing from about 9% in 2020. Individual deals vary a lot: an overpriced listing may never close at all, which no closing index can measure.
Why use the median price instead of the average?
Because a handful of luxury units can drag an average far away from what a typical apartment costs, while the median barely moves. For neighbourhood pages built on 50 or so listings each, the median plus the middle half of the market gives a fairer picture than one average.
Can an AI valuation replace a professional appraisal?
No. An AI valuation built on asking prices gives you a fast, honest range and tells you what moves it. For a sale, a mortgage or a legal process, you still want a licensed appraiser who sees the apartment, the building and the paperwork in person.
Read next
Case studyThis Is a JPEG: How AI Agents Turned a Masterplan Into 1,217 Live LotsOne flat image, two AI readers that agreed on the wrong number, and the ten-agent audit that made the map trustworthy.Read it 2026
Case studyRAG for Real Estate: The Agent's Intuition, Finally SearchableMy mom was a real estate agent. I built a pre-AI prototype called kvartinator. Then, in Canada, the real thing.Read it 2026WorkflowWorkflowBuild the demo before you pitch: skip the cover letterMy agent built a working parcel analysis for a startup, on their own SDK, in 14 minutes. Nobody asked. That's the point.Read it 2026