Mjesečne arhive: November 2009

Ideja za web projekt: usporedba cijena namirnica

Formula za uspješno poslovanje u vremenima recesije:

  • pomozite korisnicima (tvrtke ili krajnji korisnici) da uštede, ili
  • pomozite tvrtkama korisnicima da povećaju prodaju

Uzevši u obzir da je u Hrvatskoj recesija u punom zamahu (i ne zna se kad će joj biti kraj), ova formula je prilično dobar način da procjenite koliko vaša ideja ima ili nema smisla (osim ukoliko za realizaciju projekta treba više vremena nego što očekujete da će kriza trajati).

Jedna od ideja koja mi se u zadnje vrijeme vrti po glavi spada u prvu grupu, odnosno pomaganje korisnicma (i to specifično, krajnjim korisnicima iliti običnim ljudima) da prođu što jeftinije. Uzevši u obzir da su kod nas i inače nakon blagdanskog ludila svi u besparici tijekom siječnja i veljače, upravo sada je pravi trenutak za realizaciju ideje.

Korak prvi: ideja

carts

Ideja je jednostavna – nabava.net za namirnice. Cijene pojedinačnih namirnica obično ne odstupaju mnogo od dućana do dućana (ili od lanca do lanca). Kod veće kupovine (što je i uobičajeno, npr. za tjedan/mjesec dana) te razlike se međusobno poništavaju pa na kraju ispadne otprilike svejedno gdje radite kupovinu.

Ali, ukoliko na osnovu namirnica koje trebate kupiti (a koje su često unaprijed poznate i ne mijenjaju se mnogo od mjeseca u mjesec) izračunate u koji dućan vam je najisplativije ići, ili kupovinu raspodijelite tako da namirnice kupujete u 2-3 dućana na način da u svakom kupujete podskup koji je tamo najjeftiniji, ušteda može biti značajna.

Dakle ideja projekta je web stranica koja bi svojim korisnicima omogućila da:

  • usporede trenutne cijene namirnica u različitim dućanima i trgovačkim lancima (uzimajući u obzir razne akcijske prodaje)
  • naprave virtualnu košaricu na osnovu koje bi se izračunao optimalan raspored (i mjesto) kupovine

Korak drugi: realizacija

Osim izrade web servisa (koji su vam, ukoliko se bavite web razvojem, poznata stavka u cijeloj priči), bitan sastojak projekta je i prikupljanje ažurnih informacija o cijenama. Na sreću za projekt, tržište namirnica u Hrvatskoj je prilično okrupnjeno, tako da postoji nekoliko velikih nacionalnih lanaca koji pokrivaju velik dio tržišta. Zbog toga je relativno jednostavno početi s pokrivanjem manjeg broja lanaca, a opet odražavati realno stanje tržišta, pogotovo ako se uzme u obzir da manji “kvartovski” dućančići obično imaju nešto više cijene od velikih trgovačkih lanaca.

Za obavljanje istraživanja tržišta (čitaj: odlaska u dućan i popisivanja cijena) idealna radna snaga su studenti preko SC-a jer posao mogu obavljati bilo kad (kad ionako idu u dućan), nije vremenski zahtjevan i ne zahtjeva nikakve specijalne vještine. Okvirna računica troška:

  • dućan je dovoljno pokrivati na mjesečnoj (eventualno kasnije dvotjednoj, ako se ukaže potreba) bazi
  • za popisivanje cijena proizvoda (popis proizvoda koji se prate bi trebao biti standardiziran i pokrivati proizvode koje većina ljudi kupuje) i njihov kasniji unos u bazu treba cca. 2 sata
  • za minimiziranje pogreške (ili pokušaja podvale od strane lijenih radnika :) kod popisivanja/unosa moguće je nezavisno angažirati 2 radnika da nezavisno pokrivaju isti dućan
  • brutto cijena jednog sata za studenta koji dobije 25 kn/sat (prilično dobra plaća za lagan posao) je 30kn/h

Ukupno ispada da bi mjesečni trošak praćenja jednog dućana (ili svih dućana istog tipa istog trgovačkog lanca u jednom gradu) bilo 240 kn.

Potencijalni problem kod praćenja dućana je precizno vođenje računa o raznim akcijskim prodajama i sniženjima u pojedinim dućanima (od kad do kad traju, itd). Korisnost i točnog cijelog web servisa prilično ovisi o točnim informacijama o akcijama, jer su modifikacije cijena pri akciji po iznosima veće od samih razlika “osnovnih” cijena od dućana do dućana.

Pod pretpostavkom da veliki trgovački lanci mijenjaju cijene namirnica od regije do regije, očita startna pozicija za projekt bi bio Zagreb, čisto zbog velikog broja stanovnika. Ukoliko neki lanac ima unificirane cijene namirnica u cijeloj državi, još bolje, ispitivanjem na samo jednom mjestu može se utvrditi cijena svih dućana za cijelu zemlju.

Ukoliko se u Zagrebu ograničimo na 6 najvećih lanaca: Konzum, Billa, Interspar, Plodine, Getro, Mercator i uzmemo u obzir da Konzum ima 3 klase dućana (SuperKonzum, “mali” SuperKonzum i kvartovski Konzumovi dućani), a Billa i Mercator po 2 (po tome što sam vidio dosad), to je 10 različitih vrsta dućana. Mjesečno praćenje cijelog Zagreba po gornjoj računici koštalo bi ukupno 2400 kn.

Korak treći: korisnici

Za uspjeh projekta ključno je imati što više korisnika servisa. Pretpostavka je da bi se jednom zadovoljni korisnik (onaj koji je preko servisa uspio uštedjeti pri svojoj kupnji). Uštedu je teško procijeniti – iz osobnog iskustva prateći malo cijene, vjerujem da prosječna ušteda od 5% nije nerealna brojka. Dok 5% kao rezultat sve ove kemije možda ne zvuči puno, treba imati na umu da standardne akcije “skupljanja bonova” i “nagrađivanja vjednosti” kupaca obično u konačnici rezultiraju uštedom od 1%. Vjerujem da bi uz pravi pristup marketingu kupcima ovako nešto bilo dosta zanimljivo.

Za pridobijanje novog korisnika možemo iskoristiti činjenicu da su naši najbolji potencijalni korisnici upravo ljudi koji idu u kupovinu u dućan / trgovački centar. Reklamu bi zato bilo najbolje ciljati izravno na njih. Kako projekt već ionako predviđa radnike koji bi popisivali cijene proizvoda, ciljano reklamiranje možemo pokriti tako da radnici osim popisivanja cijene i distribuiraju letke postavljanjem na automobile ljudi koji su u dućanu što znači za to nemamo dodatnih troškova.

Brza pretraga po netu mi daje cijenu letka od 10 lp/kom. Uz procjenu da samo 5% ljudi koji su pogledali letak odu na web stranicu, popune podatke, pogledaju cijene i budu zainteresirani, cijena akvizicije jednog stalnog korisnika je 2 kn.

Korak četvrti: profit

Model zarade je oglašavanje. Na spomen oglašavanja kao načina zarade ljudima se opravdano diže kosa na glavi pa je red da se malo objasnim: oglašavanje trgovačkih lanaca na ovakvom servisu se poprilično razlikuje od oglašavanja na drugim portalima, televiziji, radiju i putem letaka po sandučićima. Naime, svi korisnici servisa zaista žele kupovati namirnice pa bi se prema tome oglasi servirali savršeno ciljanoj grupaciji potencijalnih korisnika. Ne znam procjeniti postotak učinkovitosti takvog oglašavanja, ali sam poprilično siguran da je bar za red veličine veći od bombardiranja oglasima na televiziji ili web portalima.

A kad se uzme u obzir velika količina novca koju trgovački lanci stvarno troše na oglašavanje, vjerujem da nije nerealno poretpostaviti da bi i oni bili zainteresirani da svojim dopru do korisnika web servisa. Pritom oglašavanje ne bi bilo samo klasičnim bannerima, nego i specijaliziranim targetiranjem korisnika na osnovu onog što su odabrali u svoju virtualnu košaricu. Zamislite: došli ste na stranicu provjeriti cijene mlijeka; osim te cijene. dobijate i reklamu o nekoj akcijskoj prodaji mlijeka u dućanu X. Usporedite to sa istom reklamom prije dnevnika ili za vrijeme omiljene serije.

Dodatna mogućnost monetizacije su affiliate linkovi za web dućane koje već imaju neki trgovački lanci, pogotovo ako je cijelu “virtualnu košaricu” moguće izravno primjeniti na neki web dućan i u 2-3 klika napraviti kupnju. No bar zasad, cijene namirnica u web dućanima su nešto više od cijena u normalnim dućanima pa sumnjam da bi (dovoljno) velik broj korisnika želio iskoristiti tu mogućnost.

Korak peti: širenje

Kao što sam već naveo, Zagreb bi vjerojatno bio najpogodniji izbor za početak bootstrap projekta. Ne računajući početnu investiciju u infrastrukturu, već unutar par mjeseci bi se projekt mogao sam financirati i omogućiti širenje na ostale velike gradove u Hrvatskoj. Ukoliko postoji veći početni kapital, veći centri u državi mogli bi se pokrivati od prvog dana, pogotovo ukoliko nema prevelikih razlika u cijeni namirnica u pojedinom dućanu u različitim regijama.

Naposlijetku, nakon pokrivanja cijele države, ne postoji razlog zašto se za daljnje širenje slična formula ne bi primjenila i na zemljama regije, kroz odvojene web servise.

Korak nulti: zašto se time već ne bavim?

Ukoliko je ova ideja tako sjajna kao što zvuči, dobro pitanje je zašto ja o tome pišem na svom blogu, a nisam već krenuo u njenu realizaciju? Vjerujem da cijela stvar ima potencijala i u nekom trenu sam ozbiljno razmišljao da se primim projekta, no zaključio sam da je ne bih mogao gurati usporedo sa stvarima koje se trenutno bavim i koje lijepo napreduju. Uostalom dobre ideje začinju se svakodnevno, ali kad bi stalno hvatali novu dobru ideju nikad ne bi realizirali niti jednu.

Zato sam, radije nego da pustim da ova trenutna ideja trune negdje u mračnom zakutku mog uma, odlučio dotičnu tretirati kao zanimljiv case-study i podijeliti s vama, ako ništa drugo onda zbog poticanja rasprave i razmišljanja, kako o samom projektu, tako i o evaluaciji potencijala nekog projekta, razradi poslovnog plana (npr. ovo sve navedeno bi se moglo smatrati ad-hoc poslovnim planom) i realnoj procjeni parametara kao što su cijena akvizicije korisnika ili mjesečni burn-rate. Dakle, volio bih čuti i vaše komentare zašto sve što sam napisao ima ili nema smisla :)

Twitter + PageRank = ?


Pred jedno godinu dana igrao sam se sa idejom skeniranja Twitter social grapha, tj mreže Twitter korisnika u kojoj svaki korisnik pokazuje na one twitteraše koje followa. Ideja je bila da se utjecaj pojedinog Twitteraša ne očituje u broju korisnika koji njega prate, nego je ovisan i o utjecajnosti samih followera.

Od PageRanka…

U načelu, to je i osnovna ideja Google PageRank algoritma koji se pokazao poprilično uspješnim pri rangiranju Web stranica. Ukratko, PageRank kaže da su dolazni linkovi sa kvalitetnih stranica dobar pokazatelj kvalitete određene stranice. Malo specifičnije objašnjenje algoritma za matematički nastrojene je: PageRank je propocionalan (logaritmu?) vjerojatnosti da će slučajni surfer besciljno surfajući Internetom završiti baš na stranici za koju računamo PageRank. U obzir se uzima i da kod svake stranice koju posjeti surfer možda odluči odustati i ručno upisati neki drugi URL.

Ukoliko stranice zamjenimo za twitteraše, a njihove pratitelje za dolazne linkove, možemo izravno primjeniti PageRank, u nadi da ćemo kao rezultat dobiti listu najutjecajnijih Twitter korisnika! Kako se Twitter korisnici mjere u desecima milijuna, za testiranje koristio sam ne Twitter nego domaći pandan Zrikku, koja je u to vrijeme imala 700njak korisnika.

Rezultati su bili totalno besmisleni, loši i poražavajući (za mene koji volim pametne algoritme); veliki broj “najutjecajnijih” imao je samo po par postova i bili su prilično neaktivni, naime radilo se većinom o korisnicima koji su se registrirali među prvima i koje je veliki broj drugih korisnika dodao na svoju listu. Čak i kada sam maknuo neaktivne korisnike, i dalje popis najutjecajniji nije imao previše veze sa stvarnošću…

Problem je u tome što činjenica da netko followa nekog drugog (više) ne govori apsolutno ništa o utjecajnosti te osobe na Twitteru. Slučajni twitteraš koji gleda tuđe timelineove neće krenuti po friends listi i gledati kog još ima zanimljivog (paaa….obično neće :)

…do ReTweetRanka


Puno je vjerojatnije da će slučajni korisnik doći do nekog određenog tweeta tako što će ga netko ReTweetati. Odnosno, RT-ovi su puno bolje mjerilo utjecajnosti nekog twitteraša. Kad RT-ate nečiji tweet, to radite zato što ga smatrate vrijednim prenošenja; upravo kao što i linkanje kod weba predstavlja izbor vrijedne lokacije za daljnje informiranje o nekoj temi. RT-anjem povećavate krug ljudi koji vide tweet pa upravo na taj način on dolazi do našeg slučajnog twitteraša.

Rangiranje možemo postaviti ovako: retweet rank je proporcionalan vjerojatnosti da će slučajni twitteraš u svojem friends timelineu vidjeti tweet koji ste vi, točno određeni korisnik, napisali. On to može vidjeti zato što izravno prati vas, ili zato što netko tko vas prati to RT-a. Svatko tko vas prati ima neki broj tweetova koje primjeti (recimo, unutar jednog dana) i broj RT-ova koje napravi u istom razdoblju. Njihov omjer određuje vjerojatnost retweetanja bilo kojeg jednog tweeta.

Vjerojatnost retweetanja pomnožimo sa vjerojatnošću da će slučajni surfer vidjeti baš taj retweet. Zbrojimo to sa vjerojatnošću da će vidjeti baš vaš tweet i to je to! Po potrebi dodati žlicu Vegete.

Malo matematike

p(x) = p(x)’ + (1 – p(x)’) * p(x)” — retweet rank
vjerojatnost da slučajni twitter vidi vaš tweet (preko nekog ili izravno):
p(x)’ = 1 – (1 – N(x) / Mt)^Kt
vjerojatnost da se točno vaš tweet nađe u bilo čijem timelineu: N(x) – broj vaših tweetova (u danu); Mt – ukupan broj svih tweetova u tom danu; Kt – broj tweetova koje u danu vidi prosječan korisnik
p(x)” = 1 – Umnožak (1 – Prt(x,y) * p(y))
vjerojatnost da budete retweetani; Prt(x,y) je vjerojatnost da korisnik Y retweeta korisnika X, a p(y) je vjerojatnost da se tweet korisnika Y nađe u timelineu slučajnog korisnika
Prt(x,y) = N(x) / K(y) * Rt(y) / K(y)
vjerojatnost da follower RT-a nekog od vaših tweetova: N(x) – broj vaših tweetova; K(y) – ukupan broj tweetova koje vidi vaš follower; Rt(y) – broj retweetova vašeg followera; napomena: u nekim slučajevima ovaj broj može biti > 1 (npr. vi pišete 5 tweetova dnevno, vaš follower vidi 1 tweet dnevno (razlika moguća ako se računaju prosjeci u nekom vremenskom razdoblju) i sve retweeta -> rezultat = 5); u tom slučaju potrebno je koristiti Prt(x,y) = 1 kako se ostatak formule ne bi raspao

Pri ovome se svi brojevi tweetova i retweetova mogu računati s nekom prosječnom vrijednošću, recimo u zadnjih mjesec dana. Na ovaj način se i osigurava da se računa samo nedavna aktivnost svih korisnika. S druge strane, interval ne smije biti premali (npr samo jedan dan) jer bi oscilacije bile prevelike i rezultati ne bi bili previše smisleni.

Sad dolazimo do kokoš ili jaje problema – da bi izračunali vaš tweet rank, treba vam tweet rank svih vaših followera; ali ako netko od followera prati vas, za računanje njegovog ranka trebat će vam podatak o vašem! Začudo, matematika je odavno ispred vas i ima rješenje za vaše probleme (a rješenje se zove vlastite vrijednosti matrice iliti eigenvalues). No, to rješenje u može biti prilično sporo ako se radi o sustavu s velikim brojem korisnika. Stoga se u praksi radije koriste iterativna verzija algoritma, u nekoliko rundi: na početku se za sve uzme neki prosječna vjerojatnost (tj Kt / Mt), a u svakoj iteraciji algoritma rezultat se poboljšava. Stvar radi brzo a u praksi je potrebno samo nekoliko rundi da bi se došlo do zadovoljavajućeg rezultata.

Liste

I tako nakon što sam ja razvio cijelu ovu teoriju, pojavile su se Twitter liste. Zasad su prevelika novost da bi se primjetilo tipične načine na koje će ih korisnici upotrebljavati. Čini mi se da trenutno služe ili za grupiranje ljudi koje korisnik prati (vlastite liste) ili (tuđe liste) kao feed timelineova koje korisnik u pravilu na prati već samo s vremena na vrijeme baci oko. Ako liste koristite za nešto treće i nije vam jasno kako ih još nisam skužio, ne libite se ostaviti komentar na postu :)

I za zaključak, što to sve znači? Ono što ste već i sami znali – što vas više retweetaju to ste utjecajniji :) Zanimljivo je da algoritam ne uzima u obzir koliko vi kvalitetne tweetove imate, nego samo koliko ste glasni (i revni RT-eri) vi i vaši followeri. Po mom osobnom iskustvu, to i je relativno dobro mjerilo utjecajnosti na Twitteru. Dakle, Tweetajte i budite ReTweetani! (I ReTweetajte ovaj blog post :)

Update: naknadnim Googlanjem naišao sam na članak koji polazi od sličnih pretpostavki i dolazi do sličnih zaključaka; obojica računamo da je retweetanje bitnije od samog followanja, no ponešto na drugačiji način računamo vjerojatnost retweetanja pa su nam i formule nešto drugačije. Ukoliko vas ova tematika zanima, svakako pročitajte i taj članak i komentare.