Reps were answering prospect questions from memory and old decks. This answers from the approved
library, cites the row it used, and says plainly when the library does not cover the question.
210+ 210+ 210+
Questions answered
40 40 40
People using it
In the first month after launch Launched early October 2026
This is not the deployed assistant. It runs the same stages in your
browser over a sample library about me — no model call, no company system, no customer data. The one
that sales uses runs inside the internal application on the approved library.
Ask “What's Ben's favorite movie?” to see what it does with a question the library does not
cover: it says so rather than answering. “Does Ben have a cat?” shows it rejecting a source
that does not support the claim. Either way, every citation opens the record behind it.
Browser-based demo. Responses use local sample data; Claude and company systems are not connected.
Project details
My role
I built the retrieval, the citation checks and the access rules — Python on AWS Lambda and DynamoDB, answering with Claude on Amazon Bedrock over documents in Amazon S3. It runs on the answer library and search index I had already built for the RFP module, not a second copy of either.
Beyond the build itself: the prompt and tool contract are mine, and so is the single module that decides which library rows a salesperson may reach. It runs inside the same internal application as the RFP module, whose shared framework a colleague owns and maintains. The employer is a Human Capital Management B2B SaaS company; it and my colleagues are not named here.
Project status
Deployed into the internal application in the first week of October 2026 and in use by sales since. The counts above are a usage snapshot: they do not establish how accurate the answers were, or any time saved.
Validation and scope
It answers only from library entries. An answer left without a valid citation is replaced with "the library doesn't cover this" rather than shown.
Client reference contact details are never sent to the model. The entry says permission must be confirmed with the account owner before each use.
The citation check establishes provenance, not truth. It confirms each ID shown was retrieved that turn and names a real entry; it does not verify the claim or make the library complete.
The demonstration's retrieval and checks are JavaScript standing in for the Python: the same stages in the same order, and simpler.
Built with
Python
AWS Lambda
DynamoDB
Amazon S3
Claude on Amazon Bedrock
Claude Code plugin
What the real assistant does
The deployed assistant answers prospect questions for the sales team, from the same Master Answer Library the
RFP Response Platform already uses — one library, two modules, so an approved
change shows up in both at once. It runs inside the company’s internal application. The demonstration above
is not it: that one runs in your browser over a sample library about me, and calls no model and no company
system.
What comes back alongside each answer is what lets a salesperson judge it before reusing it: the source record
behind every citation, with its ID, category, status and date; both sides of any two entries that disagree;
and an explicit list of what the library does not settle — pricing to confirm for this deal, an entry marked
out of date, a reference whose permission the account owner has to clear first.
Key engineering decisions
Pick one to read it. The constraint, the implementation and the cost are behind each.