1. Summary
The app has two assistants that answer from the same data in different ways. 'Acceso fácil', created to solve accessibility issues, is a router: a few buttons, one question at a time, that take anyone to the right answer or screen without navigating the app. The Asistente Inteligente (the chatbot) is a conversation: people write in their own words, Jev works out what they mean, and the app answers with its own figures.
Choose, don't type
- Input: buttons only, in three steps.
- Understanding: none needed, because every choice is exact.
- Runs: inside the page, with no network calls.
- Best for: screen-reader, keyboard and switch users, and anyone who finds the screens or typing hard.
Ask in your own words
- Input: free text in Spanish or English, plus suggestion buttons.
- Understanding: Jev (TypeSafe), with a basic keyword recogniser as a fallback.
- Runs: the question goes to Jev through
jev.php. The accounting data never leaves the page. - Best for: quick questions from people who know what they want but not where it is.
What they share
Both answer with the same function (window.AF.answer()), so they never give different figures. Neither one calculates its own totals or invents an answer. Both save through the same date rules as the screens, and both explain that the demo stores nothing: reloading brings back the example data.
2. Acceso fácil as a router
Linear navigation: one question at a time, step by step.
The problem it routes around
The app's screens follow a normal accounting layout: a menu, a year strip, quarter tabs, summary boxes, tables and charts. That works when you can see it all at once. With a screen reader, a magnifier or a keyboard it means tabbing through many controls before reaching the figure you want, and not knowing which page, year or quarter you are in. The research names these as the main barriers: horizontal navigation, dropdowns and hover menus, and pop-ups that trap or lose focus.
Acceso fácil doesn't try to fix every screen for every user. It offers a second, linear path to the same content.
How the route works
Every destination is three choices away. "Volver" undoes the last step and "Empezar de nuevo" goes back to step 1, so a wrong choice costs one press. The answer is shown first, with the period after it (the inverted pyramid). By default it uses the current quarter of the active year, or the annual summary for past years.
"Ver en la app" is what makes it a router rather than a separate app. Once the user knows what they want, it takes them into the real screen, already set to the right year and quarter.
Design principles behind it
- Less is more. One question on screen at a time. Earlier answers stay visible as a trail, so users can see where they are.
- Small blocks read in a line. Each step is a labelled group that a screen reader reads from top to bottom, with no layout to work out. The same blocks become a bottom panel on mobile.
- Mobile first. The research notes that many users with access needs prefer their phone because content comes gradually and touch is direct. Below 768 px the window becomes a bottom panel, and drag and resize are switched off.
- Buttons instead of typing. The tax vocabulary is fixed, so every question has a finite set of answers. A labelled button can't be misunderstood.
- Separate from the chat. Opening one assistant closes the other, so users never deal with two moving windows.
3. Who it serves
User groups and barriers from the research tables, checked against what the app does today.
| User group | Typical barriers | What Acceso fácil and the app do | Still open |
|---|---|---|---|
| Blind and screen-reader users JAWS, NVDA, VoiceOver |
|
|
|
| Low vision ZoomText, browser zoom, magnifiers |
|
|
|
| Physical and motor keyboard only, switch access, tremor, voice control (Dragon) |
|
|
|
| Dyslexia and cognitive load memory, concentration, timing |
|
|
|
| Older users |
|
|
|
| Autistic users |
|
|
|
| Deaf and hard of hearing |
|
|
|
| Non-native speakers |
|
|
|
4. WCAG 2.2 check
The criteria most relevant to Acceso fácil and the windows it opens. This is a design review, not a formal audit.
| Criterion | Level | Status | How |
|---|---|---|---|
| 1.3.1 Info and relationships | A | Met | Steps are labelled groups; answers have headings and lists |
| 1.4.3 Contrast (minimum) | AA | Met | Orange #CD4D08 is 4.51:1, and the text tones on grey were adjusted. Checked with axe on the mobile screens |
| 1.4.6 Contrast (enhanced) | AAA | Partial | The orange and some greys are below 7:1 |
| 1.4.4 Resize text · 1.4.10 Reflow | AA | Met | Zoom works and the layout becomes one column; the assistant becomes a bottom panel |
| 1.4.13 Content on hover or focus | AA | Met | Tooltips open on hover, tap or focus and close with Escape |
| 2.1.1 Keyboard · 2.1.2 No keyboard trap | A | Met | Everything works with the keyboard; full screen keeps focus inside, and Escape always gets out |
| 2.2.1 Timing adjustable | A | Met | No time limits anywhere |
| 2.4.3 Focus order · 2.4.7 Focus visible | A · AA | Met | Focus follows the route and goes back to the launch button; the outline is yellow with a black edge |
| 2.5.8 Target size (minimum) | AA | Met | Buttons are at least 36 px (24 px is required) |
| 2.5.5 Target size (enhanced) | AAA | Partial | 44 px would be needed |
| 3.1.2 Language of parts | AA | Partial | The window language changes, but Spanish terms inside English text aren't tagged |
| 3.2.3 Consistent navigation | AA | Met | The same three steps and the same controls everywhere |
| 3.3.1 Error identification · 3.3.3 Error suggestion | A · AA | Met | Inline errors linked with aria-describedby and aria-invalid; dates corrected and explained |
| 3.3.4 Error prevention | AA | Met | A summary before saving in the chat flows; undo for "cobrada" and for deletions |
| 4.1.3 Status messages | AA | Met | Polite live regions and role="status" confirmations |
5. Acceso fácil: open gaps
- Readability of the options. 12 px, upper case and monospaced is part of the app's look, but it's the hardest combination for dyslexic and low-vision users. Inside Acceso fácil, sentence case at 16 px in the sans font would help most.
- Mixed languages. In English, wrap the Spanish terms in
<span lang="es">so screen readers pronounce them in Spanish. The research flags mixed-language reading as a common weakness. - Personal settings. A small "Ver" menu with larger text, high contrast (AAA) and a calm palette would cover the low-vision and autistic needs, which can conflict, without forcing one look on everyone.
- Target size. 44 px buttons inside the assistant would reach AAA at little cost.
- Read aloud. An optional "Escuchar" button on long answers and definitions would help dyslexic and older users who don't use a screen reader.
- Save and come back. The research recommends letting people save a form and return to it. The demo is a sandbox by design, so this belongs to the real product.
- Quarter filing. New invoices and expenses always go into the quarter of their date. Filing one in a later quarter is only possible from the screens.
6. Asistente Inteligente: scope
A conversation about this app's data. It doesn't give general advice or invent answers.
What it can do
| Group | Requests (46 in total) |
|---|---|
| Figures | Key figures, net salary for any month, month by month, expense distribution, invoicing, table totals, invoice list, expenses (by IRPF category or by % IVA), IVA, IRPF, profit for a month, quarter or year, next month's salary forecast |
| Entering data | A new invoice or expense in a form inside the chat; marking an invoice as paid; salary clients; IVA or IRPF paid |
| Definitions | 19 tax terms: the 18 of Acceso fácil plus "beneficio" |
| Conversation | Greeting, thanks, compliment, complaint, goodbye, help, and "outside the app", which politely explains what it can do |
How a question is answered
Below a confidence of 0.45 the assistant doesn't guess: it asks "¿Te refieres a…?" with the two or three most likely options as buttons. Every answer ends with "Entendido como: …", which shows the request, the period, the engine and the confidence (for example "Salario neto · Octubre 2026 · Jev 99 %"), so the user can see how they were understood.
Accessibility of the chat
- Messages are announced through a polite live region; everything works with the keyboard.
- Forms in the chat have visible labels, inline errors and focus management, and Cancelar and Guardar are always visible.
- Typing is optional for common tasks: example questions, suggestions and "¿Te refieres a…?" are all buttons.
- Small typos are tolerated (swapped, missing or wrong letters), which helps dyslexic users and anyone typing on a phone.
- Free text is still harder for some people than choosing. That is why Acceso fácil exists: the chat complements it and doesn't replace it.
7. What Jev adds
Without Jev: keyword recognition
Without Jev, the chat recognises questions by keywords. It works when people use the app's own words ("IVA", "facturas pendientes", "salario"). It fails when they say the same thing in their own way. These are real answers from the keyword recogniser in the current demo:
| Question | Understood as | Should be |
|---|---|---|
| ¿Cuánto le tengo que dar a Hacienda este trimestre? | outside the app | IVA / IRPF to pay |
| ¿Cuánto me queda limpio este mes? | outside the app | Profit or net salary |
| How much do I owe the tax office? | outside the app | IVA / IRPF to pay |
| He comprado un portátil, ¿cómo lo apunto? | Facturación | New expense |
| ¿Quién no me ha pagado todavía? | Mark as paid | Key figures (pending invoices) |
| ¿Me debe dinero algún cliente? | Key figures ✓ | Key figures (pending invoices) |
The last one is right only because its words happen to match the keyword list. The other five need someone to understand what is being asked, not just spot the words.
With Jev
- Meaning, not keywords. Jev chooses between the 46 descriptions in
jev-intents.json, so "darle a Hacienda" can reach the tax requests without that phrase being listed anywhere. - An honest confidence score. It tells the app how sure it is. That is what makes "¿Te refieres a…?" possible instead of a confident wrong answer.
- Two languages from one list. Spanish and English questions are matched against the same descriptions.
- Easier to grow. Adding a request means adding one line to
jev-intents.jsonand the answer in the app. There are no keyword lists to maintain.
The six questions in the table above are a good set to try on the live demo, to see where Jev gets them right.
What Jev deliberately doesn't do
- It doesn't see the data. Only the typed question is sent; no figure ever leaves the page.
- It doesn't calculate or write the answers. Every number and sentence comes from the app's code, so it can't invent an amount or a tax rule.
- It doesn't read periods. "Este mes", "el 2T" and "el mismo periodo el año pasado" are worked out by the app, which also remembers the previous question for follow-ups.
Jev decides what is being asked; the app decides for which period and what the answer is.
8. Limits of the Asistente Inteligente
| Area | Limit | What the user sees |
|---|---|---|
| Connection | Needs jev.php (PHP with cURL) and a TypeSafe key on the server. Answers wait at most 4 seconds | "Comprensión: reconocimiento local · Jev no conectado", and keyword recognition takes over |
| Usage | 20 questions per visitor every 24 hours, up to 300 characters each. Every question is one paid call to TypeSafe | "límite de Jev de esta demo alcanzado", and keyword recognition takes over |
| One request per message | "IVA e IRPF del 3T" contains two | "¿Te refieres a…?" IVA or IRPF |
| Scope | Only this app's data and its tax terms. No legal or tax advice ("¿puedo desgravarme el coche?") | A polite explanation and example questions |
| Follow-ups | Short questions (three words or fewer, or starting with "y…") are treated as follow-ups and keep the previous year, even when the topic changes | "Gastos del 3T" after a question about 2025 answers for 2025 |
| Languages | Spanish and English only | Other languages usually fall into "outside the app" |
| Memory | Only the open conversation; nothing is stored | Reloading starts empty |
| Without Jev | app_DEMO_sin_jev.html makes no network calls and relies only on keyword recognition | Works for questions in the app's own words (Section 7) |
9. Next steps
Acceso fácil
- P1Tag the Spanish terms in English text with
lang="es". - P1Show option buttons in sentence case at 16 px, at least 44 px tall.
- P2Add a "Ver" menu: larger text, high contrast (AAA), calm palette.
- P3Add an optional "Escuchar" button for long answers and definitions.
Asistente Inteligente
- P1Keep the year of a short follow-up only when the topic stays the same.
- P1Try the questions in Section 7 on the live demo and improve the descriptions in
jev-intents.jsonwhere Jev misses. - P2Answer two requests in one message ("IVA e IRPF del 3T") by showing both answers.
- P3Voice input through the browser's dictation, with the text shown before sending (captions for any future audio).