Inspiration
Crecer Digital is a real one-person content agency serving Latino micro-businesses — taquerías, beauty salons, cleaning crews, event halls — whose owners run everything from their phones. The slowest, leakiest step in their sales is the quote: a WhatsApp thread that goes cold, a price invented on the spot, a follow-up that never happens. We built the tool we needed ourselves: an assistant that writes the quote like we would, prices it from our real catalog, and closes with a PayPal button — while the AI runs on our own hardware, because a one-person agency cannot pay per-token rent and our clients' data should never leave the house.
What it does
CotizaBot takes a 30-second intake (business name, industry, city, the service they want, and their goal) and produces a complete sales quote: a headline and pitch written for that specific business, the service's deliverables, an itemized price table with our real catalog prices, an automatic 10% bundle discount when the industry-matched add-on applies, and a total — followed immediately by an official PayPal Checkout button (Sandbox) for the exact quoted amount. Approving the sandbox payment shows the order confirmation, exactly as a real client confirmation would. The interface is Spanish-first with an English toggle, because our clients are.
How we built it
The whole server is Python 3 standard library only — no frameworks, no pip installs — serving a single-page UI, a quote API, and a config endpoint. Quote generation has two honestly-labeled modes (the UI always shows which one is active): (1) llama-live — a real local model, Qwen3 (GGUF Q4_K_M) served by llama.cpp on the agency's own machine through its OpenAI-compatible API, writes the headline and pitch; prices never come from the model, only from the fixed catalog in code. (2) structured-demo — a transparent deterministic generator (per-industry templates + catalog logic) used by the public deployment, because a 5 GB model does not fit free hosting; the demo declares this mode in a visible badge instead of dressing templates up as AI. Payments use the official PayPal JS SDK in the Sandbox environment, with the quoted total passed to createOrder and an onApprove capture that renders the sandbox order ID as the confirmation.
Challenges we ran into
Fitting a real LLM into a zero-budget, honest demo was the core challenge: an 8B model will not run on free hosting, and we refuse to fake AI with templates. The answer was architectural honesty — one codebase, two declared modes, and a health endpoint that reports which mode is live, so judges can run the real model locally with three commands. CPU inference on our small server is slow (1–3 minutes per quote), which forced careful prompt design: a strict output format, no-think mode, and a hard rule that the model writes words, never numbers.
Accomplishments that we're proud of
A complete, working sales loop — intake → AI-written quote → itemized real prices → PayPal Sandbox checkout → order confirmation — built with zero dependencies and zero budget, in Spanish and English, by the same one-person operation that will actually use it with real clients the week after the hackathon.
What we learned
That honesty is a feature users can feel: the mode badge made us design the fallback as a real product instead of a trick. And that owning a small local model changes the economics of AI for a micro-agency — no per-token bill, no client data leaving the house, and a tool that keeps working even when a subscription doesn't.
What's next for Crecer Digital
Connect CotizaBot to the agency's real PayPal account and catalog so the first client quotes go out the week after judging; add WhatsApp delivery of the quote link (how our clients actually buy); and keep improving the local model's copy with the agency's real quote history — on our server, under our roof.
Built With
- css
- html
- javascript
- llama.cpp
- paypal-checkout-js-sdk
- python
- qwen3
- render