Solo tradespeople often lose revenue because they cannot answer enquiries while working. A new open-source tool called second-ring addresses this by running an AI triage desk directly on the owner’s machine using Gemma 3. The project, submitted for the Hacktoberfest Open-Source AI Challenge, rejects the standard model of metered cloud APIs in favor of a local-first architecture that keeps customer data private and costs at zero marginal cost.

The Architecture of Deterministic Trust

The core design principle separates probabilistic analysis from deterministic action. The local Gemma 3 model, running through Ollama, is strictly limited to classifying intent and extracting structured data like names and addresses. It is never allowed to confirm bookings or quote prices. All customer-facing replies are generated by deterministic code that validates the model's output against strict regex guardrails. If the model attempts to promise a time or price, the system discards the reply and substitutes a safe template, ensuring no hallucinations reach the customer.

Privacy and Cost as Primary Features

For a one-person business, the economics of hosted AI assistants are poor. Every message incurs a bill, and sensitive job detailsβ€”such as a client's home address and the nature of the repairβ€”leave the owner's control. second-ring eliminates these issues by hosting the model locally via Node.js and SQLite. The stack is deliberately thin, relying on Node's built-in modules and no external dependencies beyond the Ollama runtime. This ensures that the triage process is free at the margin and that no data crosses a network boundary owned by a third party.

Real-World Bugs and Model Behavior

Testing with Gemma 3 4B on a CPU-only box revealed critical integration challenges that stubs cannot simulate. One bug involved the model losing context after a job completion, causing follow-up messages to be filed as empty, nonexistent jobs. Another issue saw the model returning bare JSON objects instead of the required schema. The developer resolved these by enforcing JSON Schema validation in Ollama and managing conversation threads with a turn cap. These fixes highlight the fragility of integrating probabilistic models with systems that require absolute certainty in job tracking.

Key Takeaways

  • second-ring uses Gemma 3 locally to classify tradesperson enquiries, removing API costs and privacy risks.
  • The system enforces a strict boundary: the AI analyzes, but deterministic code acts and communicates with customers.
  • Built with Node.js, SQLite, and Ollama, the tool requires no server, port, or API keys, running as a single process.
  • Guardrails prevent the AI from quoting prices or confirming bookings, replacing unsafe outputs with templated responses.

The Bottom Line

second-ring proves that local-first AI can solve the specific, high-stakes problem of missed leads for solo tradespeople without the recurring costs or privacy leaks of cloud APIs. While the terminal-only interface limits immediate usability for non-technical owners, the core triage logic is robust, secure, and ready for integration into more accessible delivery layers like WhatsApp or SMS.