All work

// Case study 03 · Conversation design · Social impact

They had the skills.
Nobody gave them
the words.

TESSA is a Facebook Messenger career coach built by Accenture for Plan International Philippines. It translates the way a young Filipino jobseeker describes ordinary life into . I designed the conversational engine and the portable skills module at its centre.

Live Two exchanges on this page play. The questionnaire turning an ordinary sentence into a résumé skill — and, further down, the one field where the flow failed me three times running. Play the first one
My role
Conversation / CUI DesignerDialogue architecture · skills module
Client
Plan International PHBuilt via Accenture
Platform
Facebook MessengerNo install · usable without load
Evidence
Sept 2018 – Feb 2019My own test conversation
01 · The barrier

The barrier wasn't jobs.
It was vocabulary.

Every job platform opens with a version of the same question: What are your skills? For a young jobseeker navigating formal hiring for the first time, that question is unanswerable — not because the skills are missing, but because nobody ever taught them the nouns their skills are filed under. They have run a sari-sari store's stock. They have talked a price down at the palengke. They have been the one the family asks for advice. None of it arrives with a label attached.

So the résumé comes back blank, and the blankness gets read as having nothing to offer. The gap wasn't listings. It was somewhere to ask "what am I even qualified for?" without embarrassment.

Barrier 01
No coach, no map
Career counselling barely exists for this audience. Young jobseekers entering formal hiring navigate it blind, and usually get one attempt.
Barrier 02
Portals assume readiness
Forms, filters and CV uploads presume a user who already knows how hiring works — and quietly reject the ones who don't.
Barrier 03
A new app is a cost
Mobile data is expensive and trust is scarce. Asking this audience to install something new is asking them to leave.

In 2018, Messenger answered the third barrier almost by itself — already installed, already trusted, and often free-rated on Philippine mobile plans. The channel was the easy part. The interesting problem was what had to happen inside it.

02 · Before the first question

Trust comes before the first data request.

End to end, the conversation does four things in order. Each stage has to earn the next one.

1
Consent & literacy
Age gate, privacy terms, explicit consent — then a lesson in how to use the interface, with a practice turn.
2
Personal information
Name, birthdate, address, contact. Reviewed and saved section by section, with permission to skip.
3
Transferable skills
The questionnaire. Ordinary sentences in, a named skills profile out. The core of the product.
4
Résumé & leads
A real PDF, emailed and attached in chat, plus a job board that hands off honestly when it has nothing.

Everything in this section is stage one, because in 2018 it was the stage nobody was building. A career bot asks for your name, your birthdate, your address, your phone number and your email — from an audience with every reason to be careful about handing those over. So the flow spends its entire opening on permission and literacy, before a single résumé field.

01
An age gate, then actual consent
Confirm 18+. Read the Data Privacy Policy and Terms of Service, both linked. Tap I give consent — a deliberate, separate action. Then a receipt: "Salamat! Tatandaan ko yan." Consent is a state the system holds and admits to holding, not a checkbox it passes on the way somewhere.
02
The cost of using it, disclosed first
Before anything else: you can still use most of my features even with no load. Data cost is the barrier that silently ends the session, so it gets named up front. A tool that won't tell you what it costs to use is a trap.
03
Teaching the interface inside the interface
Quick-reply buttons and free typing are two different modes, and a first-time bot user has no way to know which one is being asked for. So the ✏️ writing cue gets explained — and then practised on a throwaway phrase, before any real data is at risk. In the user's own slang, not corporate Filipino.
04
An accuracy contract, and an honest warning
The user taps "I will be accurate" before data entry — a small pre-commitment that changes how the next ten answers get typed. Paired with a plain admission: a section left half-finished will not save. Disclosing your own system's limitation is cheaper than letting someone lose their work.
Stage 1 · Teaching the writing cue
Kailangan mo ba ng tulong sa paggamit ng app na ito? Pwede kong ipaliwanag sa 'yo.
Yes, show me how
Ang icon na ito ✏️ ay isang WRITING CUE. Kapag nakita mo ito, ibig sabihin may hinihingi ako sa iyo na kailangan mong i-type.
Try it
Sige nga, i-type mo ang "Pak ganern" ✏️
What to watch

The interface teaches itself before it asks for anything. The pencil is given a name, then a meaning, then a rehearsal — three turns spent on a convention most products assume you already know.

The practice rep runs on a nonsense phrase on purpose, so the first real typed answer is never also the first typed answer ever. A user who has only ever tapped buttons in Messenger gets to fail somewhere that costs nothing.

Recreated in this site's own system from my test conversation.

One line in the personal-information stage is the whole philosophy compressed: "Kung hindi mo alam kung kailan ka ipinanganak, pwede mo itong i-skip." If you don't know when you were born, you can skip this. Late birth registration is ordinary in the communities Plan International works in. A form would have marked that field required and lost the user at question three. The conversation treats the gap as normal and keeps going.

03 · The translation engine

The questionnaire never asks “What are your skills?”

It asks which of three ordinary sentences sounds most like you. The sentences are deliberately domestic and unglamorous — haggling at the market, being the one people come to for advice, keeping a list and actually following it. Nothing in them sounds like a résumé. That is the point: they're answerable.

Live Three ordinary sentences. Watch what the system files them as. Circumstance · not self-assessment
Stage 3 · One round of four
1. Laging nanghihingi ng advice ang mga kapamilya at kaibigan ko sa akin.
2. Hindi problema sa akin ang tumawad o humingi ng pinakamababang presyo sa palengke.
3. Kaya kong ibahagi ang aking istorya sa mga kaibigan ko at sa aking pamilya.
Sa tingin mo, alin sa mga sumusunod ang pinakamalapit na nag-dedescribe sa 'yo?
3
🗣 Communication Skills
Articulating · Persuading
What to watch

Nobody is asked to rate themselves. No scale, no "how would you describe your leadership style?" Every option is a circumstance the user can simply recognise or not.

That is the whole trick: self-assessment requires the exact vocabulary the user came here to get. Asking for it first would fail the people the product exists for.

The last bubble is the translation. Sharing a story with friends and family became Communication Skills · Articulating · Persuading — language they can put in front of an employer, derived from a life they already had.

Recreated in this site's own system. Production dialogue belongs to the client.

Four rounds of that, and the system performs the move the entire product exists for. It hands the answers back translated:

Interpersonal
Napapansin ko ang mga pangangailangan ng ibang tao at tinutulungan ko sila.
Responding to concerns · Assisting others
Organisational
Mahilig akong mag-ayos at mag-lista ng mga gagawin ko, at sinusunod ko ang mga ito.
Planning · Budgeting
Leadership
Parati akong naghahanap ng solusyon kung may hinaharap akong problema.
Initiating · Decision making
Communication
Kaya kong ibahagi ang aking istorya sa mga kaibigan ko at sa aking pamilya.
Articulating · Persuading

Left: what the user recognised about their own life. Right: what the résumé now says. The user never had to know the right-hand column existed.

A person who can't name their skills doesn't have fewer skills. They have fewer nouns.
The reframe the engine is built on

I built this as a portable module, not a script. The questionnaire is a container with three replaceable parts: a bank of circumstantial statements, a mapping table from statement to skill, and a synthesis step that assembles the result. Swap the statement bank and the same machine profiles a different population — a different region, a different language, a different sector. It was designed to be lifted out of TESSA and injected somewhere else, which is what happened to it.

01
Every input routes somewhere
The tree had to absorb real human answers — uncertain, misspelled, off-script — and still move forward. "I don't know" is a branch with a destination, not an error state. There is no turn in the flow where the correct system response is to stop.
02
Every explainer has an exit
"Next topic." "I think I got it." "I'm done." "Anything else?" Every piece of teaching in the flow can be ended by the user in a single tap. Explaining something to someone who already understands it is a way of insulting them, and this audience gets enough of that.
03
Nothing saves without being shown first
Each section ends with the collected data read back in full, then "Gusto mo bang i-save 'to?" — save, or start over. A linear chat has no back button, so review has to be built as a turn in the conversation or it doesn't exist at all.
04
Ungendered, all the way through
The programme's framing centred young women. The coaching doesn't. Gender is one neutral data field and never touches the register, the encouragement, or the skills mapping. I wrote it for the youth I talked to, not for the demographic on the brief — and a flow that coaches everyone identically is the one that can be handed to anyone.
04 · What it hands back

It ends with something you can take with you.

The conversation terminates in a real document — a résumé PDF, emailed and attached in the chat window, assembled from everything the user confirmed along the way. It is portable. It works on employers who have never heard of TESSA. A coaching product that hands you a file you can walk away with is refusing to be the destination, and that refusal is the right call for an audience whose data plan may not survive the week.

Stage 4 · The handoff
WORK EXPERIENCE
You have not added a work experience yet.
Ito ang impormasyong nakuha ko para sa iyong resume.
View Resume Document
Nag-email ako ng document ng resume mo at inattach ang kopya nito sa chat window. 📄 Hernandez.pdf
What to watch

The empty state is printed, not hidden. A user with no work history sees a gap they can go and fill — which is a task — rather than a section that silently vanished, which is a verdict.

The file survives the conversation. It is emailed and attached in the thread, so it survives the session, the data plan, and the app — and works with employers who have never heard of TESSA.

The job board is the other half.

It is also the part I'd defend hardest. At the time, the partnership meant to feed it real listings wasn't live yet. The flow says so, out loud.

Instead of an empty list or a fabricated one, a listing hands the user to a real government employment office with everything needed to actually arrive there: address, Facebook page, email, phone number. The dead end becomes a referral. And the content model carries one field most job boards still don't ship — the language the interview will be conducted in. In a country with dozens of them, that field is the difference between showing up and showing up prepared.

Designing the degraded state as a genuine handoff, rather than hiding it, is what keeps the whole thing honest. The bot doesn't pretend to have jobs it doesn't have.

Company
Reach out to PESO TaclobanPublic Employment Service Office
Address
Kanhuraw Hill City Hall, Tacloban City
Schedule
Contact PESO
Contact
Facebook page · email · mobileThree routes, in case two fail
Language
English / Waray-WarayThe field nobody else ships
Salary
Minimum wage applicable and negotiableStated, not "competitive"

Content model of a single job posting, reproduced from the shipped flow.

05 · What I'd change

The bot asked for the same phone number three times.

Here is the flow failing, in my own test conversation. The prompt wants an international format. My first two attempts didn't match it. The bot re-sent the identical message, twice, without ever saying what was wrong — and the repetition is the part a static screenshot can't convey.

Live The same prompt, three times. Nothing tells them what's wrong. Shipped · unedited
Stage 2 · Validation loop
I-type ang cellphone number mo. ✏️
⚠️ Pakigamit ang +63 bilang country code ng Philippines. Isulat gaya nito: +639279999999
09178889999
I-type ang cellphone number mo. ✏️
⚠️ Pakigamit ang +63 bilang country code ng Philippines. Isulat gaya nito: +639279999999
+6397••••••••
I-type ang cellphone number mo. ✏️
⚠️ Pakigamit ang +63 bilang country code ng Philippines. Isulat gaya nito: +639279999999
+6391••••••••
What to watch

The bot's message never changes. Three attempts, three identical replies. Nothing names what was wrong, so the user is left to reverse-engineer the rule from an example.

The repetition is the failure, and it is the part a screenshot cannot carry — one frame of this looks like a normal prompt. You have to watch it happen.

This is my own work, failing. The architecture was right and the error state was an afterthought, which is the usual order in which these things go wrong.

Shipped, unedited. Digits masked. Leaving this out would make the page a brochure.

The user is left to reverse-engineer the rule from the example. In a flow that spends its entire opening teaching people that the system is on their side — that "I don't know" is allowed, that a missing birthdate is fine — a silent rejection is the one moment it stops being on their side. The architecture was right and the failure state was an afterthought, which is the usual order in which these things go wrong.

01
Echo what was received
"I got 0917 888 9999" — so the user can see the system heard them correctly before being told they're wrong.
02
Name the rule that failed
Not the format again. The difference between what they typed and what's needed: "Palitan ang 0 sa simula ng +63."
03
Offer the fix as a tap
The system can already infer the correct string. Show it and let them confirm it. Validation is a conversational act, and this one was written as a form error.
06 · The public record

The outcome data isn't mine to publish.

Conversation volumes, beneficiary counts, employment results — that belongs to Plan International, and releasing it isn't a decision I get to make. So there are no numbers on this page. The public evidence I can offer is that I was invited to teach the work.

Feb 2019 · MiniFFC #53 · with DevCon "Developing Design-Led Virtual Agents for People" Accenture Liquid Studio, Taguig

One clarification, because the public record is inconsistent: TESSA was showcased during WEF Davos in January 2018, while still in pilot. It was not a session or a results announcement. Plan International Philippines has published one testimonial video from a user who found work. That is the full public record; I would rather state its limits than let it look larger.

The conversation shown here runs from September 2018 to February 2019. This is legacy work; the engine reasoning is what aged well.

The model generating the words matters less than the architecture deciding where the conversation is allowed to go.
Djoaniel Hernandez · System note № 02