How to Build a Likert Scale Vocational Interest Test (with Dislike-Like options)?

Hi everyone,

I’m looking for guidance on building a vocational interest test like the one shown in the attached images. It uses a Likert scale (from “Dislike” to “Like”) to measure user interest in various tasks (e.g., inspecting a roof, doing scientific experiments).

Link to the test if you want to test it yourself (No account or login needed)

How would you go about creating this? This certain test is dividing the questions in Categories like Humanitarian, Innovator, Caretaker, Pragmatist to later show the user the stats:


This test is around 20 questions. My first idea was to store the categories only as below and then do -2, -1.0, +1, +2 to calculate which category was highest and so on:

And then display all the questions in from an Optionsets:
Screenshot 2024-10-14 at 08.28.23

And then finally display it in a repeating group:
Screenshot 2024-10-14 at 08.29.30

Now the idea behind my structure was to store -2, -1, 0, +1, +2 on the repeating group to the correct category. The problem I noticed then was if I click on the first circle (-2) and then change my mind to click on circle 3 for example (0) then the number will still be -2 since -2 + 0 = -2. I have tried storing the numbers in a state as well but not sure how to store it the best way?

I think I’m overcomplicating things or doing something fundamentally wrong from the beginning with the database structure and everything?

I want to create more tests like different types but same circles as answers, so I would like it to be scalable as well.

Thankful for any help :pray:

You can just autobind the score to the response.

Thanks adam for your comment, How would i go about doing that? For example will not the same issue arise here:

No it won’t…

If the User selects -2 then -2 will be stored on the response.

If they change their mind and then select 0 then 0 will be stored on the response. (that’s how autowinding works).

Hmm okey but there are about 5+ questions that are in the category Build, then there are other category questions in-between for example:

Do you like building houses? (Building)
Dislike O O O ● O Like

Do you like thinking? (Thinking)
Dislike O O O ● O Like

Do you like construction? (building)
Dislike O ● O O O Like

in this example Do you like building houses? (Building) would be +1 to building then Do you like thinking? (Thinking) would be +1 to thinking and Do you like construction? (building) would be 2-1=1 if it makes sence?

Or am i misunderstanding it?

I’m not sure I understand what you’re saying, but it sounds like you’re misunderstanding how to do this…

You haven’t mentioned how you’re intending to analyse or process these scores, so I’ll ignore that for now…

But, presumably, you have a datatype to store the responses in (and if you don’t, then you need one - that’s how you do this), so you just store the response value (using autowinding in your case) on that datatype.

What you do with that data once you’ve got it (how you analyse it, display it, reference it, etc.) is up to you.

Ahaa now i think understand…

So I create a new thing like a Career Aptitude Test Awnser that contains

Question (Option set?), Answer (Number? -2,-1.0,1,2?), Category (Option set?)

And then Career Aptitude Test Awnser is stored in Career_Aptitude_Test?

And then later calculate it based on the Test Answers and the category?

Correct.

You need a datatype for your responses, which links a User, a Question, and a Response (and probably some other data, such as category).

1 Like

Thank you adam for pointing me in the right direction like always, i will test this out and if I’m still totally wrong i will ping you again :pray:

1 Like

Hi @adamhholmes now im stuck, on the circles i create a new thing Career Aptitude Test Awnser and i add all the necessary data. For that question

My question is where and how to i connect this to the official Career Aptitude Test Awnser that will be displayed and summarized later? Do i create the official Career Aptitude Test before the test starts like when they press “start” on a button and then add these to that one (not sure how to do that) or do i create it at the end and add them all to it (Not sure how to do that either)?

Just to clarify: The Career Aptitude Test is going to be the total test result and summary for that user that they can see

Or am i still on the wrong track?

EDIT: I just realised that im completely wrong… i create a new thing but if they change their mind a new thing is created again… I need some help on this part for sure

Given that you’re using a RG for this, I’d probably create all the Response items for a User at once, before they start the survey.

Either when they are invited/sign up, or on page load.

But, you could do it the way you are (i.e. creating a new item when the enter a response) - just make sure you don’t create a new item every time they click on an answer, otherwise you’ll get multiple responses for the same question (if a response already exists for the question just modify it, instead of creating a new one).

1 Like

Hmm okey, if you have time and dont mind could you share a how to do this in a editor? The problem im having is knowing how to make changes to the correct thing etc?

By not creating a new thing every time can i use some condition maybe that takes a look at the creation date?

I was also thinking if i can store it in states instead and then create them at the end if thats easier?

I tought i would help anyone else in the future to help you solve the issues i had. I spent around 8 hours trying to figure out how to do this until i just played around with the free template Cosmic Survey and Quiz Creator and from there i could add the things i needed for my tests. Big thanks to @Cosmic.Steve for this free template. It saved me so many hours of trying to understand the database structure… i also learned A LOT of efficient ways to do workflows from this, which i appreciate!

Extremely well-built FREE template that i can 100% recommend :slight_smile:

1 Like

Thank you @Orbit ! :pray:
I’m happy that you found it useful!

1 Like