Javis OS
Javis OS is an Agentic AI that assists entrepreneurs in business tasks, helping them grow their work.
AI translation
A controlled quotation workflow for service businesses, from lead intake through human-approved quote generation.
BusinessGitHub @samirm-dotcomOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Showcase: controlled quotation workflow for HVAC and local-service businesses. Deterministic pricing with confidence gates and human approval. Source code private.
Taken from the repository README
Loading the full README.
Read the full README ↗A controlled quotation workflow for service businesses, from lead intake through human-approved quote generation.
Status: Pilot candidate, running as a local demo on synthetic pricing history, with no customer pilot yet. Built by Samir Mammadli.
This is a showcase repository. It explains the product with screenshots, architecture and short code excerpts. The full source code is private and available on request for hiring or business conversations via LinkedIn or the contact page.
Product page · Full case study · Business analysis: requirements, rules & acceptance criteria · Article: why it refuses to guess
A 40-second walkthrough of the local demo: a customer request, a refusal when the job is outside past data, a firm price with confidence, explicit owner approval, and the final quote. Synthetic data and a fictional business.
Small service businesses lose leads when quotes are slow, and they lose margin when prices are inconsistent. Pricing often lives in one person's head, with no record of why a number was given.
The customer-facing intake form. No login is required.
draft → awaiting_approval → approved → shared → accepted / rejected / expiredEvery quote shows its pricing confidence and waits for a typed approval.
The finished output: a branded, customer-ready estimate.
flowchart LR
A[Customer submits<br/>estimate request] --> B[Lead in admin dashboard]
B --> C[Deterministic pricing engine<br/>fitted on the business's own history]
C --> D{Six confidence gates}
D -- any gate fails --> E[Refusal with reasons<br/>no guessed price]
D -- all pass --> F[Draft quote]
F --> G[Owner reviews wording<br/>and approves]
G --> H[Branded quote<br/>shared with customer]
AI[Optional AI wording<br/>no prices, no customer data] -.-> F
The engine fits labor rate, category markup, repeat-customer discount and seasonal effects from validated past quotes. Before it returns a price, it checks that:
If any check fails, the system declines to give a firm price and says which checks failed. It never invents a number.
| Decision | Why |
|---|---|
| AI never touches price | Prices come only from the business's own data, so every number can be explained and defended. |
| Refuse instead of guess | A wrong quote costs margin or trust. "Not enough comparable history" is a valid, useful answer. |
| Human approval is mandatory | Nothing reaches a customer without an owner's explicit approval, and every state change is recorded. |
| Minimal data to the AI | The optional wording assistant receives only the service category, equipment and description. It never receives a customer's name, address or contact details, or the price, and it is fully off without a server-side key. |
| Money as integer cents | Avoids floating-point rounding errors in totals and tax. |
The approval workflow is an explicit state machine. A quote can only move along allowed paths, and each move is written to an audit table:
TRANSITIONS = {
"draft": {"awaiting_approval"},
"awaiting_approval": {"draft", "approved"},
"approved": {"shared", "rejected", "expired"},
"shared": {"accepted", "rejected", "expired"},
"accepted": set(),
"rejected": set(),
"expired": set(),
}
def transition_quote(quote_id: int, admin_id: int, target: str) -> None:
...
if target not in TRANSITIONS.get(current, set()):
raise ValueError(f"invalid quote transition from {current} to {target}")
if target == "approved" and not str(quote["customer_message"]).strip():
raise ValueError("add customer-facing wording before approval")
... # status update + audit event in one transaction
The confidence gate. Data support decides, and any failed check means no firm price:
confident = all(passed for _, passed, _ in checks)
if confident:
price, applied = price_with_rules(dict(job, category=cat), fitted)
result["firm_price"] = price
result["justification"] = f"Matched to {n_comp} past {cat} jobs; applied " + "; ".join(applied)
else:
failed = [c for c, p, _ in checks if not p]
result["firm_price"] = None
result["declined_because"] = failed
Python · Flask · SQLite (with migrations) · Waitress · Docker · Anthropic API (optional wording only)
Security and quality: CSRF protection, rate limits, secure headers, scrypt password hashing, privacy-conscious logging, mypy type checks, Ruff linting, and dependency auditing.
© 2026 Samir Mammadli. All rights reserved. See LICENSE.