Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

A local-first AI triage desk: sorting a one-person trade's jobs with Gemma 3

Description and use

A one‑person trade loses work because enquiries arrive while they are busy. The author built a terminal front desk that runs a local Gemma 3 model via Ollama to triage messages, ask for missing details, and store jobs in SQLite, giving the owner full control and no data leakage.

Problem

A one‑person trade loses work because enquiries arrive while they are busy and nobody answers them. Using a metered, cloud‑hosted LLM to triage is costly, exposes customer data, and gives the vendor control over the model.

Outcome

The system processes a sample enquiry in a single command, asking for the missing address and desired time, then stores the job as pending. The owner can later approve it, after which the system sends a deterministic confirmation to the caller.

Workflow

  • 1. Caller types a message into the terminal.
  • 2. The terminal sends the message and a JSON schema to the local Gemma 3 model via Ollama.
  • 3. The model returns a JSON extraction (intent, required fields, etc.).
  • 4. Deterministic code validates the JSON and decides whether to ask for more info, hand off to a human, or confirm the job.
  • 5. If a field is missing, the code asks the caller for that single detail.
  • 6. Once all required fields are present, the code confirms the job and stores it in SQLite.
  • 7. The owner reviews the job list and approves or dismisses jobs via terminal commands.

Evidence

A one-person trade loses work for a dull reason: enquiries arrive while their hands are full, and nobody answers them.

Source

So I built the opposite: a front desk whose triage runs on an open-weight model you host yourself, and which lives in the terminal.

Source

Piping the lines in makes it reproducible in one command: printf ... | node src/cli.js

Source

The model asks for exactly one thing at a time, and the confirmation is our text, not the model's — it never confirms a time or names a price.

Source

  • Record date: 2026-10-13T10:56:03.991Z