Build around the work at the counter.
A repair shop does not experience customers, vehicles, invoices, and appointments as separate products. They are steps in the same job. I built JNC Suite to connect those steps so the counter, the workshop, and the business owner can work from a shared operational record.
One customer can own several vehicles, each with its own service history. Vehicle identification and registration-plate lookup reduce repeated entry. Estimates preserve line items, discounts, and tax as they become invoices, keeping the original work visible through the job.
An old invoice should stay old.
One of the most useful fixes came from a subtle historical-data problem. An earlier invoice view read current vehicle information. When a vehicle returned with a newer mileage reading, an old invoice could display that new number.
The correction was to preserve customer and vehicle details at invoice creation. Current records can continue changing, but an issued document represents the moment it was created. That distinction turns an ordinary database relationship into a deliberate business rule.
Every status change means something.
Starting a job can assign its mechanic. Completion timestamps help calculate labor, while manually entered hours take precedence when staff need to correct the record. Changes to parts-order status must adjust inventory without applying the same movement repeatedly.
Appointment approvals exposed a related problem: approving from a phone link and approving from the staff dashboard had diverged. I brought those paths back to the same business rules. Different interfaces should not create different versions of what it means to approve a booking.
Automate the prompt. Keep the conversation.
Follow-up uses actual invoice history to schedule oil-service reminders before service is due and again when it becomes due. Customer replies enter a conversation thread that staff can read and continue. The shop's phone number remains available for a human conversation.
Promotional messages are spread across batches so the front desk can handle replies. Another integration fix standardized phone-number normalization: a returning customer's identity should not disappear because one form added punctuation and another stored only digits.
A practical stack for a working business.
The application uses Python, Flask blueprints, Jinja templates, Flask-Session, and SQL. PostgreSQL support and a SQLite fallback give deployment flexibility. APScheduler handles scheduled work, Twilio carries messaging, and the document pipeline uses pdfkit and wkhtmltopdf with a WeasyPrint fallback.
Docker and Gunicorn support deployment. Staff permissions, password hashing, audit records, and tokenized document links sit alongside the everyday workflow. I treat those supporting details as part of maintaining the application, because the shop needs to keep using it after the initial release.
A system that stays close to the shop.
JNC Suite is used in daily production. My role continues through support and refinement as real jobs expose edge cases that a clean demo never would. The screenshots here use sanitized records so the workflow can be shown without exposing customer information.
The broader pilot offering starts from this application and adapts the workflow, hosting, starting data, and acceptance criteria to a particular shop. The useful outcome is the connected operation: a vehicle's history, the work performed, the document issued, and the next conversation belong together.


