cracksmity.dev
Español
L3 · Mirror Terminus Heritage station

PsicolocosBot

An emotional support bot, my first time building with AI, and the first serious question: what do you give it so it does no harm?

OPENED
NOV 2025
COURSE
Foundations of AI
SEMESTER
4th
SOURCE
Private
DOMAIN
psicolocos.lat (retired)
The bot's channel-style chat interface. Someone writes that they have three exams and no time; the bot validates, sums up and suggests a short to-do list.
A real conversation, in 2026, with the 2025 code: it validates, sums up and offers a single resource.

ROUTE · L3 Mirror · 3 stations

  1. YOU ARE HERE PsicolocosBot
  2. MAR 2026 · Heritage station Sisyphus
  3. JUL 2026 · In service Speculum

Why it exists

A project for Foundations of Artificial Intelligence, in my fourth semester: an emotional support bot. The subject hit close to home, and that changed how I built it.

Before writing any code I was already thinking about limits: how to keep it from hallucinating, what to do if someone writes that they don't want to live, what information to feed it. In mental health there's no room to improvise.

I ended up building it alone, and it was my first time building with AI, before Cursor and agents: I pasted my .py file into ChatGPT over and over, and the models back then made things up.

I made it during a low point. My team chose to build a psychological support bot and, with some irony, I was the one who needed it most.

I ended up building it alone, barely knowing how to code, pasting my file into ChatGPT again and again. My friends tried it; it was more of a technical curiosity than anything else, and we got an 8.

But it left me with a question that hasn't gone away: if a machine is going to talk to someone who's having a hard time, what do you give it so it does no harm? Everything further down this line comes from that question.

What it does

crisis first

A filter before anything else

If a message shows signs of risk, the bot doesn't improvise: it answers with a fixed message and the helplines for Mexico and Jalisco.

17 intents

Verified answers

Rasa recognizes what comes up again and again (greetings, contacts, what the bot is) and replies with handwritten text. The model only steps in when it's needed.

1 resource per turn

Short, clear rules

It validates, sums up what it understood, and offers a single exercise: 4-4-6 breathing, 5-4-3-2-1 grounding, or a short to-do list. It never diagnoses.

The bot answers a hopeless message with the crisis message: Línea de la Vida 800 911 2000, LOCATEL and Jalisco's 075.
The second barrier: the phrase wasn't on the risk list, but the model's rules caught it and it answered with the fixed crisis message.

How it's built

10 commits · 3 layers before the model

01 · InterfaceHTML + CSS + JSNeumorphic chat and mood log.
02 · FilterRisk detectorOn a crisis, a fixed message and helplines.
03 · IntentsRasa NLUTrimmed down to fit in 2 GB of RAM.
04 · ModelGPT-4o-miniOnly what Rasa doesn't cover, under strict rules.
  • guardrails
  • Rasa NLU
  • OpenAI API
  • FastAPI
  • SQLite
  • Docker Compose
  • nginx

Logbook

  1. NOV 2025First version: a FastAPI backend, the interface, and replies through the OpenAI API.
  2. NOV 2025Version 3: Rasa comes back as an intent classifier, all in Docker Compose.
  3. NOV 2025An easter egg with thank-yous, hidden in the interface.
  4. NOV 2025Live at psicolocos.lat, with Docker and nginx on a VPS. It's off now: I stopped paying for that server and, with Rasa, it was too heavy to move to the new one.

What I learned

  • AI deals with serious things. Guardrails get designed before features, not at the end.
  • You build with what you have. Full Rasa didn't fit on a 2 GB server: I trimmed it as far as it would go and left the model only what it needed to handle.
  • It was my first time building with AI. By hand, copying and pasting, but I learned I could make things I didn't know how to make before.
  • It was the first thing I ever put on the internet: a domain, a VPS, Docker and nginx. What I learned there is the foundation of the server this site lives on today.