Shane Bogue Projects

Krasiva AI

A private, on-premises assistant for CRM questions and job paperwork

A letter K logo mark, a variant of the Krasiva K.
The Krasiva AI app mark. Fig. 1 2026–present
  • Work
  • In progress
Year
2026–present
Role
Sole developer
Org
Krasiva Windows & Doors
Stack
Python, FastAPI, Ollama (Qwen 3.5 9B, nomic-embed-text), Qdrant (embedded), SQLite FTS5 and 7 more

An AI assistant that runs on a single office PC. Office staff ask plain-English questions about the CRM and search thousands of job PDFs, and document answers cite the page they came from. No customer data is sent to a cloud AI service.

Problem

The office needed fast answers from the CRM and from job paperwork and manuals without sending customer data to a cloud AI service. An earlier version, which I audited, was not accurate or fast enough for everyday office questions.

Approach

FastAPI backend and a Next.js 16 chat UI. Ollama runs Qwen 3.5 9B, chosen by an A/B test on my own question sets, plus nomic-embed-text for embeddings. CRM questions go through read-only typed tools and a deterministic router, limited to an allowlist of tables and columns. Documents go through hybrid search, embedded Qdrant vectors plus SQLite FTS5 keyword search, with docling-parse, pypdfium2 and Tesseract for text and OCR. Staff sign-in and network checks protect it on the office network, and a dependency gate blocks GPL and AGPL code. Golden and blind held-out question sets measure accuracy.

Process

3 dated steps, from the project’s history

  1. 01

    Platform, tools, search and chat

    Model profiles and a GPU queue, a read-only CRM data layer, typed tools behind a deterministic router with evals, hybrid retrieval with citations, ingestion with an OCR gate and redaction, and a streaming chat UI.

  2. 02

    Model A/B and wider coverage

    Switched the default model to qwen3.5:9b after an eval A/B, replaced PyMuPDF because of its AGPL terms, and added a canvassing-map tool, CRM report tools and a 156-item eval set.

  3. 03

    Photo library pilot

    Indexed company photos in place and linked them to CRM jobs. That work then moved into the CRM's own photo service.

Results

I rebuilt it and re-ran the same audit of real office questions, plus held-out test sets I had not tuned against. Accuracy and document answer times both improved substantially.

Lesson

The model was picked by running my own question sets against the candidates, not by reputation, and the held-out sets keep the scores honest because nothing was tuned against them.