Introducing HIB (Human Intelligence Block)
Step 0 -- Configuring the HIB
Step 1 - Upload a task based on a record in the table/view
Step 1 - Upload a task based on a record in the table/view
Step 2 - Retrieve the completed worker tasks from Human Intelligence marketplace
Step 3 - Select the best response, and it will populate to the table! Use the convenient button to upload more tasks automatically!
Easily add custom templates for any type of data so it can be uploaded to Amazon's human intelligence marketplace
As a small startup and an indie game developer, we try to be scrappy with our resources. We launched a game and have users from every country around the world, which necessitates translations of our app in the most popular languages. However, we cannot hire individual translators to translate every time we have an update and we rely on third party contractors on human intelligence marketplaces. Amazon's Mechanical Turk (MTurk) is a marketplace for completion of virtual tasks that requires human intelligence. Mechanical Turk gives businesses access to a diverse, on-demand, scalable workforce and gives its Workers a selection of thousands of tasks to complete whenever it’s convenient for them. Prior to discovering Airtable, we used spreadsheets to keep track of our app strings which needed to be translated along with the language and the finalized translation. We also had to post a second task to have another person translate the translated strings so that we could double verify the translation. As you can imagine, the process was tedious, inefficient, slow and there was room for error as we would send the strings to both contractors separately and then have to add it back to the spreadsheet in the right columns.
What it does
With the Human Intelligence Remote Block, now we can have the translations automatically completed without any manual intervention on our part, leading to a more efficient and effective process with much reduced error. How this works:
- Enter the strings into individual columns in Airtable.
- Connect your AWS key to connect your Mechanical Turk account.
- Set the language of the string and the language you want to translate to.
- Upload a task to Mechanical Turk for the translation by setting a price per task.
- Create a description of your task that will be shown on Mechanical Turk under “Create a custom template”. In our case, we would ask for a translation from one language to another.
- Choose the string you want to translate.
- You can set the number of responses you’d like to receive by setting the max responses configuration.
- Upload to the Mechanical Turk marketplace.
- Workers on Mechanical Turk will see the task and can choose to accept it. If they accept it, they will enter the translated string.
- When you’re ready to load the responses into Airtable, you hit Sync Completed Tasks.
- You will see all the responses that were submitted and you would pick the one you want to load by hitting Select. It will load into the cell where you want the translated string to appear. In the process of building this block, we actually came across a second use case that we were able to use the block to help with immediately. Our company reaches out to a lot of other companies to try and establish partnerships. Based on a/b testing different scripts, we’ve been able to uncover that including something personal about a company, such as congratulations on a recent announcement or even a hobby that you share with the contact, in the initial email leads to much higher open and response rates. However, this is something that is tedious to do yet does not require specialized knowledge to accomplish so anyone can do it. By using the exact same block and steps above, the only change we had to make was to create a new template to define the task that we wanted a Worker from Mechanical Turk to complete. In this case, we wanted them to research the company indicated and include a recent news item about them. Though we had two use cases that were applicable to us, the way that the block is built, you can utilize it to get help on any task you need from Mechanical Turk and have it automatically added to Airtable without ever leaving Airtable. By making Airtable the central hub and source of truth to manage all your data tasks, you can be much more efficient at managing processes where multiple data sources need to be collected from different channels.
How we built it
We are using the custom blocks to integrate with the UI (thanks Airtable team for the awesome documentation). We do have a backend server that handles the creation of the tasks to be posted on to the human intelligence marketplace and to retrieve the tasks. We are also using the newly released Button feature to activate the block so it’s easy for a user to activate and upload a task easily.
Challenges we ran into
It was really about learning how the mechanism of read and updating the data and syncing with the Airtable UI. We would like to have the backend update the syncing automatically (currently the user has to click a button to sync the responses from the human intelligence marketplace).
What we learned
Before we started looking into Airtable, we thought Airtable was just another Google Sheets competitor. After we saw the use cases and the things that the blocks can do or enable, we were blown away by all the things you can build on top of Airtable. There’s only a few use cases listed on the main site, but the extensibility of the blocks and scripts is much better than Sheets. The team knew React before this, but this is a good exercise to refresh our memory! What’s next for Human Intelligence Block
- We would like to make this plugin not require a backend, so perhaps adding instructions to deploy to a serverless context would be beneficial if people find that useful.
- The marketplace has an option to only include certain workers from certain geographic regions. That would be a nice addition to add to the block configuration.
- For the translation specific use case, we eventually want to have it connect to the server to be able to upload the translated strings and to download the new strings into Airtable.