Quota: sticking to the script

Nobody likes quota. They have the off-putting echo of a well-wishing community reluctantly leaving Apartheid behind. If researchers mention quota, it’s because you did not hit the targets. If a financial director mentions them, it’s to tell you how you went over and blew the budget. You do not like quota – and us, programmers, well, it was never our favourite part of the job.

But with askiafield 5.4, we have put that behind us and made quota sexy. We have rebuilt the quota interface and the quota distribution engine.  Upgrading an interface – although time consuming – is rarely a problem. Well, we made it look cool which was quite a bit of work.

Changing the entire quota engine is not something that one should approach lightly. We did it with extra care: we put together hundreds of unit tests (where we predict and verify the output of code) and integration tests (where a full automated run of CCA is monitored and the results analysed).

This refactoring had a few goals:

  • Simplify interface(s): quota definition and the quota monitoring could be done in the same window
  • Add functionality: multiple questions, numeric, grouping responses, remove all limitations on the size of the quota tree
  • Expose through an API: the quota can be defined and monitored from a web interface – or automated from an external system (like Platform One)
  • Clarify quota scripting

This article does not focus on the actual functionalities of the quota – they are documented here – but on the impact of scripting quota through routing.

Why script quota?

Scripts are not usually used for screen-out quotas. These are usually dealt automatically (by the dialler in CATI or by the automatic settings in quota). You want 500 males in region X – once you have them, the interview is simply terminated.

Typically you need script when you want have to take a decision about which concept(s) you want to test. You first ask which ads they have seen and you decide to randomly pick 2 of them and question about them.

Ideally you want to select the ones that are the least filled – the ones furthest away in counts or lowest compared to the target percentage. And you might have weird priorities to take into account (always test your client’s brand against another one, etc…).

The rules can be complicated but we have provided simple functions for this.

5.3: the unbearable weakness of strings

In 5.3, you had the possibility of querying the state of the quota by using IsQuotaFullFor, QuotaToDo, MaxQuotaToDo, and AvailableQuota.

It did the trick for a while but there were problems:

  • It was dependent on a string (e.g, QuotaDoTo(“Region:1; Product”)). It was easy to spell it wrong and only realise that you had misspelled a question near the end of fieldwork.
  • It assumed you knew your quota tree – if you had not nested the Product within the Region (or decided to relax the rules near the end), you would get the wrong result.
  • The returned result was only looking at one quota row at a time.
  • The target counts were not taken in account to prioritise your selection.

Quota in 5.4? Sorted!

Enter 5.4 – well 5.4.4 really. We have introduced new keywords: they are methods of questions instead of functions. In other words, you write something like Gender.AvailableQuota() instead.

  • AvailableQuota: returns an ordered list of responses for the quota which are still open. The ordering is done according to the count: the first element is the response where the highest number of interviews are to be found.
  • AvailableBalancedQuota: Same as AvailableQuota but the ordering is done by the difference between targets and observed.
  • QuotaList: Same as AvailableQuota but all responses are returned (even the one ones over quota).
  • BalancedQuotaList: Same as AvailableBalancedQuota but all responses are returned (even the ones over quota).

If you want to specify some additional information about the tree you can: its works like this: Product.AvailableQuota (Gender: 1, Region :3). This means no more spelling mistakes would get in the way as the compiler would pick on the fact that you specify an incorrect question.

Another thing: if the gender and the region are specified in the interview, you do not need to indicate them but you could get information about another region for instance.

But from now on, if you need to pick 2 products to test and regardless of the nightmare of a quota tree you may have defined, you should simply write:

Dim arrProductsToTest = Product.AvailableBalancedQuota()

Return {} + arrProductsToTest[1] +  arrProductsToTest[2]

Back compatibility – what is it good for?

You know we care about it. We really wanted it to make sure that scripted surveys would work as usual. But we wanted to ensure that the old weaknesses were gone. So all previous quota functions will work with the old string… but we also took the liberty of sorting the result for your convenience… and to check the whole quota tree in case a priority at top level interfered with one of the nested quota.

So we have back-compatibility but not quite: it’s simply better and more flexible – and when the old quota tree was failing, you will get the expected results. We hope you agree.

Quota categories

The algorithm to know if a quota target applies to a given interview is actually quite complicated but we are going to explain it as simply as we can… feel free to skip this (and trust us).

Let’s imagine we have a quota tree like:

Root TO DO
1 Male 50
2 Product A 40
3 Product B 0
4 Female 40
5 Product A 15
6 Region1 10
7 Region 2 5
8 Product B 15

 

Let’s look how we run the following Product.AvailableQuota (Gender: 2) call:

  1. We will look for the availability of the first modality (then second…) – so first we will look at Product A.
  2. We count the number of targets we need to attain: one for the question object and one for each of the questions passed as a parameter (Product.AvailableQuota (Gender: 2) would mean 2 targets, Product.AvailableQuota (Gender: 1, Region 2) would mean 3).
  3. We create a quota category where we set the Product (according to step 1) and we also set the parameters
  4. For all questions used in the quota, we look in the interview to see if we have data and we set it in the category.
  5. We are going to iterate through the tree – starting at the root
  6. When we hit a response for a question that’s defined in the quota category, we either explore the sub-tree or skip the branch. For example, for Product.AvailableQuota (Gender:2), when we arrive at row 2, we would skip the entire tree and continue at row 4
  7. We count the number of questions we have found which are part of our targets (as defined in step 1). If we are looking for product A in Product.AvailableQuota (Gender: 2) we would hit that target on row 5
  8. Once we have hit the target we add all the sub-quota rows. So for product A in Product.AvailableQuota (Gender: 2) we would select the following rows 5,6,7. All the quota rows? Not quite! If the region 1 was set in the interview, we would not add row 7
  9. Once the whole tree is scanned, if we have selected 0 rows, we remove one of the targets (like Gender or Region in the Step 2 example) and start again at Step 2
  10. We would go through all the selected rows, and we would return the To Do with the most constraining value (the maximum of the minimum To Do and the minimum of the maximum To Do). Yes you might have to re-read that last sentence.
  11. Do the next response (product B) and re-start at Step 1)

There is added complexity for groups… if a response is in a group and has no targets, we use the first parent group who has a target.

If a response does not have a target, we assume that the To Do value is 1.

That’s it folks!

Conclusion

We think that AvailableQuota and AvailableBalancedQuota should cover 99% of the scripting needs. We’d love to have your feedback on this of course. We might later introduce a quota object where you will be able to query the actual min and max target or the priority… let us know when you need that and how you think it should work!

Askiaface for Android in a material world

Askiaface for Android has just been updated to version 3.3.0 and this major update brings some long awaited features!

Our mobile face to face app for Android devices is now finally compliant with smartphones as well as tablets:

Askiaface for Android on Nexus 6P screenshot
Askiaface for Android on a Nexus 6P

The user interface has been completely redesigned based on Google’s Material design principles in order to provide a seamless experience with the modern Android environment:

Askiaface for Android on Nexus 5X screenshot
Askiaface for Android on a Nexus 5X

Of course, the application remains optimised for high density display tablets and integrates Askia’s new identity style guide:

Askiaface for Android on Nexus 7 screenshot
Askiaface for Android on a Nexus 7

This update will allow your interviewers to access all our mobile face to face features with less hassle in a completely decluttered interface!

We have also updated geolocation capture by using Android’s latest GPS API in order to provide you with more precise geolocation could your devices be on cellular or Wi-Fi!

Download or update Askiaface for Android from the Play Store now!

Enter the automation era!

It’s not new, Market Research is doing badly.

A few years back, to improve profitability, most major MR institutes have been sub-contracting Survey Programming and Data Processing to Eastern Europe or Asia. This has not been enough. The next step to increase productivity is automation. The successful launch of Zappi Store has made every one acutely aware of this.

Zappi Store uses Millward Brown or Brainjuicer’s methodology to run very formatted studies, entirely automated at unbeatable costs. They have a survey with a few customisable parameters – say the name of the brand, the logo and a list of competitors. With that, they purchase the sample and produce a PowerPoint presentation with all the key (automated) findings.  Who needs researchers and analysts anymore? Actually you only need them once – to design the methodology.

At Askia, we have always known that automation was key to improving performance. At our last user conference, we presented what clients did to automate our system… and our system was always very easy to integrate in a larger enterprise ecosystem because not all of our clients use our full range. Some just collect data, some just analyse data with Askia. So we always conceived our software like bricks in a very heterogeneous Market Research wall.

The cement to these bricks is import and export to open standards but also to produce and document APIs: Application Programming Interface – that is entry points for your own geeks to play with our toys. And if you do not have your own geeks, don’t despair: some independent geeks have decided to integrate our APIs so you can automate Askia tasks.

With the new version of AskiaField (its very sexy name is 5.4.2), we have pushed automation to a new level. You can entirely control AskiaField from a custom made application – standalone app or even a web application. Eventually this means that the AskiaField Supervisor will be a web page. But in the meantime, you can write a piece of software that creates a survey script in XML, uploads it to AskiaField, makes it live as a web survey, creates a list from your customers database, email them, cleans the data by removing speeders with AskiaTools, analyses the data and produces a report that you can email every morning to your stakeholders or provides them with a dashboard.
Automation is the future – you are going to need a few more geeks… oh and some air freshener!

Askiaface for iOS 3.2.0

Today, we released askiaface for iOS 3.2.0 on the App Store. This update includes the following new features:

  • Kiosque mode for iPad
  • Schedule daily survey data sync

Kiosque mode

Askiaface iOS Kiosque mode screenshot

This new feature allows you to setup an askiaface for iOS (for iPad only) questionnaire as a Kiosque survey. A Kiosque survey enables you to provide a self-interviewing environment with the following:

  • Loop interviews: as soon as the current interview is completed, a new one is automatically generated and displayed on the tablet.
  • Secured kiosque mode: users can only exit Kiosque mode after providing the per Askiafield server password.
  • Inactive kiosque interview management: if no activity is detected on an in-progress Kiosque interview for at least x minutes, the application will abandon that interview and generate a new one. Of course, you decide on a per server basis the duration of the timeout.

Askiaface iOS Kiosque mode screenshot

Disclaimer: Kiosque mode is currently offered as a freely accessible trial. Access to this feature will be subject to specific licensing.

Schedule daily sync

To accompany the above new Kiosque mode, we’ve added the possibility to schedule daily survey data syncing.

Askiaface for iOS Scheduled Sync screenshot

This will allow you to synchronise all your survey data without having to operate each Kiosque devices. Even though this feature is only available on devices on which at least one Kiosque survey has been setup, it will sync data (interviews as well as questionnaire updates) for all available surveys on the device.

Askiaface for iOS Scheduled Sync screenshot

Access the Schedule Daily sync in the app’s sidebar and set the time of day to trigger the synchronisation. You’ll of course be able to deactivate feature when you no longer need it by simply toggling the Daily Sync switch.

Miscellaneous

As usual, we have also fixed some issues:

  • Various fixes on issues with keyboard input in the Settings view.
  • Fixed a performance issue in the app views.

This update is already available via the App Store and will soon be available on your favourite Android devices!

Askiaface for iOS 3.1.1 released!

We are pleased to announce that we have just released an update to askiaface for iOS: version 3.1.1. This update includes the following improvements and fixes:

  • Updated Base SDK to iOS 9.3
  • Added Remove survey feature
  • Integrated UI for remove survey feature
  • Added specific warning when deleting a survey with / without interviews
  • Fix when resuming interview on a preliminary selection loops
  • Fix on response blocks that contain MS Word’s `…` special character

Delete survey

The main feature, Delete survey, allows you to remove an available survey from the list of questionnaires:

Remove survey in askiaface for iOS screenshot

If ever you remove a survey for which you still have complete and/or incomplete interviews that have not been synced back to the askiafield server, the iOS app will warn you and require you synchronise your data before removing the survey:

Remove survey warning in askiaface for iOS screenshot

Once all local interviews for that survey have been synced, you can delete the survey:

Remove survey confirmation in askiaface for iOS screenshot

Base SDK updated

We have updated the base SDK used to build askiaface for iOS to version 9.3 (the latest available) in order to benefit from various performance improvements and fixes. The application now supports devices running iOS 8+, iOS 7.x is no longer supported.

This update is available directly from the App Store so head there to get the update!

Askiaface for iOS updated to version 3.0.12

An update to askiaface for iOS is now available on the App Store. This minor update provides the following changes:

  • Fixes an issue with certain ADCs displaying incorrect characters when non-latin languages were used
  • Fixes an issue with resources not displayed in certain conditions (seems like we’ve finally got that one, sorry about it!)
  • Full for support version 5.3.5 scripts and keywords

We’ve also added some goodies in preparation for the next update; among which: resource uploads to Amazon Web Services and support for Askiaface Description, so stay tuned for that!

In the meantime, you can head to the App Store to download this update or pick it up directly on your devices!

AskiaField updated to 5.3.5

AskiaField has been refreshed! As you might know, the dev team is full-blast, hands in the engine, getting ready to release our next major AskiaField version 5.4.
Along with the early days of 5.4, our Belgian partners, MyForce, have recently made a big process audit and started implementing new software release systems, wishlist systems for new features, and large-scale automatic testing processes.
Before these marvelous times come to production, we wanted to introduce you to our latest and final iteration of AskiaField 5.3 : version 5.3.5, which comes packed with features that are announcing 5.4 and its awaited multi-mode surveys feature.

On the menu today

Partial multi-mode surveys, lightning-fast data exports, “pretty” URL invitations, stereo recording on agents, “Call now” feature improvement, new keywords, and more…

Partial multi-mode surveys

(Start in CAWI, finish in CATI)

5.3.5 announces the beginning of the true multi-mode era. We have added the possibility for the respondents to start a Web interview, and then allow telephony agents to call them back to help them complete the interview over the phone. It was also possible before 5.3.5, but required the use a couple of workarounds.
Now, it is as easy as can selecting one option in your sample list!

multi2

Here is the feature highlight article in our help center.

The opposite operation (starting an interview in CATI and resuming in CAWI) will be included in a later release. Nevertheless, we have started to add features such as the ability to send an encrypted invitation mailing directly from the CATI station  to ease the transition.

Lightning fast exports

Mehdi – our french database guru (among other titles) – has completely re-worked the data exports to QES files.
The benchmarks are heavily setting the new exports as winner, with an average exporting speed improvement of 1000% (yes, three zeros).
We had already made this available in the form of a command line tool but starting from 5.3.5 on, the power of this tool is now included in CCA’s default installation.
Also, in order to scale up, we have separated the tool in an external service.

Read the article on our help center.

Pretty (and encrypted) invitation links

Askiaweb, in its 5.3.5 iteration, now supports shortened, “prettified” survey links!
It used to look old, and it sounded wrong to include machine-related information in the invitation links, such as the usual /cgi-bin/askiaext.dll parameters.

So, you can now switch from:

http://askia.com/WebProd/cgi-bin/askiaext.dll?Action=StartSurvey&SurveyName=MySurvey


to:

http://askia.com/WebProd/Start/MySurvey

We also packed in encryption options, to hide parameters like &Name=Stephen that respondents could attempt to modify just for fun.
It will look like:

http://askia.com/WebProd/~O1p1PnpkpSI

Find out more about Shorter, encrypted URL invitations in the Help Center

More

And below, more cool features for you to read on!

New importation keywords.

Stereo recording on agents

“Call Now” feature improvement

Call history available from CATI

New Knowledge Base articles incoming!

We have been regularly updating Askia’s Help centre with various KB articles that cover our software offering. Here are some of these latest articles:

Askiadesign: about:blank error message

Microsoft recently updated Internet Explorer. This update may cause the below error message to be displayed in askiadesign:

about:blank error message in askiadesign

See the full article to fix this issue.

Askiafield: Data exports: Methods, Pros & Cons

This in-depth article covers all you need to know about the different data export methods along with the pros & cons for each method. From Supervisor’s Export to QES file to Analyse’s Data Inversion; this article also details SQL Synchronisation from AskiaTools as well as the powerful Fast Export method.

Read the full article for the detailed explanations.

 Askiaanalyse: Mean Summary Tables

This article goes through step by step examples and explanations of how to set up calculations in Analyse which will create a mean or sum summary table. There is also an introduction to script formatting and advanced sorting for such calculations.
This detailed article also provides downloadable example .QES files.

Access the KB article for more details.

Askiafield: Survey XML file is corrupt

Askiaface for iOS & Android make use of the XML version of the .QEX file; it sometimes occurs that certain characters (trailing spaces, &, >, <, …) will cause the survey’s XML definition to be invalid.

This article guides you through the necessary steps to fix a corrupt XML file: by identifying the cuplrit(s) and getting rid of them!

Check out the article for more details.

Askiafield: wildcards

This article describes how to use the Wildcard feature in Supervisor to find and update sample contacts based on regular expressions. Wildcards are a set of extremely useful tools that can power your workflow when searching / targeting specific contacts with large sample files.

Read the detailed article for more information.

Props to Seyf, Stephen & Jérome D for their contribution!