Mis projektiga on tegu
hinnaguru.ee on Eesti teenuste hindade ja pakkujate kataloog. Inimene tuleb küsimusega «mis maksab kolimine ja kellele see tellida» ning saab vastuse ühel lehel: tegelikud hinnad ettevõtete hinnakirjadest, vahemik ja mediaan, ning kõrval pakkujate nimekiri riiklike registrite andmetega.
Erinevus tavapärasest kataloogist on ühes asjas: ettevõtted ei maksa nimekirja pääsemise eest ja andmed nende kohta ei ole nende endi sõnad. Tegutsemisaeg, töötajate arv, käive selles tegevusalas ja maksuvõla olemasolu tulevad äriregistri ning Maksu- ja Tolliameti avaandmetest, iga väärtuse juures on kuupäev ja allikas. Praeguseks on läbi käidud 66 teenust, nimekirjades on 1096 ettevõtet ja 3487 hinnapositsiooni.
Ütlen piirid kohe välja: sait avanes indekseerimisele alles nüüd. Liiklust, positsioone ega päringuid mul näidata ei ole — ja ma ei tee nägu, nagu oleks. See artikkel räägib sellest, kuidas projekt on ehitatud ja mis andmetes välja tuli, mitte tulemustest.
Kust see välja kasvas: inimesed ei taha vorme täita
Minu eelmine projekt samas nišis oli päringute turuplats: kasutaja kirjeldab ülesannet, ettevõtted vastavad. Päringuid peaaegu ei jäetud. Analüüs näitas ebameeldivat asja: publik ei tulnud vahendamise pärast. Ta tuli kahe asja pärast — aru saada, mis see maksma peaks, ja saada teostaja kontakt. Vorm nende kahe sammu vahel ei olnud teenus, vaid takistus.
Sellest tuleb hinnaguru.ee peamine arhitektuurne otsus: päringuvorme ei ole üldse. Ettevõtete kontaktid on avatud, link ettevõtte kodulehele on otsene, projekt ei astu vahele. See lõikab teadlikult ära kõige ilmsema rahateenimise viisi (kontaktide müügi) vastutasuks selle eest, et leht vastab ausalt küsimusele, millega inimene tuli.
Õppetund on siin üldine ega puuduta ainult katalooge: kui kasutajad ei tee soovitud tegevust, ei ole küsimus alati nupus ega konversioonis. Vahel ei ole pakutav tegevus lihtsalt see, mille pärast tuldi. See on sama jutt mis liikluse ja päringute vahelisest lõhest — ainult et vastusega «võta vorm ära», mitte «tee vorm ümber».
Mida Eesti avaandmed tegelikult annavad
See on kõige alahinnatum osa. Eesti annab masinloetavad väljavõtted tasuta ja vaba litsentsi all, aga kasutajaid on üksikuid.
| Allikas | Litsents | Mida annab |
|---|---|---|
| Äriregistri avaandmed | CC BY 4.0 | Nimi, registrikood, KMKR, registreerimise kuupäev, aadress, tegevusalad, töötajate arv, käive tegevusalade lõikes, majandusaasta aruanded |
| Maksu- ja Tolliameti maksuvõlglaste nimekiri | CC BY-SA 3.0 | Maksuvõlg, uueneb iga päev |
| Ettevõtete kodulehed | — | Hinnakirjad, teenuse koosseis, rekvisiidid registriga sidumiseks |
Projekti baasis on kogu register tervikuna — 376 043 juriidilist isikut. Registrit uuendatakse kord nädalas, võlglaste nimekirja iga päev.
Selle tabeli võtmerida on käive tegevusalade lõikes. Just see muudab kataloogi järjekordsest telefoninimekirjast tööriistaks. Ettevõtte kogukäive vastab küsimusele «kui suur ta üldse on», mitte küsimusele «kas ta tegeleb sellega, mille pärast ma tulin, ja mis mahus».
Peamine leid: Google'i top 10 ei ole niši parimate nimekiri
Esimese teenuse — kolimise — lasin konveierist käsitsi läbi enne, kui konveier üldse kirjutatud oli, just selleks et vaadata, kas andmed lähevad otsitulemustega lahku. Läksid, ja tugevamini kui ootasin.
Mis on andmetes näha ja otsitulemustes mitte:
- Ettevõte käibega 1,3 mln € teeb selles nišis 86 tuhat — 6,6%. Tegu on veofirmaga, kellel on kolimine kõrvalsuund. Otsitulemustes näeb ta välja suure tegijana, nišis on ta väiksem kui väike firma 160 tuhandega, kes tegeleb ainult kolimisega.
- Ettevõtet käibega 1,4 mln € just kolimisteenuselt ei olnud üheski viies otsitulemuste lehes. Ta leidis üles registrist tegevusala koodi järgi tehtud juurdekorje. Koduleht nõrk, SEO puudub — Google'i jaoks teda peaaegu ei ole.
- Ettevõttel, kellel olid otsitulemustes positiivsed arvustused, oli viiekohaline maksuvõlg. Otsitulemustest seda kuidagi ei näe.
- Aasta tagasi registreeritud ettevõte käibega 17 700 € seisis otsitulemustes kahekümneaastaste kõrval.
Järeldus, mille ma sellest SEO-inimesena kaasa võtan: otsitulemused järjestavad saite, mitte ettevõtteid. Sõnades on see ilmselge, aga kui panna kõrvuti kaks tulpa — positsioon otsitulemustes ja käive nišis —, näeb ära, kui nõrgalt need seotud on. Nõrga kodulehega tugeva ettevõtte omanikule on see hea uudis: tipus olevad konkurendid püsivad seal sageli mitte ärimahu, vaid selle tõttu, et keegi võttis nende kodulehe ette. Kuidas selline lõhe nišši seest välja näeb, näitasin kasiino-affiliate saitide niši analüüsis — seal on sama pilt teiste vahenditega.
Mis osutus keerulisemaks kui tehnilises kirjelduses
Aus osa. Paberil nägi konveier lihtne välja: võta otsitulemused, loe saidid läbi, seo registriga, korja hinnad. Esimesel käsitsi prooviläbimisel tuli välja neli asja, mida lähteülesandes ei olnud.
1. Saiti juriidilise isikuga siduda on kaks korda raskem, kui tundub. Registrikood kodulehel — «kõige usaldusväärsem tunnus» — leidus 10 saidist viiel. KMKR number lisas veel kolm, sealhulgas ainsa täisväärtusliku hinnakirjaga ettevõtte. Kokku 8 kümnest. Kaks saiti ei andnud ei koodi ega KMKR-i.
2. Saidivõrgustikud osutusid massnähtuseks. Ühel ettevõttel oli ühe teenuse peale neli erinevat domeeni, kahel teisel kaks. Ilma registrikoodi järgi dubleerimist eemaldamata oleks nimekiri kaks korda pikem ja kaks korda kasutum: üks ja sama ettevõte võtaks eri nimede all pool lehte.
3. Kaks juriidilist isikut ühel saidil. Üks sait näitas korraga kahte registrikoodi — eri ettevõtted, eri maakonnad, eri registreerimisaasta. Esimese ettejuhtuva võtmine oleks tähendanud andmete omistamist valele.
4. Samades ühikutes hinnad ei ole võrreldavad. Kuus rida on vormiliselt €/tunnis, aga 25 €/h on töömees ilma autota ja 68 €/h on töömees koos 14 m³ kaubikuga. Keskmine sellisest hulgast valetab mõlemas suunas. Tuli sisse tuua teenuse koosseis: täna arvutatakse kolimislehel mediaan eraldi koosseisu kaupa — «kaubik kuni 15 m³ + 1 töömees» ja nii edasi —, ning märkimata koosseisuga hinnad tähistatakse võrreldamatuks ega lähe mediaani arvestusse. 34 ettevõttest avaldab hinnad mingil kujul 13.
Eraldi pisiasi, mis ootamatult hästi ära tasus: registrist leitud ettevõtete domeene ei otsitud tasuliste otsingupäringutega, vaid ilmsete nimevariantide läbiproovimisega ja registrikoodi kontrollimisega saidil endal. Neli tabamust viieteistkümnest — tasuta.
Miks see on programmaatiline SEO, mitte «lehtede vorpimine»
66 teenuselehte on kokku pandud ühe malli järgi andmebaasist — vormiliselt on see täpselt see, mida nimetatakse programmaatiliseks SEO-ks. Erinevus tavapärasest arusaamast on andmeallikas: lehed ei sünni sõnade ümbertõstmisest mallis, vaid andmetest, mida konkurentidel ei ole. Teenuseleht eksisteerib sellepärast, et selle alla on kogutud register, hinnakirjad ja niši statistika, mitte sellepärast, et nimekirjas oli veel üks nimetus.
Sellest tulenevad reeglid, mida ma rangelt hoian:
- Avaldamise lävi. Alla kolme pakkuja — lehte ei avaldata: see ei vasta küsimusele «kellele tellida».
- Sektsioon ilmub siis, kui selle jaoks on andmed. Tühi plokk teatab lugejale, et projekt ei tea seda, millest ta rääkima hakkas.
- Mitte välja mõelda. Hinda ei ole — nii on kirjas «ei ole». Juriidilist isikut ei õnnestunud tuvastada — ei seota. Võõraste andmete omistamine ettevõttele on halvem kui andmete näitamata jätmine.
- Mitte ühtegi hinnangut. «Tegutseb 2011. aastast» on fakt. «Usaldusväärne firma» on hinnang, mille eest tuleb pretensioon.
Sellest, kus see piir jookseb ja mille eest Google lehtede generaatorit karistab, on eraldi artikkel programmaatilisest SEO-st. Siin ütlen lühidalt: maht iseenesest ei ole probleem, probleem on maht ilma andmeteta.
Tehniliselt on tegu Next.js-i ja staatilise genereerimisega ning PostgreSQL-iga, kogumiskonveierid on välja viidud eraldi Pythoni skriptidesse. Kaks konveierit — registrilaadur ja saidianalüsaator — on teadlikult lahus: esimene käib graafiku järgi ja läheb katki väljavõtte vormingu muutumisest, teine käivitub ühe teenuse kaupa ja läheb katki võõrast ümberkujundusest. Nende kokkupanek tähendaks süsteemi, mis jääb tervikuna seisma kummast tahes põhjusest.
Mida lugeja siit kaasa võtta saab
Isegi kui kataloogi teil vaja ei ole, on avaandmed kasulikud kohe.
Kui valite Eestis töövõtjat — kümme minutit kontrolli:
- Leidke ettevõte äriregistrist nime või registrikoodi järgi.
- Vaadake registreerimise aastat ja seda, kas majandusaasta aruanded on viimaste aastate eest esitatud. Augud on signaal.
- Vaadake käivet just selles tegevusalas, mille pärast te tulite, mitte kogukäivet.
- Kontrollige ettevõtet EMTA maksuvõlglaste nimekirjas.
- Veenduge, et ettevõtte kodulehel olev registrikood langeb kokku sellega, mida te vaatate — sait ja juriidiline isik ei ole kaugeltki alati ilmselgelt seotud.
Kui te ise osutate teenuseid — vaadake endale samade silmadega otsa. Kas registrikood on kodulehel avaldatud, kas hinnakiri koosseisuga on olemas, kas on näha, mitu aastat te tegutsete. See ei ole otseselt SEO, see on selle kohta, et andmed teie kohta on juba avalikud ja satuvad ükskord konkurentide kõrvale ühte tabelisse — küsimus on ainult selles, kes selle esimesena teeb.
Kui teete sisuprojekti — otsige kõigepealt andmeid, mida konkurentidel ei ole, ja alles siis mõelge struktuurile ja tekstidele. Aru saada, millest saidi struktuur kokku panna, on lihtsam siis, kui on selge, mille poolest teie leht kümnest samasugusest erineb. Kui sellist allikat ei ole, ei päästa lehtede programmne genereerimine.
Mida projekt teadlikult ei tee
Piirid on olulisemad kui võimalused, seepärast loetlen otse.
- Ei müü kohta nimekirjas. Ei tasulise profiili ega reklaami eest. Tasuline profiil annab logo ja oma kirjelduse — ja mitte ühtegi kohta ülespoole.
- Ei hinda töö kvaliteeti. Lehel olev punktisumma kirjeldab avalike andmete täielikkust ja läbipaistvust, mitte seda, kas ettevõte teeb tööd hästi. Arvustusi ei koguta.
- Ei vahenda. Pöördumine läheb otse ettevõttele, projekt ei ole tehingu osapool.
- Ei kustuta midagi. Kõrvale jäetu jääb baasi koos põhjusega — ülekontrollimiseks ja ausa rea jaoks «nišis on N ettevõtet, näitame M».
- Praegu ainult eesti keeles. Teenuseid otsitakse valdavalt eesti keeles ja jõudude hajutamine enne mudeli kontrollimist ei ole põhjendatud. Miks ma seda küsimust üldse eraldi tõstatan — artiklis mis keeles Eestis veebilehte turundada.
Lähim proovikivi ei ole liiklus, vaid andmed: mitu teenust ületab kolme kontrollitud rekvisiitidega pakkuja läve. Kui niši ei kogune kolme, ei tule tal lehte, olgu päring kui tahes ahvatlev.
Mis edasi
Lähiaja plaan on lihtne: laiendada teenuste nimekirja, kasvatada võrreldavate hindadega ettevõtete osakaalu ja vaadata, kuidas juba avaldatu indekseerub. Tulemustest kirjutan eraldi siis, kui need tekivad — numbritega, mitte tunnetusega.
Kui teil on vaja samasugust andmetel põhinevat sisuprojekti — kogumisest ja mudelist kuni veebiarenduse ja otsingumootori optimeerimiseni —, on see täpselt see töö, mida ma teen nii oma kui ka klientide projektidel. Vahe on ainult selles, et enda omades riskin kõigepealt oma ajaga.
