Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Crowdsourcing platform for various tasks Code Climate


What is it?

We have a lot of tasks that can only be done manually. Those includes digitizing of scanned assets declarations, manual verification of results produced by different NLP software, stalking and so on. So, we decided to generalize those tasks a bit and build a platform with basic support for crowdsourcing using knowledge and chunks of code from the project. We don't use anything extraordinary: Flask, MongoDB, Bootstrap, jQuery etc (all trademarks are the property of their respective owners, don't forget that).

How it's built

Vulyk itself is a platform that can be stuffed with various plugins (check this two for example).

Vulyk providing basic facilities to manage tasks, users, has simple but effective system of groups and permissions, also can load tasks in format of json lines and export results. For admin purposes we have a nice (not really) CLI tool that gives admin an access to users management, tasks management, results management, stats, etc.

Vulyk is also doing dirty job to collect assets for plugin, to provide registration/login via social networks for end users and has leaderboard.

What for?

  • digitize assets declarations of ukrainian officials for Declarations project
  • improve the current state of Ukrainian NLP by creating a simple and robust solution for various NLP tasks that require human input.
  • process and manually verify existing results from PullEnti (by Konstantin Kuznetsov) and morphological analyzer (by Andriy Rysin, Mariana Romanyshyn, et al.).
  • build tagged corpora of different kinds using manually processed results.
  • for the sake of The Great Justice of course!

But, God, how?

We provide some kind of playground, where any interested (or procrastination-addicted) person could spend some time crunching different tasks. Site will show you, mr. Solver, some tasks of a given type, which you'll need to solve.

Leaderboard is already in place!

How could I participate?

You just need to contact me or @dchaplinsky via One day we'll find one brave heart who'll create a list of issues so the process will be simplified. But not now...

Running it locally

You'll need MongoDB, Python 3.5+ and virtualenv and with little bit of instructions you'll be able to run the Beast (with two real plugins)!

First of all, check out all required components:

mkdir vulyk
git clone
git clone
git clone

Then create virtual environment and install all three of them there in editable mode (unfortunately we don't have any of them released on PyPI yet)

mkdir sandbox
cd sandbox
virtualenv venv && source venv/bin/activate
pip install -e ../vulyk
pip install -e ../vulyk-declaration
pip install -e ../vulyk-tagging

Then let's set things up. Edit and add some stuff into it:

# This one only works to log in via http://localhost:5000

# This one works for both, http://localhost:5000 and

# This one only works to log in via http://localhost:5000

# This one only works to log in via http://localhost:5000

    'DB': 'vulyk',

    'vulyk_declaration': 'DeclarationTaskType',
    'vulyk_tagging': 'TaggingTaskType',

You'll need to register you localhost app in one of social networks (and fill corresponding credentials in!) to make it work locally.

Then you should be able to init the app using CLI, load some tasks and run it locally.

cp `which` .  # FUgly, I know!
python ./  init declaration_task tagging_task

That'll create default user group and give users of this group an access to two task types that we've installed before.


python ./ db load declaration_task --batch 01_declaration decl_tasks.json
python ./ db load tagging_task --batch 01_tagging tagging_tasks.json

And finally you should create and put some stuff into it:

from import app

if __name__ == '__main__':

Then open http://localhost:5000 and you are set!

Easy, isn't it?! Well, we'll smooth some rough edges soon, we promise.


Flask/Mongo application to provide intuitive web-interface for tasks distribution








No packages published