Pumo
Ask PumoMy petsThe numbersFor vets and shops

For vets, shops and brands

Seven comparisons decide the order. None of them is money.

Every local lead product tells you its ranking is fair. Here is ours, written out in the order the code runs it, so you can check this page against the behaviour instead of taking a sentence on faith.

Pumo mid-lick, photographed in the kitchen where his reels are filmed
Verified by phone

The ranking inputs

The seven comparisons, in the order the code runs them

One pure function does the ordering. It takes two arguments, the partner and what the owner asked for, and it reads nothing else: no clock it was not handed, no database, no network, no randomness.

  1. Verified

    A person phoned this number and a person at this business answered. An unverified row is not ranked lower, it is not shown at all.

  2. Service match

    Whether you do the thing that was actually asked about, from one agreed vocabulary: consult, vaccination, surgery, dental, microchip, labwork, emergency, grooming, boarding, food, litter, accessories, pharmacy.

  3. Species match

    Whether you take the animal in question. Plenty of clinics do not take birds, and sending somebody with a parrot to one of them costs them an afternoon.

  4. Area, then governorate

    Your area counts for more than your governorate, and neither counts for anything when the owner has not told us where they are.

  5. Distance, in whole kilometres

    Only when both sides have coordinates, and only ever rounded to a whole kilometre. What we hold is a coarse centre point for the owner's area, never a device position, so letting a 40 metre difference reorder two clinics would be inventing precision we do not have.

  6. Open now, with unknown ahead of closed

    Opening hours are second hand until you confirm them on the call. A clinic whose hours we do not hold ranks ahead of one we believe is shut, because hiding a business on a stale string is the same mistake as handing out a dead number.

  7. Alphabetical, by listing id

    The last tiebreak is boring on purpose. Without it the order falls back to whatever the database hands us, which over time is the order people signed up in, which is the order they were sold to in.

Three things the ranking function is never handed

Money here is not weighted at zero. It is absent. The ranking function is given a projection built by one small function, and that projection is an allow list: id, listing id, kind, verified, governorate, area, coordinates, species, services, emergency cover, hours. Adding a bid column to the partners table tomorrow would not change one line of the output, because the value would never reach the function.

  • The monthly fee on a sponsored slot. It is flat, it is set in advance, and it is stored on a different table entirely.
  • Your tier. Tier changes what you see in your own dashboard and whether you may hold a labelled slot. It does not move you up one place.
  • Anything you have spent, this month or ever. There is no spend field in the projection and no comparison that could read one.

Where money can appear, and the two screens where it never can

A sponsored card is a different object, on a different table, returned in a different field, carrying its own label. That is what makes the next two lists enforceable instead of a promise.

A paid card may appear here

  • Beside a food answer, as a separate labelled card that sits next to the recommendation and never inside it.
  • Beside a supplement answer, on the same terms.
  • Beside a grooming answer, on the same terms.
  • In the directory and in the pet record, labelled exactly the same way.

A paid card can never appear here

  • On the symptom path. If a message describes a symptom the adviser stops before anything commercial runs at all, and shows a vet.
  • On the emergency path. Same rule, and it is enforced in two independent places in the code so one careless edit cannot undo it.
  • Inside a recommendation. The two are different objects returned in different fields, so they cannot be merged by accident.
  • Instead of a recommendation. Buying a slot does not remove a competitor from the ranked list, because a purchase that changed the ranked list is the exact thing this design exists to prevent.

Where a paid slot can never appear

If somebody describes a symptom, the adviser stops before it does anything else, shows a vet, and carries no paid content at all. A sponsored card on the screen a frightened owner is looking at is the one thing we are not willing to build.

The label sits above the card, in both languages

Not beside it, not under it, not folded into a tooltip. The label and the disclosure sentence travel with the object from the server in English and Arabic, because an interface that has to remember to add a label is an interface that will one day forget. The word partner is not a label we are allowed to use: the European rules that apply to us call this advertising, so the card says advertising.

Sponsored

Your headline, one line long

Two sentences about the product, written by you and checked by us.

Paid placement. Pumo ranks its recommendations by verification, distance and opening hours, never by payment.

This is a mock card on a sales page. No sponsored slot is running today.

The year one offer

Every licensed Muscat clinic and pet shop lists free in year one

This is not an introductory rate that quietly becomes a bill. Through the first year a verified listing costs a licensed clinic or pet shop nothing at all, and the only people who pay us anything are food and supplement brands buying a labelled card. A directory worth using is worth more to us than a small amount of money taken from the businesses that make it worth using.

Verified listing

Free for every licensed Muscat clinic and pet shop through the first year. Your name, your hours, your real number, a full Arabic profile, and a monthly note of how many people we sent you.

Sponsored slot

A separate, labelled card in the food or supplement answer. It sits beside the recommendation and never inside it. Flat monthly fee, set in advance, does not vary with how much business you get, and does not touch the ranking.

Who pays us in year one

  • Food and supplement brands, for a labelled card beside an answer. A flat monthly fee, agreed in advance, that does not move with how much business you get.
  • A paid card also needs an Omani VAT registration. That is a gate we put on ourselves, not a charge.
  • Nobody else. Not a clinic, not a pet shop, not for a listing, not for a position in the order, and never per lead.

Attribution

What we will tell you, that nobody else will

Right now this sends a small number of people a month. We will show you the real figure, split three ways: the ones we saw arrive, the ones you told us arrived, and the ones we sent and never heard about again. We do not add those together. If you think a click was junk, one tap disputes it and we honour it.

One number, split three ways, and never added up

Observed
We saw the arrival ourselves, on a channel Pumo issued. It is the smallest of the three numbers and it is the only one we would defend in an argument.
Claimed
You told us they arrived. We record it as yours, and we record that it came from you rather than from us.
Unconfirmed
We handed somebody your number and never heard anything again. Most of Muscat takes orders on WhatsApp, so this is the big bucket, and calling it a lead would be a lie.

We do not add them together

A single combined total is how every lead product in this market reaches a number that flatters itself. Three numbers stay three numbers, on your dashboard and in anything we send you.

A disputed click is one tap, and we honour it

If a click was junk, press dispute. The reason is stored against that click, it comes off what we report to you, and nobody has to argue with us about it on the phone.

The directory, exactly as it stands today

Nothing is listed yet, because nothing has been verified yet. Go and look at it. An empty directory that explains itself is the argument on this page in one screen, and four invented clinics would undo all of it.

The WhatsApp line is not published yet

Rather than hand you a button that dials a number nobody answers, here is the one that works today. Send a direct message on Instagram and Sareh replies from there. The number goes on this page the moment it is live.

@pudgypumo