rl-sales-augment
A trained RL policy that picks the next sales move (rapport / pitch / objection / discount / close); your LLM writes the words. The trained model ships in the package — CPU, no finetuning, works with any LLM.
pip install rl-sales-augment
Quickstart
import rl_sales_augment as rsa
gen = rsa.providers.openai_chat(model="gpt-5.5") # or your own: gen = lambda prompt: str
bot = rsa.load_agent(gen, company_ctx="Acme sells AcmeBox, an $8k on-prem appliance.")
out = bot.reply("honestly it feels expensive vs AWS")
out["chosen_move"] # 'RAPPORT' <- the RL decision
out["belief"] # {'interest': .5, 'trust': .5, 'budget_fit': .2, 'objection': .8, ...}
out["reply"] # the LLM's words, executing that move
bot.reply() is stateful — keep calling it, the agent remembers. For stateless use
(e.g. behind an API), pass the whole conversation in OpenAI message format:
out = bot.chat([
{"role": "user", "content": "what does it cost?"},
{"role": "assistant", "content": "Depends on seats. How many do you need?"},
{"role": "user", "content": "40 seats, but budget is tight"},
])
Providers
rsa.providers.openai_chat(model="gpt-5.5") # pip install rl-sales-augment[openai]
rsa.providers.anthropic_chat(model="claude-sonnet-5") # [anthropic]
rsa.providers.gemini_vertex(project="my-gcp-project") # [gemini] (ADC, no API key)
rsa.providers.gemini_api() # [gemini] (GEMINI_API_KEY)
rsa.providers.gemma_e2b() # [gemma] local Gemma 4, CPU/MPS/CUDA
rsa.providers.openai_chat(base_url="http://...") # any OpenAI-compatible server
Or bring your own: any gen(prompt) -> str works.
MCP server
pip install "rl-sales-augment[mcp]"
rl-sales-augment-mcp # stdio
{ "mcpServers": { "rl-sales-augment": { "command": "rl-sales-augment-mcp" } } }
Tools: next_move (buyer state → RL move), perception_prompt, list_moves, list_segments.
REST API
pip install "rl-sales-augment[gemini,api]"
A complete FastAPI server (POST /v1/chat, OpenAI-format messages) ships in
examples/fastapi_server.py.
Why
Pure LLMs answer objections politely forever and never ask for the sale. In a paired A/B (simulated buyers, harness in the repo) the same LLM closed 100% with the policy vs 19–31% without; on adversarial buyers 3/4 vs 0/4. Details, transcripts, and a 67-second demo: github.com/NandhaKishorM/rl-sales-augment
License
AGPL-3.0-or-later. Training the policy on your own market is the commercial offering — nandakishor@convaiinnovations.com (Convai Innovations Pvt. Ltd.).
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rl_sales_augment-0.5.1.tar.gz.
File metadata
- Download URL: rl_sales_augment-0.5.1.tar.gz
- Upload date:
- Size: 33.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b3e95c47703fa9aa1ba436dec81d3f92f8162ccbdc6a8564f35ebed163912c5
|
|
| MD5 |
faa31b581b227bf35951d17dfd636eb5
|
|
| BLAKE2b-256 |
fbb9eb43fd21644f005c04c58cb3863acabaddddbe922831c509ea209dfdc017
|
File details
Details for the file rl_sales_augment-0.5.1-py3-none-any.whl.
File metadata
- Download URL: rl_sales_augment-0.5.1-py3-none-any.whl
- Upload date:
- Size: 33.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9065cdad68a358b0e65f0a4ebb7d3fbeb216d459bd30e81732ab4ad0c2688d87
|
|
| MD5 |
35f261f00655da785ed9b54ceb07813c
|
|
| BLAKE2b-256 |
b323eda446382adc715c3849dfd6a4c047d625f50be404e61518abc73e89df76
|