Back to work
Internal product · Tour operations · 2026 Private build

SilkCRM

A single source of truth for a tour operator — tours, bookings, payments, and accommodation — that replaces a tangle of spreadsheets and generates client documents on demand. Passport scans go in; finished, ready-to-sign agreements come out.

Client SilkOffRoad Tours, internal
Role Product · Design · Full-stack engineering
Stack FastAPI · SQLAlchemy · SQLite/Postgres · OCR
Year 2026, ongoing
SilkCRM — the Data Extraction page: upload passport scans, review CRM matches, then apply the data to client records

Brief

Tour operations were spread across a stack of Google Sheets — clients, payments, accommodation, notes — with no reliable way to answer questions like "who hasn't paid in full?" or "who's in a single room on the August Kyrgyzstan tour?" Every client document was filled by hand. The brief was one source of truth that staff could use without training, and that turned passport data into finished agreements on demand.

Approach

A FastAPI + SQLAlchemy service runs on SQLite locally or Postgres when deployed, with three roles — admin, staff, viewer — enforced server-side on every route. Tours, bookings, payments, and accommodation share one schema, so the rooming and payment questions become a query instead of a manual scan across tabs.

The feature that earns its keep is a staff-only Data Extraction page: upload passport PDFs or images and an OCR pipeline (pytesseract + pdf2image) returns a reviewable, confidence-scored table of name, country, passport number, and issue date, exportable to CSV. Approved values save onto the matching client record and feed the bundled SilkDoc engine, which fills DOCX templates — tour service agreement, motorcycle rental agreement, transfer act — and converts them to PDF via LibreOffice.

SilkCRM — the tour calendar showing departures across the season
SilkCRM — SilkDoc generates agreements from a tourist CSV and DOCX templates, exporting a ZIP

Outcome

The spreadsheet sprawl collapses into one queryable system: payment and rooming questions that used to mean cross-referencing tabs are now answered instantly, and agreements that were typed by hand generate from extracted passport data in seconds. Because it integrates the existing SilkDoc automation, the team got a CRM and a document pipeline in one tool — usable without training.

Private product. Walkthrough available on request.

SilkCRM runs an active tour business. A recorded walkthrough or live demonstration of the booking, payments, and passport-to-agreement flow can be arranged on request.

Next project Nice Maps