The mini-project · internal brief

The client
is us.

The mini-project is a tool jxm-labs can actually use: an assistant that turns an incoming client brief into a <b>first-pass proposal</b> — approach, model, phase plan and a rough price band — that a senior just reviews. Below: the brief that kicks it off, then how each ask maps to a workflow decision. internal dogfood project

✉ internal kickoff

From: Maxime (founder) — jxm-labs
To: delivery team
Subject: Let's build ourselves a proposal assistant

Team,

We win deals on price and speed, but our own pre-sales is the bottleneck. Every incoming client email gets read by a senior who then hand-writes a scope, picks an approach, and guesses a price from memory. It's slow, inconsistent between people, and juniors can't do it at all yet.

What I want. An assistant that takes a raw client brief and drafts a first-pass proposal a senior just reviews and sends. For each brief it should output:

  • the problem in one sentence,
  • a recommended approach (prompt-only / long-context / RAG / fine-tune) with the reason,
  • a recommended model tier,
  • a phase plan mapped to our 7-phase method,
  • a rough effort + price band, and
  • risks / assumptions / what's out of scope.

It must use our own knowledge, not make things up. Ground every estimate in our rate card and the most similar past project — and cite which one. A wrong number in a client's inbox costs us money or credibility.

Hard requirement: know when to shut up. If a brief is for something we don't offer (train a model from scratch, realtime voice), or it's too vague to scope, it must NOT invent a quote — it should ask the right questions and flag for a human.

Constraints. Keep running cost sane. A few seconds per brief is fine. English for now. It's internal — a CLI / Slack command is plenty to start.

Success. A senior sends most drafts with light edits, it never invents a price or a past project, and a junior can run it unaided.

— Max

An AI agent: a web app + an email reader

Concretely, what ships — two ways in, one agent:

🖥️ Web app

A simple web interface: a senior pastes a client brief and gets a structured proposal back in seconds — problem, approach, model, phase plan, price band, risks.

📧 Email reader

The same agent also watches a shared inbox: it reads each incoming email, detects the ones that are real briefs, and auto-drafts a proposal — so a senior opens their inbox to ready-to-review drafts, not blank replies.

🤖 The engine — RAG on two sources

Behind both: RAG over our company docs (services, rate card, past projects, method) and the client's own documents (brief attachments, their site, a spec). Claude drafts a grounded proposal and cites exactly what it used.

🛡️ Review → accept → send

Every draft is saved to a database and shown in a dashboard. The senior reviews, exports a branded PDF, then accepts (→ emailed to the client) or refuses. Nothing is sent without a human click; it still refuses to quote out-of-scope or vague briefs.

⚙️ Stack & rollout

Claude Sonnet + local embeddings (low running cost), a database for the proposals, a web dashboard, PDF export, and an email sender. CLI for devs today; the web app is the deliverable; a Slack command / CRM embed comes later.

From inbox to the client

Email / brief in Agent reads + RAG Draft proposal Saved to DB Dashboard Generate PDF Accept / Refuse Send to client

How jxm-labs turned this into decisions

The brief said…We decided (which phase)
"drafts a first-pass proposal a senior reviews"Human-in-the-loop drafting, not auto-send (Phase 1 scope).
"use our own knowledge, not make things up"Ground in agency knowledge + a no-invention guardrail (Phases 2–3, 5).
rate card & method rarely change; past projects growHybrid: pin services/rate-card/method in the prompt, RAG over past projects (Phase 3).
"anchor every estimate on the most similar past project, cite it"Retrieve top-k past projects; anchor + cite; price as a band (Phases 3, 5).
"know when to shut up" (out-of-scope / vague)Low-confidence guardrail → clarifying questions, no quote; 2 "must not quote" eval traps (Phases 1, 6).
"a senior sends most drafts with light edits, never a wrong price"Success criterion → the eval scorecard (Phases 1, 6).
drafting a proposal is real reasoningStarted on Haiku, climbed to Sonnet because the eval required it; Opus judges (Phase 4).

Not sure which approach & model a brief needs? Run the advisor. The running code is in ai-delivery-playbook/project/.