journalctl -u artemisa --full
Artemisa + Picasso LTSM
Teacher planning suite with contextual AI assistance, RAG, and prompt observability.
less consolidation time
LLM providers
Docling microservice
chatbot uptime
alejandro@codedbyjav.cc :~$ cat context.md
Why?
Teachers spent hours consolidating lesson plans, UDL evaluations, and TOEFL analysis across disconnected tools. There was no contextual intelligent assistance or traceability of AI responses. Academic coordination and teachers needed a single flow with reliable institutional data—not a generic chatbot.
alejandro@codedbyjav.cc :~$ grep -E "^\[ \]" objectives.md
Goals
- ○ RAG chatbot with indexed institutional documents.
- ○ Multi-provider LLM support without vendor lock-in.
- ○ UDL generation and TOEFL analysis in the same flow.
- ○ Prompt and cost observability with Langfuse.
- ○ Document extraction via Docling microservice.
alejandro@codedbyjav.cc :~$ ls adr/
Architecture decisions
pgvector + HNSW in PostgreSQL
alternatives: Pinecone, Weaviate, managed Chroma
why: Single operational datastore, embeddings alongside academic data, no extra vendor.
trade-off: Manual index tuning and initial vertical scaling.
Multi-provider AI SDK
alternatives: Gemini only, monolithic LangChain
why: Fallback between Gemini, Claude, OpenAI, and OpenRouter by cost and latency.
trade-off: Additional abstraction and per-provider testing.
Docling as FastAPI microservice
alternatives: Inline processing in Next.js, client-side OCR
why: Heavy PDFs and extraction pipelines isolated from the frontend.
trade-off: Operating an extra service with queues and MinIO storage.
Langfuse + OpenTelemetry
alternatives: Ad-hoc logs, no prompt traces
why: Audit AI responses and optimize costs per teacher.
trade-off: Initial instrumentation setup.
alejandro@codedbyjav.cc :~$ tree -L 2 services/
Architecture
alejandro@codedbyjav.cc :~$ npm ls --depth=0
Tech stack
alejandro@codedbyjav.cc :~$ tail -f results.log
Results
lessons learned
- Local RAG in Postgres reduces ops friction vs. managed vector DBs.
- Multi-provider is a lifeline when pricing or quotas change.
- Extraction microservices prevent blocking the web server thread.
Building something together?
Open to senior full-stack roles and selected freelance work. Reach me on LinkedIn — I read every message.