Scouter Demo

This is a demo for Scouter - a mobile version of “I spy with my little eye”.



How it Works

You can read the full spec doc, but the gist of it is:

  1. turn based game
  2. take a picture of something
  3. scan it using machine learning for clues
  4. another player takes a picture to guess based on clues
  5. get points for guessing right

Clues

Clues include:

  • dominant color of an image
  • where the image was taken and geocode information
  • what labels machine learning finds
  • what objects machine learning finds
  • what text machine learning finds
  • what landmarks machine learning finds
  • what rhymes with the dominant machine learning field

The basic clue is location and color.

Issues

Making mobile applications in my spare time does normally suit me as I get bored from doing it for a living.

One thing that became apparent is the need to have manual override of the clues gatherd about an image.

In the full version (not demo), there exist such functionality as well.

As usual, unless formally enforced, my test automation is lacking.

Getting Paid

The monetary incentive is in-app purchases of additional clues when guessing.

Manually overriding clues, might be a good purchasable add-on as well.

As well as unlocking limits on the amount of games you can play and specific game limits like amount of players and images.

Implementation

Once the app was spec’ed out, it took about 4 months to build to this point.

I rewrote in React-Native for a month, then abandoned with fatigue and boredom.

Frontend

The app itself is native android written in kotlin - which is a very nice language, much better than java. Some of the libraries include:

Backend

The push messaging component is written on the backend to coordinate when a players turn ends and begins.

It is written in GoLang with an API and a background scheduler task.

There is also a simple HTML frontend for creating ad-hoc messages and other admin tasks.

Going Forward

Frontend

Obviously an iOS and Web solution would be preferable to have as well.

I have attempted to rewrite in React-Native and Flutter already. Made some progress but this prototype is too far ahead.

Backend

The backend has to be secured and put into my infrastructure which still needs upgrading (the final 1% of version 2 is elusive).

Firebase is pretty awesome, but I worry about the cost of scaling.

If it were cheaper to scale myself, it would be nice to get my Garden DB mobile SDK syncing nicely over MQTT (maybe one day when I am 80). But for now the free tier is enough.

Testing

Testing the validity of the automatic clue engine will be a challenging task.

It would be nice to generate a customized machine learning model for the application.

Conclusion

Overall, not a bad app and use case.

I enjoyed it, learned a bunch and think it has potential.