<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Amar Kovacevic</title>
    <description>The latest articles on DEV Community by Amar Kovacevic (@amar_kovacevic_8112db50f5).</description>
    <link>https://dev.to/amar_kovacevic_8112db50f5</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3934745%2F0691c683-46c7-4c26-9cac-0eebe285779c.png</url>
      <title>DEV Community: Amar Kovacevic</title>
      <link>https://dev.to/amar_kovacevic_8112db50f5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/amar_kovacevic_8112db50f5"/>
    <language>en</language>
    <item>
      <title>We Killed ZoomInfo-Style Pricing and Built Pay-Per-Search Business Data Instead. Here Is the Math</title>
      <dc:creator>Amar Kovacevic</dc:creator>
      <pubDate>Sat, 16 May 2026 11:38:10 +0000</pubDate>
      <link>https://dev.to/amar_kovacevic_8112db50f5/we-killed-zoominfo-style-pricing-and-built-pay-per-search-business-data-instead-here-is-the-math-1g1h</link>
      <guid>https://dev.to/amar_kovacevic_8112db50f5/we-killed-zoominfo-style-pricing-and-built-pay-per-search-business-data-instead-here-is-the-math-1g1h</guid>
      <description>&lt;p&gt;The standard B2B SaaS playbook says: charge a monthly subscription, lock in LTV, optimize for retention. ZoomInfo did this and became a $14B company. Apollo, Lusha, Cognism all followed.&lt;/p&gt;

&lt;p&gt;When we built &lt;a href="https://databaselists.com" rel="noopener noreferrer"&gt;DatabaseLists&lt;/a&gt; — natural-language AI search for business leads — we tried the same playbook. $99/mo, $299/mo, $999/mo. It bombed. Conversion was 0.4%. We almost shut it down.&lt;/p&gt;

&lt;p&gt;Then we tried something the playbook says not to do: &lt;strong&gt;kill subscriptions entirely, charge per search&lt;/strong&gt;. Conversion went to 7.8%. LTV dropped, but volume went up so much that revenue tripled in three months.&lt;/p&gt;

&lt;p&gt;Here is the math, the counter-intuitive lesson, and why this only works in specific markets.&lt;/p&gt;

&lt;h2&gt;
  
  
  The frequency problem
&lt;/h2&gt;

&lt;p&gt;The fundamental issue with subscription pricing for lead-gen tools is &lt;strong&gt;frequency mismatch&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A salesperson at a tech company might pull lead lists daily — fine, $99/mo is cheap.&lt;/p&gt;

&lt;p&gt;But the actual SMB market — the consultant, the agency, the local SaaS, the marketing freelancer — they need leads in &lt;strong&gt;bursts&lt;/strong&gt;. Three days a month, maybe. Then nothing for six weeks until the next campaign.&lt;/p&gt;

&lt;p&gt;For these users, $99/mo means they're paying $33/search for the 3 searches they actually run. Their brain does that math and unsubscribes within the first month.&lt;/p&gt;

&lt;p&gt;We were burning cash on Stripe fees and a churn-funnel of users who never got value before they bailed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What pay-per-search actually looks like
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$0.10 per search, 10 free searches on signup
Top-up packs: $5 (50), $25 (300), $50 (700), $200 (3,500)
No subscription. Credits never expire.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What changed in user behavior, measured over the first 90 days:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Subscription model&lt;/th&gt;
&lt;th&gt;Pay-per-search&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Signup → first search&lt;/td&gt;
&lt;td&gt;38%&lt;/td&gt;
&lt;td&gt;91%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conversion to paid&lt;/td&gt;
&lt;td&gt;0.4%&lt;/td&gt;
&lt;td&gt;7.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Avg revenue per paying user&lt;/td&gt;
&lt;td&gt;$204&lt;/td&gt;
&lt;td&gt;$34&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Refund/chargeback rate&lt;/td&gt;
&lt;td&gt;8.1%&lt;/td&gt;
&lt;td&gt;0.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Word-of-mouth signups&lt;/td&gt;
&lt;td&gt;4%&lt;/td&gt;
&lt;td&gt;23%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Net revenue / month&lt;/td&gt;
&lt;td&gt;1.0x&lt;/td&gt;
&lt;td&gt;3.1x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The headline: ARPU dropped 6x. &lt;strong&gt;Total revenue tripled.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is counter-intuitive
&lt;/h2&gt;

&lt;p&gt;The SaaS playbook is built on LTV math: acquire customers, lock them in, milk LTV. CAC payback periods of 9–18 months are normal.&lt;/p&gt;

&lt;p&gt;But that math assumes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The product has &lt;strong&gt;frequent enough use&lt;/strong&gt; that monthly billing feels worth it&lt;/li&gt;
&lt;li&gt;Users have &lt;strong&gt;budget authority&lt;/strong&gt; to commit to a recurring expense&lt;/li&gt;
&lt;li&gt;Switching costs are &lt;strong&gt;high&lt;/strong&gt; enough to prevent churn&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For SMB lead-gen, all three of those are false:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use is bursty, not constant&lt;/li&gt;
&lt;li&gt;The user IS the budget owner, and a $99 recurring charge is a real psychological cost&lt;/li&gt;
&lt;li&gt;Switching is trivial — they can just go to Google Maps + Hunter.io&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When the playbook assumptions break, the playbook breaks. Pay-per-search restores the value-pricing alignment: you pay for what you get, when you get it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The chargeback effect we didn't expect
&lt;/h2&gt;

&lt;p&gt;The 8.1% chargeback rate on subscriptions was killing us. Most weren't fraud — they were "I forgot I subscribed and just noticed on my Amex statement six months later" disputes. Stripe sided with the customer ~70% of the time, and the chargeback fees themselves cost us $15 per dispute on top of the refund.&lt;/p&gt;

&lt;p&gt;Pay-per-search chargebacks dropped to 0.3% because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The charge is tied to an &lt;em&gt;action they took today&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The amount is small enough not to flag on bank statements&lt;/li&gt;
&lt;li&gt;The credits never expire, so there's no "I'm not using it anymore" frustration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This effect alone added ~$2,800/mo in retained revenue. We didn't model it. It was a surprise.&lt;/p&gt;

&lt;h2&gt;
  
  
  The word-of-mouth multiplier
&lt;/h2&gt;

&lt;p&gt;Pay-per-search turned out to be inherently shareable in a way subscriptions aren't.&lt;/p&gt;

&lt;p&gt;"Hey, try this thing, you get 10 free searches" is a sentence a user will actually send to a colleague. "Hey, try this thing, you'll need to pay $99/mo" is not.&lt;/p&gt;

&lt;p&gt;23% of new signups came from explicit referrals in the pay-per-search era, vs 4% during the subscription era. We didn't change the referral program — the &lt;em&gt;product structure&lt;/em&gt; did the work.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this DOESN'T work
&lt;/h2&gt;

&lt;p&gt;I want to be careful here — pay-per-search worked for us because of specific market conditions. It would have been a disaster in other contexts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't do pay-per-use if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your product has &lt;strong&gt;high daily engagement&lt;/strong&gt; (e.g. Slack, Notion). Subscription captures more value here.&lt;/li&gt;
&lt;li&gt;Your &lt;strong&gt;fixed costs per user are high&lt;/strong&gt; (e.g. you provision dedicated compute). You need predictable revenue.&lt;/li&gt;
&lt;li&gt;Your &lt;strong&gt;CAC is over $300&lt;/strong&gt;. You need the LTV math to work.&lt;/li&gt;
&lt;li&gt;Your competitors are entrenched on subscriptions and have &lt;strong&gt;switching costs&lt;/strong&gt; locked in. You'll need to differentiate on something other than pricing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Do consider pay-per-use if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use is bursty (lead gen, image generation, transcription, data pulls)&lt;/li&gt;
&lt;li&gt;Your user is the budget owner (solo, SMB, freelancer)&lt;/li&gt;
&lt;li&gt;The unit of value is clearly countable (1 search, 1 image, 1 minute of audio)&lt;/li&gt;
&lt;li&gt;Your variable cost per call is low enough that small per-unit prices still make margin&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The unexpected upside: better data
&lt;/h2&gt;

&lt;p&gt;The other thing that happened — users started using us in &lt;em&gt;new ways&lt;/em&gt; we hadn't designed for.&lt;/p&gt;

&lt;p&gt;A real estate agent in Dubai ran 240 searches in one weekend, scoping a market entry. Under subscription pricing, he never would have signed up. Under pay-per-search, he spent $24 and gave us a feature request list that led to our entire UAE expansion.&lt;/p&gt;

&lt;p&gt;When pricing aligns with usage moments, you learn what users actually want to do — not what they're rationing themselves to within a monthly cap.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Stripe implementation
&lt;/h2&gt;

&lt;p&gt;Practical note for builders: pay-per-use is harder to implement than subscriptions. You need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;stripe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;checkout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sessions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;payment&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;payment_method_types&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;card&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;line_items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;price_credit_pack_300&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;quantity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;}],&lt;/span&gt;
  &lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;credits&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;300&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two gotchas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Webhooks must be idempotent.&lt;/strong&gt; Stripe retries on 5xx. Use the event ID as a uniqueness key on credit increments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Credit balance must be transactional.&lt;/strong&gt; Use a row lock on the user when decrementing, or you'll oversell credits to concurrent searches.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Subscriptions are the default SaaS pricing model because they work for ~70% of products. For the other 30% — bursty-usage tools serving budget-owning SMBs — pay-per-use is structurally better. Lower ARPU, higher conversion, lower churn, higher referral rate. Run the math on your own market before defaulting to monthly.&lt;/p&gt;

&lt;p&gt;If you want to see pay-per-search in action: &lt;a href="https://databaselists.com" rel="noopener noreferrer"&gt;10 free searches at DatabaseLists&lt;/a&gt;. Type "Italian restaurants in Dubai with 4+ stars". The data is real.&lt;/p&gt;

</description>
      <category>saas</category>
      <category>sales</category>
      <category>startup</category>
      <category>pricing</category>
    </item>
    <item>
      <title>How I Solved the Marketplace Cold-Start Problem by Listing My Own SaaS Businesses First</title>
      <dc:creator>Amar Kovacevic</dc:creator>
      <pubDate>Sat, 16 May 2026 11:31:57 +0000</pubDate>
      <link>https://dev.to/amar_kovacevic_8112db50f5/how-i-solved-the-marketplace-cold-start-problem-by-listing-my-own-saas-businesses-first-4eoi</link>
      <guid>https://dev.to/amar_kovacevic_8112db50f5/how-i-solved-the-marketplace-cold-start-problem-by-listing-my-own-saas-businesses-first-4eoi</guid>
      <description>&lt;p&gt;Every marketplace has a cold-start problem. No buyers come without listings. No listings come without buyers. The classic chicken-and-egg, and the reason most marketplaces never get past launch month.&lt;/p&gt;

&lt;p&gt;When I started &lt;a href="https://hades.ae" rel="noopener noreferrer"&gt;hades.ae&lt;/a&gt; — a marketplace for buying and selling SaaS businesses — I had the same problem. UAE-focused, no inventory, no buyers, no reason for anyone to show up. The standard solutions (cold outreach to brokers, paid listings, content marketing for sellers) all take months to compound.&lt;/p&gt;

&lt;p&gt;So I did the only thing that didn't require waiting: &lt;strong&gt;I listed my own SaaS products first.&lt;/strong&gt; databaselists.com at $10,000. tovi.ae open to offers. A handful of others.&lt;/p&gt;

&lt;p&gt;That solved the inventory problem in ten minutes. It also solved several problems I didn't know I had. Here's what happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  Being your own first seller fixed three problems at once
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. The marketplace had real listings on day one.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not placeholder cards, not fake examples — actual functioning SaaS products with revenue, traffic data, codebases, customer counts, the works. Anyone landing on hades.ae saw something they could actually evaluate and buy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The listing template was forced to be good.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you're listing a stranger's business, you can be lazy with the listing template — "they'll fill out whatever". When you're listing YOUR OWN business, every missing field is something you have to write yourself, and it surfaces fast which fields are dumb and which are essential.&lt;/p&gt;

&lt;p&gt;The first version of the listing form had 47 fields. After listing two of my own products through it I cut 23 of them. Stuff like "preferred payment terms" — sellers should set that during deal terms, not at listing time. Stuff like "growth strategy" — sellers BS this and buyers ignore it.&lt;/p&gt;

&lt;p&gt;The current listing form is 18 fields. None of them feel optional. None of them feel like padding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The conversation with buyers became real.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When buyers reached out about my listings, I wasn't acting as the marketplace operator going "let me forward your question". I was the seller answering directly. I learned what buyers actually ask about (real numbers, real growth rates, real tech debt, why you're selling) versus what marketplace UX assumes they care about (pretty screenshots, lifestyle photos).&lt;/p&gt;

&lt;p&gt;That changed how I redesigned the listing detail page — top of the page now shows the answers to the questions every buyer actually asks. Saves them two emails. Saves me two emails.&lt;/p&gt;

&lt;h2&gt;
  
  
  The supply problem solved itself
&lt;/h2&gt;

&lt;p&gt;About six weeks in, the inventory problem inverted. Other builders saw my listings and started DM-ing me: "Can I list mine?"&lt;/p&gt;

&lt;p&gt;I hadn't run a single piece of paid acquisition for sellers. Just by being the first listing on my own marketplace, I'd made it clear what category and quality of inventory was welcome. New sellers self-selected.&lt;/p&gt;

&lt;p&gt;This is the marketplace flywheel kicking in earlier than I expected. Liquidity attracts liquidity. The first ten listings on your platform set the bar — make them genuinely good, even if you have to source them yourself, and the next hundred come on their own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this works for SaaS specifically
&lt;/h2&gt;

&lt;p&gt;This "list your own first" tactic works particularly well for the SaaS marketplace category because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The listings have intrinsic credibility.&lt;/strong&gt; A real product with a live URL and real revenue numbers self-validates. Buyers can verify by visiting the URL. No "trust me bro".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The seller (me) is in the same community as the buyers.&lt;/strong&gt; UAE indie hackers, MENA builders, regional acquirers — same Twitter circles, same Telegram groups. Trust transfers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SaaS is fungible in a useful way.&lt;/strong&gt; Even if a buyer doesn't want THIS SaaS, they want to see that you understand how to list SaaS, so when their own listing time comes they remember you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It would not have worked for, say, a car marketplace (cars aren't fungible across markets), or a freelancer marketplace (people don't list themselves first), or a B2B services marketplace (no inventory to bootstrap with).&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned about pricing inventory
&lt;/h2&gt;

&lt;p&gt;Listing my own products taught me something I'd have gotten wrong otherwise: &lt;strong&gt;most SaaS sellers price too high, then re-list lower three months later.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I listed databaselists.com at $10,000. Some advice said go to $25,000 — "you can always come down". The standard 4-6x annual revenue multiple suggested $20-40k.&lt;/p&gt;

&lt;p&gt;I went with $10k because I wanted to &lt;em&gt;transact&lt;/em&gt;, not list. The listing has had real inquiries from week one. A $25k listing on the same product would have sat untouched.&lt;/p&gt;

&lt;p&gt;The signal I take from this for other sellers on the platform: &lt;strong&gt;if you've been listed for 6 weeks with no inquiries, your price is wrong, not your product.&lt;/strong&gt; This is now in the listing-flow copy: "Most SaaS sells at 2-4x ARR, not 6x. Price for transactions, not auctions."&lt;/p&gt;

&lt;h2&gt;
  
  
  What's working, what's still hard
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Working:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The "own listings first" tactic — gave us a credible inventory at launch&lt;/li&gt;
&lt;li&gt;UAE-focus reduces noise. Buyers know if they're scrolling hades.ae, they're seeing UAE-built or UAE-relevant SaaS. That narrows the audience but raises the conversion rate.&lt;/li&gt;
&lt;li&gt;Maker comments visible on listings. Buyers want to talk to the actual builder, not a broker. Letting them see the seller's writing style in comments helps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Still hard:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Due diligence. Buyers want financials they can verify. We don't yet automate Stripe-revenue verification. Currently the seller pastes a screenshot, the buyer trusts or asks for live screenshare. We'll automate this eventually.&lt;/li&gt;
&lt;li&gt;Escrow. Cross-border SaaS sales involve trust gaps. We've handled the first few manually. Need to integrate Escrow.com or similar to scale.&lt;/li&gt;
&lt;li&gt;Selling the "why now" — most builders sell SaaS reactively (they're bored, lost interest, want to focus on next thing). Buyers want a positive "why now" story. We're building a "seller positioning" prompt in the listing form to help.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The unintuitive lesson
&lt;/h2&gt;

&lt;p&gt;The default playbook for launching a marketplace is "go get supply, then demand will come". Or "go get demand, then supply will come". Both involve waiting and burning capital.&lt;/p&gt;

&lt;p&gt;The third path: &lt;strong&gt;be your own supply, then both sides solve themselves.&lt;/strong&gt; Works if (a) you have products worth listing, (b) the marketplace category fits your products, (c) you're willing to publicly transact your own assets.&lt;/p&gt;

&lt;p&gt;Listing my own SaaS on hades.ae felt weird at first — like a real estate agent putting their own house in the window. Turns out that's exactly the right signal: I'm willing to use this marketplace I built, with my own money on the line, with public listings anyone can audit.&lt;/p&gt;

&lt;p&gt;If you have a SaaS / website / digital asset you want to sell — UAE-built or otherwise — &lt;a href="https://hades.ae" rel="noopener noreferrer"&gt;list it on hades.ae&lt;/a&gt;. And if you want to see what good listings look like before you write your own, mine are still up. databaselists.com is at $10,000. tovi.ae is open to offers. Walk through the listings, then build a better one of your own.&lt;/p&gt;

</description>
      <category>marketplace</category>
      <category>startup</category>
      <category>saas</category>
      <category>business</category>
    </item>
    <item>
      <title>Why ChatGPT Hallucinates UAE Visa Rules — and How I Built a Localized AI Chat That Doesnt</title>
      <dc:creator>Amar Kovacevic</dc:creator>
      <pubDate>Sat, 16 May 2026 11:31:21 +0000</pubDate>
      <link>https://dev.to/amar_kovacevic_8112db50f5/why-chatgpt-hallucinates-uae-visa-rules-and-how-i-built-a-localized-ai-chat-that-doesnt-5fm4</link>
      <guid>https://dev.to/amar_kovacevic_8112db50f5/why-chatgpt-hallucinates-uae-visa-rules-and-how-i-built-a-localized-ai-chat-that-doesnt-5fm4</guid>
      <description>&lt;p&gt;Ask ChatGPT for the visa requirements to bring your parents to Dubai on a residency. The answer will sound confident. About half of it will be wrong — wrong income threshold, wrong document list, conflated rules from 2019.&lt;/p&gt;

&lt;p&gt;Ask it which areas in Dubai are freehold for foreign buyers, or where you can buy alcohol on a Friday in Sharjah, or how the Emirates ID renewal grace period actually works. Same pattern. Confident hallucination on UAE-specific facts.&lt;/p&gt;

&lt;p&gt;This is the gap &lt;a href="https://tovi.ae" rel="noopener noreferrer"&gt;Tovi&lt;/a&gt; exists to fill. We built a UAE-focused AI chat — like ChatGPT, but with localized knowledge baked in, in English and Arabic. Here is what I learned about the gap, why generic LLMs fail at this, and what actually moved the needle.&lt;/p&gt;

&lt;h2&gt;
  
  
  The size of the localization gap
&lt;/h2&gt;

&lt;p&gt;The big foundation models (GPT-4, Claude, Grok, Gemini) are trained primarily on English-language English/American/European internet. When you ask them about UAE topics, three things go wrong:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Training data is sparse.&lt;/strong&gt; There's roughly 1/100th the public English-language text about UAE visa rules as there is about US immigration. The model has seen the topic but not enough to be confident.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The data it HAS is often outdated.&lt;/strong&gt; UAE policy moves fast — Golden Visa criteria changed twice in 2023, freelance visa rules in 2024, Emirates ID renewal grace period in 2025. The training cutoff is always behind.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The model fills gaps by extrapolating from other countries' rules.&lt;/strong&gt; Often plausibly, often wrong. It'll quote "you need three months of bank statements" because that's true in the UK, even though UAE wants six.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The result is a confident-sounding answer that fails the basic test of whether someone reading it could actually act on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why fine-tuning isn't the answer
&lt;/h2&gt;

&lt;p&gt;Early in the project I assumed we'd fine-tune a small open model on UAE government documents, FAQ sites, immigration forums. Don't do this.&lt;/p&gt;

&lt;p&gt;Fine-tuning bakes information into weights. UAE info changes every few months. Re-fine-tuning every quarter is expensive, slow, and produces models that are still confident-wrong on edge cases.&lt;/p&gt;

&lt;p&gt;What works better: &lt;strong&gt;retrieval-augmented generation (RAG) over a curated, frequently-updated knowledge layer&lt;/strong&gt;, combined with a strong base model that knows how to &lt;em&gt;say it doesn't know&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The layers we ended up with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User question (EN or AR)
  → intent classifier (is this UAE-specific? which domain?)
  → vector search over curated UAE knowledge base (visa, RERA, DLD, gov, retail, transport)
  → LLM synthesizes answer using ONLY the retrieved facts as ground truth
  → LLM adds source citations
  → translation layer if user prefers Arabic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The classifier matters. Generic chitchat ("hi how are you", "tell me a joke") should NOT go through the UAE knowledge layer — it should hit the LLM directly with a friendly system prompt. We learned this the hard way after early versions answered "hi" by trying to retrieve UAE facts and producing nonsense.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Arabic problem
&lt;/h2&gt;

&lt;p&gt;Arabic isn't optional in the UAE — it's the official language, and Arabic users expect the chat to feel native, not translated.&lt;/p&gt;

&lt;p&gt;Three things that don't work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Translating user input to English, processing, translating back.&lt;/strong&gt; Loses context, especially formal/informal distinctions and gender agreement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Asking the model to "respond in Arabic" via system prompt.&lt;/strong&gt; Output quality is dramatically worse than English. The model is just less competent in Arabic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Using cheap translation APIs.&lt;/strong&gt; They mangle proper nouns ("Dubai Marina" becomes a literal translation).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three things that work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Run the same RAG pipeline in the user's language.&lt;/strong&gt; Keep an Arabic knowledge base in parallel to the English one, with the same facts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Claude or Grok for Arabic, not GPT-4.&lt;/strong&gt; In our blind testing, Anthropic and xAI produce more natural Arabic than OpenAI does. Counter-intuitive but consistent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Translate Arabic outputs ONLY if the source content is English and you have no Arabic version.&lt;/strong&gt; Use DeepL not Google Translate. Then have a final LLM pass to polish.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The trust loop: showing sources
&lt;/h2&gt;

&lt;p&gt;Generic ChatGPT answers UAE questions without sources. Tovi shows sources for everything UAE-specific.&lt;/p&gt;

&lt;p&gt;This sounds obvious, but it's the difference between "I'll try Tovi for this one question" and "I'll keep using Tovi." When the user can click through to the official Dubai DED page or the GDRFA visa portal, they trust the next answer too. When they can't, they're back to verifying everything on Google anyway.&lt;/p&gt;

&lt;p&gt;Sources also force you to keep the knowledge base honest. If a source 404s, we know that fact is stale. We have a nightly job that checks every cited URL and flags broken ones for re-curation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's hard, what's still broken
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hard but worth it:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maintaining the UAE knowledge base. Visa rules, RERA permits, DLD fees, free zone licenses — all of these change. We have a part-time human reviewing official sources weekly. This is unsexy but it's the moat.&lt;/li&gt;
&lt;li&gt;Handling the "I asked in English but want the answer in Arabic" case — common for second-language Arabic speakers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Still broken:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dialect handling. Tovi understands MSA (Modern Standard Arabic) and Emirati dialect okay. Egyptian, Levantine, Maghrebi dialect users get worse answers because we don't yet have enough training samples in those.&lt;/li&gt;
&lt;li&gt;Real-time data. We don't fetch live prayer times, exchange rates, or traffic data. We're working on tool-calling for these, but the latency hit on a chat experience is brutal — every tool call adds ~800ms.&lt;/li&gt;
&lt;li&gt;Edge cases on government processes. If a user has an unusual case ("I'm a stateless person born in UAE, can I apply for citizenship?"), we point them to a human. The model knows when to defer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The lesson for vertical AI in general
&lt;/h2&gt;

&lt;p&gt;The temptation when building "AI for X" is to wrap a foundation model in a UI and ship it. For some domains (creative writing, summarization, generic Q&amp;amp;A) that works.&lt;/p&gt;

&lt;p&gt;For domains where users will &lt;em&gt;act&lt;/em&gt; on the answer — visa decisions, real estate purchases, medical questions, legal advice — the wrapper is the easy part. The hard part is the curated, regularly-updated knowledge layer that prevents the model from confidently lying to people who'll trust it.&lt;/p&gt;

&lt;p&gt;The verticals where vertical-AI products will win in 2026 are the ones where the team behind the product treats the knowledge layer as the actual product, and the LLM as a thin interface over it.&lt;/p&gt;

&lt;p&gt;If you live in the UAE or want to know how things actually work here — &lt;a href="https://tovi.ae" rel="noopener noreferrer"&gt;Tovi is free to try&lt;/a&gt;. Ask in English or Arabic. If it answers something wrong, tell us — the knowledge base gets better every week.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatbot</category>
      <category>arabic</category>
      <category>rag</category>
    </item>
    <item>
      <title>I Built 13 AI Tools for Dubai Real Estate Agents in 3 Weeks. Here Is What Actually Moved the Needle</title>
      <dc:creator>Amar Kovacevic</dc:creator>
      <pubDate>Sat, 16 May 2026 11:24:29 +0000</pubDate>
      <link>https://dev.to/amar_kovacevic_8112db50f5/i-built-13-ai-tools-for-dubai-real-estate-agents-in-3-weeks-here-is-what-actually-moved-the-needle-1gb5</link>
      <guid>https://dev.to/amar_kovacevic_8112db50f5/i-built-13-ai-tools-for-dubai-real-estate-agents-in-3-weeks-here-is-what-actually-moved-the-needle-1gb5</guid>
      <description>&lt;p&gt;Most "AI for real estate" tools fail for the same reason: they wrap GPT-4 around a generic prompt and ship it. An agent in Dubai Marina tries it, gets a description that says "stunning waterfront property" and "unparalleled luxury", and uninstalls in 90 seconds. Because every listing on Property Finder already says that.&lt;/p&gt;

&lt;p&gt;I spent three weeks building &lt;a href="https://agentsai.ae" rel="noopener noreferrer"&gt;AgentsAI&lt;/a&gt; — 13 AI tools and a CRM aimed at UAE real estate agents. The Dubai market is brutal: ~50,000 licensed agents, ~85% churn within 24 months, and tools that don't know the difference between Arabian Ranches and JVC die fast.&lt;/p&gt;

&lt;p&gt;Here is what actually mattered, and what I'd do differently.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Vertical AI lives or dies on market-specific tokens
&lt;/h2&gt;

&lt;p&gt;The single biggest unlock was building a UAE-specific prompt vocabulary. Generic LLMs don't know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The pricing convention is &lt;strong&gt;AED per sqft&lt;/strong&gt; (not USD per sq ft, not AED per sqm — getting this wrong instantly outs you as a foreign tool)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BUA&lt;/strong&gt; vs &lt;strong&gt;plot size&lt;/strong&gt; — for villas this is a make-or-break listing field&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Freehold vs leasehold&lt;/strong&gt; by zone (Marina = freehold, parts of Sharjah = leasehold)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DLD/RERA permit numbers&lt;/strong&gt; are mandatory on portals&lt;/li&gt;
&lt;li&gt;The cultural tone shift between "luxury" and "family-friendly" listings — "stunning view" sells in Marina, "close to British school" sells in Mirdif&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built a 300-line system prompt that bakes this in. The output went from "this could be anywhere" to "this is clearly Dubai" in one prompt revision. Agents started using it for hours, not seconds.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SYSTEM: You are a senior UAE real estate copywriter.
- Use AED (never USD)
- Distinguish BUA (built-up area) and plot
- Reference RERA permit if provided
- For Marina/Downtown/Palm: target HNW, lead with view + lifestyle
- For Mirdif/Arabian Ranches: lead with schools + community
- For JVC/Discovery Gardens: lead with affordability + commute
- Never use: stunning, breathtaking, unparalleled, nestled, oasis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That last line — banning AI-detector words — alone made the copy feel more human than 90% of agents writing it themselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Speed is the actual feature
&lt;/h2&gt;

&lt;p&gt;I assumed agents would care about quality. They cared about &lt;strong&gt;time-to-first-listing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The benchmark from agents I interviewed: 18–25 minutes to write a good listing manually. Including the back-and-forth on tone with their broker.&lt;/p&gt;

&lt;p&gt;Initial AgentsAI version: ~12 seconds with grok-4-1-fast-non-reasoning. Agents loved it but it was still on the "magical" side of the line — they didn't trust it yet.&lt;/p&gt;

&lt;p&gt;After watching screen recordings, I realized agents needed to &lt;em&gt;see it appear&lt;/em&gt;. Streamed tokens, even fake streaming on cached results, made the perceived quality jump. Same content, 3x retention.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;xai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;grok-4-1-fast-non-reasoning&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[...],&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="k"&gt;await &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;chunk&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`data: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chunk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;delta&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;\n\n`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. The CRM was the secret weapon
&lt;/h2&gt;

&lt;p&gt;I almost didn't build it. Agents already have Bayut CRM, Property Finder CRM, sometimes Salesforce.&lt;/p&gt;

&lt;p&gt;But after talking to 12 agents, &lt;strong&gt;none of them actually used those CRMs&lt;/strong&gt;. They lived in WhatsApp + notes app + a spreadsheet. The portals' CRMs were too heavy for the day-to-day "Imran called about the 2BR Marina, budget 2.4M, wants viewing Friday" workflow.&lt;/p&gt;

&lt;p&gt;So I built a 4-stage pipeline (Lead → Qualified → Viewing → Offer → Closed) with one rule: &lt;strong&gt;adding a lead must take under 15 seconds on mobile&lt;/strong&gt;. Just name + phone + intent + budget. Everything else is optional.&lt;/p&gt;

&lt;p&gt;This is the part agents actually return to daily. The AI tools are what got them in the door; the CRM is what made AgentsAI sticky.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Pricing: I sold credits, not seats
&lt;/h2&gt;

&lt;p&gt;The default SaaS playbook says per-seat. For agents, per-seat is a non-starter — they're 100% commission, no budget authority, and they hop brokerages every 11 months.&lt;/p&gt;

&lt;p&gt;I went with &lt;strong&gt;monthly generation credits&lt;/strong&gt;: Free (5/mo), Starter (100/mo, $29), Pro (500/mo, $79), Team (2000/mo).&lt;/p&gt;

&lt;p&gt;This:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Killed the "but I won't use it much" objection — they can try free&lt;/li&gt;
&lt;li&gt;Made upgrades natural (you hit 5, you upgrade)&lt;/li&gt;
&lt;li&gt;Made the tool poach-proof — credits transfer with the agent, not the brokerage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Conversion to paid was ~12% in week one, way better than I expected for a cold launch.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. The non-AI features that mattered most
&lt;/h2&gt;

&lt;p&gt;Three "boring" features that drove more retention than the AI did:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;a) Virtual staging.&lt;/strong&gt; Upload empty room photo → AI furnishes it. Agents go nuts for this because professional staging photos cost AED 800–1500/room from a photographer. We do it for one credit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;b) PDF brochure templates.&lt;/strong&gt; Four pre-built print-ready layouts (Luxury, Minimal, Classic, Investor). Agents share these on WhatsApp constantly. Branded PDF = professional credibility for an agent who's 6 months in the industry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;c) WhatsApp templates.&lt;/strong&gt; Not the AI generation — the &lt;em&gt;categories&lt;/em&gt;. "First outreach", "Viewing confirmation", "Offer made", "Price drop". Agents told me they were tired of staring at a blank chat. Naming the scenario was the unlock.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. What I'd do differently
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Charge from day one.&lt;/strong&gt; I had a free tier from launch. Some agents abused it (5 burner emails for 25 free generations). Should have required card on file from week two.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skip the desktop sidebar on mobile.&lt;/strong&gt; Built it lg-only at first. 70% of usage is mobile (agents in cars between viewings). Took two iterations to get the horizontal-scrolling chip nav right.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't build a blog index page. Build 200 landing pages.&lt;/strong&gt; I wrote 199 SEO-targeted blog posts ("How to Write an Arabian Ranches Villa Listing for Family Buyers" etc) and that's now driving 60% of organic traffic. Should have started with content, not the tool.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The stack, for the curious
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 14&lt;/strong&gt; App Router on Vercel-equivalent VPS (PM2)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PostgreSQL&lt;/strong&gt; for everything (users, generations log, leads, blog cache)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;xAI Grok&lt;/strong&gt; for text (grok-4-1-fast-non-reasoning) + vision (grok-4.3) + image (grok-imagine-image)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NextAuth&lt;/strong&gt; with Credentials + bcrypt&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stripe&lt;/strong&gt; for subscriptions (live mode, signed webhooks)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind v3&lt;/strong&gt; + Cormorant Garamond serif headlines for editorial brand&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Total cost so far: ~$40 in xAI API + $7/mo VPS slice. Revenue trajectory makes that look ridiculous.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Vertical AI works when you go deep on one industry's vocabulary. Generic prompts produce generic output. Speed beats quality. Build the boring CRM. Price for the user, not the buyer. And start with content if you want compounding traffic.&lt;/p&gt;

&lt;p&gt;If you're a UAE agent reading this — &lt;a href="https://agentsai.ae" rel="noopener noreferrer"&gt;try AgentsAI free&lt;/a&gt;. 5 generations a month, no card needed. Let me know what's broken and I'll fix it the same day.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>realestate</category>
      <category>saas</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
