A 24/7 autonomous assistant that lives inside WhatsApp. It reads a message the way Isaac would type it — no commands, no menus — and turns it into a calendar entry, a task, a note, a live web search, or a status check on the servers running Creative Clicks Studios.
Every WhatsApp message Isaac sends passes through the same pipeline before JARVIS decides what to do with it.
Two tiers, so common phrasing never has to wait on the LLM.
Sub-millisecond pattern matching for everyday phrasing — "Got a shoot with Sarah Saturday 3pm", "Need to buy drumsticks tomorrow" — resolved without touching the model.
When Tier 1 returns general for a non-trivial message, the local Ollama model classifies it into one of the nine system intents before routing continues.
Resolves natural phrasing — "tuesday next week", "day after tomorrow", "July 31st" — into exact dates without UTC day-shift bugs.
Strips action words ("Add event", "Schedule"), date phrases, and time ranges from the raw message so the saved title stays clean.
JARVIS doesn't wait to be asked. Every calendar event is watched by a cron and escalates automatically as it approaches.
Puppeteer drives real Chromium to scrape DuckDuckGo organic results — bypassing bot walls — with fallbacks to the DDG Instant Answer API and Wikipedia. Ollama summarizes and returns clickable sources.
"show notes" returns a numbered index. "view note 1" or "note 3" pulls the full content of a single entry.
Scans incoming chats in the background to catch things like "Client Mark prefers PDF invoices" — saved to SQLite and mirrored to a human-readable MEMORY.md.
Pings the multi-server setup — Friday (production), Alpha (office), JARVIS (AI node) — and folds status into the morning digest.
| File | Role |
|---|---|
| main.js | Entrypoint — WhatsApp client, message listener, cron scheduler, morning digest |
| intents.js | Hybrid intent classifier (regex + Ollama fallback) |
| search.js | Puppeteer + DDG API + Wikipedia search module |
| db.js | SQLite access layer — events, tasks, notes, reminders |
| calendar.js | Google Calendar API integration |
| memory.js | Preference learning engine, MEMORY.md sync |
| ollama.js | Axios client for the local Ollama API |
| quotations.js | Quotation / invoice generation for Creative Clicks Studios |
| server_health.js | Tailscale-based server status checker |
| personal.db | SQLite store — events, tasks, notes, memories |
| docker-compose.yml | Deployment manifest — Ollama + JARVIS container |
| jarvisai.service | systemd unit for 24/7 background operation |