Home » How to encourage honest user behavior in UI

How to encourage honest user behavior in UI


This is a constrained behavioral design problem


  • It’s similar, but not identical to, a tragedy of the commons problem where participants are able to use and potentially exhause a common resource (in this case, free disposal for garden waste).

  • This is not a problem a UX can solve without broader systemic design, but UX can make a difference.

  • You are constrained by laws, business rules, and resources so typical solutions like inspecting each car may not be available to you.

  • If you really care about this problem and want to do some research, it may help to read about typical approaches for dealing with commons problems. Then you can brainstorm specifically about each approach. I will try to do this in the answer here.

  • In short, these are the typical approaches (non-exclusive):

    1. Penalties
    2. Incentives
    3. Constraints
    4. Cooperation

Design approaches

1. Penalties

  • These include approaches like inspecting and fining cars in violation. This can also be automated…for example you are already registering payment cards so you can track usage by payment card and issue an inspection warning if the same card is used repeatedly for many “garden waste” disposals.

2. Incentives

  • These approaches attempt to encourage the correct behavior by using implicit or explicit incentives.
  • For example, an explicit incentive might be to print a lottery number every time users pay for disposal. Users are automatically entered into a lottery for some reward. This may provide extra incentive for users to pay, and the system might “pay for itself” because a small increase in the number of paying users can cover the cost of the reward. Other approaches might be to print a coupon for users to download free music, etc.
  • An implicit incentive might be something like moral suasion. This is close to your desire to promote more “honest” behavior through stimulating the civic and moral instincts with users.
  • Implicit incentive approaches might include:

    • Use pictures instead of text with buttons. This makes the content more relatable to users, so it can encourage honesty because it’s easier to lie when clicking a button with just text than when clicking a button with a picture of garden waste that clearly looks nothing like what you are carrying.

    use picture buttons

    • Communicate the benefits of making the right selection. e.g.
    • Your payments help Norway recycle 99% of its waste every year (civic pride)
    • We operate on a trust code because we believe in our citizens (moral obligation)
    • Your payments help us turn waste into clean, renewable energy and resources (environmental stewardship)
    • Your payments help eliminate landfill and preserve the beauty of Norway (national pride)

3. Constraints

  • These approaches involve erecting barriers to dissuade bad behavior or guide users towards good behavior.
  • Examples include:

    • Confirmation dialog for free disposal. e.g. if user selects garden waste, a confirmation dialog with a picture of garden waste pops up with a message (e.g. “Please confirm that your trash is at least 50% garden waste”). This is deliberate UX friction introduced in order to provide the user a second chance to reconsider lying.
    • Placing the garden waste button last. This can help encourage users to read the other options before they see the garden waste options.
    • Diminishing the indication of what is paid versus free. This helps focus user attention correctly on the content of the waste rather than the price. In some similar interfaces, companies have even controversially eliminated the price altogether until the next page.

    enter image description here

4. Cooperation

  • This approach promotes cooperation between users themselves and/or between users and the vendor.
  • Some examples might be:
    • Place the garden waste bin in a highly visible location where other users in the facility will be able to see what is being dumped, so there is better cooperative transparency and accountability. A Garden waste only sign may help.
    • When the user makes a selection in the UX, flash it prominently on a screen so the car(s) behind the user can also see the content. Knowing that other users are aware of what you’ve declared can help guide behavior. I don’t personally like this option, but am including it because you may be able to brainstorm less drastic variants on this behavioral pattern.
    • Communicate the cooperation between your facility and the user. For example, you may want to humanize the team at the facility, have them stop by to say hi to users, etc. Users are less likely to lie when they feel they have a relationship with the facility.

Some of these suggestions are UX related, and some are more general.
My goal here is not only to provide some specific UX suggestions for you, but also to provide a framework and behavioral themes you can use to brainstorm more specific UX solutions tailored for your facility, since you know the legal, resource, and business constraints far better than any of us.

Good luck, I’m a huge fan of your country’s approach to waste.

The point with these kinds of things, where you rely on customer honesty, is twofold. First to make the honest route easy. Second to make the easiest route as honest as possible.

I would radically change the process and divide it in to two steps.

First step/screen

Are you delivering:

☑ Chemicals . . . . . . . . ☑ Construction waste

☐ (Scrap) Metal . . . . . . ☑ Garden materials

Last step/screen

Show them a simple bar chart:enter image description here

which by default shows an even spread of delivered. This could use different algorithms;

  • simplest – divide by payment categories (my example)
  • medium complex – divide by type of waste (in this case it’d be 2,3,2 so 29%, 42%,
  • most complex – also take in to account how much of a type usually
    gets brought (batteries = little, leaves = lots) you could base this
    on average statistics from

And then show either categories ticked and have users specify what types of waste they have, or (like in the example) just have an organized list of all types and have every type of each category ticked and users can untick them.

At any rate, users can then modify this to what they actually deliver. They still CAN cheat by saying they´re dropping 95% leaves, but it adds a physical and a mental hurdle. If they’re honest and modify, all the better. If they’re lazy, you should still get (on average over all visitors) get a decent balance of what has been delivered.

This is just a rough sketch, of course, and there are a bunch of other varieties you can try, too. For example, first choose paid things + [none of these], then free stuff, so they’re less inclined to say just leaves when they have both leaves and paint. Or you could have the first page just be an organized list on which the user ticks all the items they have and then the system sorts that into categories and uses ‘medium complex’ algorithm.

I’ve gone back and forth in my mind on which is better; ask categories and then specialize (more open to abuse?) or ask types and then categorize (might overlook something and can be confusing), but the rough concept is this:
– obfuscate difference between paid/free items
– make dishonesty cost more effort than average
– get the most ‘accuracy’ in the least possible interaction.

Could a video camera feed of the car be included in the UI? This may encourage users to think that they are being watched, even if no footage is actually kept and inspected.

Related Solutions

Extract file from docker image?

You can extract files from an image with the following commands: docker create $image # returns container ID docker cp $container_id:$source_path $destination_path docker rm $container_id According to the docker create documentation, this doesn't run the...

Transfer files using scp: permission denied

Your commands are trying to put the new Document to the root (/) of your machine. What you want to do is to transfer them to your home directory (since you have no permissions to write to /). If path to your home is something like /home/erez try the following:...

What’s the purpose of DH Parameters?

What exactly is the purpose of these DH Parameters? These parameters define how OpenSSL performs the Diffie-Hellman (DH) key-exchange. As you stated correctly they include a field prime p and a generator g. The purpose of the availability to customize these...

How to rsync multiple source folders

You can pass multiple source arguments. rsync -a /etc/fstab /home/user/download bkp This creates bkp/fstab and bkp/download, like the separate commands you gave. It may be desirable to preserve the source structure instead. To do this, use / as the source and...

Benefits of Structured Logging vs basic logging

There are two fundamental advances with the structured approach that can't be emulated using text logs without (sometimes extreme levels of) additional effort. Event Types When you write two events with log4net like: log.Debug("Disk quota {0} exceeded by user...

Interfaces vs Types in TypeScript

2019 Update The current answers and the official documentation are outdated. And for those new to TypeScript, the terminology used isn't clear without examples. Below is a list of up-to-date differences. 1. Objects / Functions Both can be used to describe the...

Get total as you type with added column (append) using jQuery

One issue if that the newly-added column id's are missing the id number. If you look at the id, it only shows "price-", when it should probably be "price-2-1", since the original ones are "price-1", and the original ones should probably be something like...

Determining if a file is a hard link or symbolic link?

Jim's answer explains how to test for a symlink: by using test's -L test. But testing for a "hard link" is, well, strictly speaking not what you want. Hard links work because of how Unix handles files: each file is represented by a single inode. Then a single...

How to restrict a Google search to results of a specific language?

You can do that using the advanced search options: http://www.googleguide.com/sharpening_queries.html I also found this, which might work for you: http://www.searchenginejournal.com/how-to-see-google-search-results-for-other-locations/25203/ Just wanted to add...

Random map generation

Among the many other related questions on the site, there's an often linked article for map generation: Polygonal Map Generation for Games you can glean some good strategies from that article, but it can't really be used as is. While not a tutorial, there's an...

How to prettyprint a JSON file?

The json module already implements some basic pretty printing in the dump and dumps functions, with the indent parameter that specifies how many spaces to indent by: >>> import json >>> >>> your_json = '["foo", {"bar":["baz", null,...

How can I avoid the battery charging when connected via USB?

I have an Android 4.0.3 phone without root access so can't test any of this but let me point you to /sys/class/power_supply/battery/ which gives some info/control over charging issues. In particular there is charging_enabled which gives the current state (0 not...

How to transform given dataset in python? [closed]

From your expected result, it appears that each "group" is based on contiguous id values. For this, you can use the compare-cumsum-groupby pattern, and then use agg to get the min and max values. # Sample data. df = pd.DataFrame( {'id': [1, 2, 2, 2, 2, 2, 1, 1,...

Output of the following C++ Program [closed]

It works exactly like this non-recursive translation: int func_0() { return 2; } int func_1() { return 3; } int func_2() { return func_1() + func_0(); } // Returns 3 + 2 = 5 int func_3() { return func_2() + func_1(); } // Returns 5 + 3 = 8 int func_4() { return...

Making a circle out of . (periods) [closed]

Here's the maths and even an example program in C: http://pixwiki.bafsoft.com/mags/5/articles/circle/sincos.htm (link no longer exists). And position: absolute, left and top will let you draw: http://www.w3.org/TR/CSS2/visuren.html#choose-position Any further...

Should I use a code converter (Python to C++)?

Generally it's an awful way to write code, and does not guarantee that it will be any faster. Things which are simple and fast in one language can be complex and slow in another. You're better off either learning how to write fast Python code or learning C++...

tkinter: cannot concatenate ‘str’ and ‘float’ objects

This one line is more than enough to cause the problem: text="რეგულარი >> "+2.23+ 'GEL' 2.23 is a floating-point value; 'GEL' is a string. What does it mean to add an arithmetic value and a string of letters? If you want the string label 'რეგულარი...