<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shreepal Goyal</title>
    <description>The latest articles on DEV Community by Shreepal Goyal (@shreepalgoyal).</description>
    <link>https://dev.to/shreepalgoyal</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2629905%2F160c8f8a-6164-49c8-9ad9-2a100e20e9b4.png</url>
      <title>DEV Community: Shreepal Goyal</title>
      <link>https://dev.to/shreepalgoyal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shreepalgoyal"/>
    <language>en</language>
    <item>
      <title>How I Built BidRoom: Five AI Agents, One Bid, and a Human Who Has to Sign</title>
      <dc:creator>Shreepal Goyal</dc:creator>
      <pubDate>Sat, 07 Nov 2026 18:57:40 +0000</pubDate>
      <link>https://dev.to/shreepalgoyal/how-i-built-bidroom-five-ai-agents-one-bid-and-a-human-who-has-to-sign-3io9</link>
      <guid>https://dev.to/shreepalgoyal/how-i-built-bidroom-five-ai-agents-one-bid-and-a-human-who-has-to-sign-3io9</guid>
      <description>&lt;p&gt;&lt;em&gt;A public-sector RFP is not a writing problem. It's an evidence problem.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo:&lt;/strong&gt; &lt;a href="https://youtu.be/0KTzrEUJdoU" rel="noopener noreferrer"&gt;2:04 walkthrough&lt;/a&gt; · &lt;strong&gt;Code:&lt;/strong&gt; &lt;a href="https://github.com/shreepalgoyal/bidroom" rel="noopener noreferrer"&gt;github.com/shreepalgoyal/bidroom&lt;/a&gt; · &lt;strong&gt;Signed report:&lt;/strong&gt; &lt;a href="https://github.com/shreepalgoyal/bidroom/blob/main/docs/sample-report.html" rel="noopener noreferrer"&gt;View sample report&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The failure mode nobody demos
&lt;/h2&gt;

&lt;p&gt;Every AI writing tool looks impressive when you give it an RFP.&lt;/p&gt;

&lt;p&gt;Feed it a 90-page tender, and it will return fluent, confident prose in seconds.&lt;/p&gt;

&lt;p&gt;That's exactly the problem.&lt;/p&gt;

&lt;p&gt;A bid team has four weeks, hundreds of requirements, and a library of case studies that may or may not prove what the sales team wants to claim.&lt;/p&gt;

&lt;p&gt;The dangerous failure isn't a missing answer. It's an answer that sounds true, cites the wrong evidence, and gets discovered after the contract is awarded.&lt;/p&gt;

&lt;p&gt;The bid is lost, the contract is challenged, and nobody can reconstruct why the claim was made in the first place.&lt;/p&gt;

&lt;p&gt;Generic AI makes this worse because it optimizes for prose rather than proof.&lt;/p&gt;

&lt;p&gt;A language model will happily turn a SOC 2 report into an answer for an ISO/IEC 27001 requirement because both are "security certifications."&lt;/p&gt;

&lt;p&gt;They are not the same thing.&lt;/p&gt;

&lt;p&gt;So I built BidRoom around one rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every compliance claim must cite an &lt;strong&gt;approved&lt;/strong&gt; evidence record. Agents can propose evidence, but only a named human can approve it, and only the bid lead can sign the submission.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That single constraint changes the shape of the entire workflow.&lt;/p&gt;

&lt;p&gt;Gaps stop being embarrassing and become first-class objects with owners. Approval stops being a chat reaction and becomes an auditable action.&lt;/p&gt;

&lt;p&gt;And the final artifact isn't just a document. It's a compliance matrix that a team can actually defend during a bid review.&lt;/p&gt;

&lt;h2&gt;
  
  
  The room
&lt;/h2&gt;

&lt;p&gt;BidRoom is built on &lt;a href="https://www.switchagents.ai" rel="noopener noreferrer"&gt;Switch&lt;/a&gt;, with OpenCode as the agent runtime and the Mattermost rooms provisioned by Switch as the shared workspace.&lt;/p&gt;

&lt;p&gt;One Switch template (&lt;code&gt;switch/bidroom.template.yaml&lt;/code&gt;) creates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Five agents:&lt;/strong&gt; &lt;code&gt;scout&lt;/code&gt;, &lt;code&gt;matcher&lt;/code&gt;, &lt;code&gt;evidence&lt;/code&gt;, &lt;code&gt;writer&lt;/code&gt;, and &lt;code&gt;redteam&lt;/code&gt;, each with its own role prompt and tool access.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two linked rooms:&lt;/strong&gt; &lt;code&gt;Bid: Northwind City Council&lt;/code&gt; for the client workflow, and &lt;code&gt;northwind-evidence-desk&lt;/code&gt; for evidence review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The runbook, relay rules, and kickoff message&lt;/strong&gt;, so the room explains itself to a new team member.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agents share one checkout, so &lt;code&gt;.bidroom/&lt;/code&gt; on disk is the only shared state.&lt;/p&gt;

&lt;p&gt;Switch provides the identities, rooms, and relay. Without it, there is no room, no agent identity, and no place for the human approval gate to live.&lt;/p&gt;

&lt;p&gt;The relay is explicit and one-directional:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;scout → matcher → human approval → writer → redteam → human sign-off
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agents never approve evidence, and they never sign submissions.&lt;/p&gt;

&lt;p&gt;The runbook makes this clear, and the CLI enforces it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pipeline
&lt;/h2&gt;

&lt;p&gt;Each agent has a specific responsibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Scout: Understand the RFP
&lt;/h3&gt;

&lt;p&gt;Scout reads the RFP and extracts the requirement register.&lt;/p&gt;

&lt;p&gt;For the bundled Northwind City Council tender (&lt;code&gt;NCC-2026-114&lt;/code&gt;), which covers a resident services portal, that means identifying 77 requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;65 mandatory requirements&lt;/li&gt;
&lt;li&gt;12 scored requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also identifies the five most difficult mandatory requirements, helping the bid lead understand where the team needs to spend its time.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Matcher: Find relevant evidence
&lt;/h3&gt;

&lt;p&gt;Matcher scores every requirement against the evidence library.&lt;/p&gt;

&lt;p&gt;The initial matching approach uses token overlap across requirement text, tags, and categories, with additional &lt;strong&gt;qualifier penalties&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, if a requirement explicitly names a standard or product such as ISO/IEC 27001, IDOX, IPv6, WCAG, PSBAR, or Open Government Licence, the score is penalized when the evidence record doesn't reference that specific qualifier.&lt;/p&gt;

&lt;p&gt;This is what prevents a SOC 2 record from being treated as proof of ISO/IEC 27001 compliance.&lt;/p&gt;

&lt;p&gt;A similar-sounding claim isn't automatically relevant evidence.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Evidence: Turn gaps into reviewable records
&lt;/h3&gt;

&lt;p&gt;Evidence turns identified gaps into Markdown records with frontmatter containing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ID&lt;/li&gt;
&lt;li&gt;Claim&lt;/li&gt;
&lt;li&gt;Tags&lt;/li&gt;
&lt;li&gt;Categories&lt;/li&gt;
&lt;li&gt;Owner&lt;/li&gt;
&lt;li&gt;Last verified date&lt;/li&gt;
&lt;li&gt;Source&lt;/li&gt;
&lt;li&gt;Approval state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It then posts the approval queue to the evidence review room.&lt;/p&gt;

&lt;p&gt;This is the only agent that can add records to the evidence library, and it can only create them in an &lt;strong&gt;unapproved&lt;/strong&gt; state.&lt;/p&gt;

&lt;p&gt;The agent can propose evidence. It cannot approve its own proposal.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Writer: Draft from approved evidence
&lt;/h3&gt;

&lt;p&gt;Writer creates the bid response using approved evidence records only.&lt;/p&gt;

&lt;p&gt;Every claim includes a citation.&lt;/p&gt;

&lt;p&gt;If evidence is missing, the gap remains visible with an owner and a next action.&lt;/p&gt;

&lt;p&gt;No record, no sentence.&lt;/p&gt;

&lt;p&gt;This is an important distinction: the writer isn't allowed to invent a convincing answer just because the requirement needs one.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Redteam: Challenge the draft
&lt;/h3&gt;

&lt;p&gt;Redteam reviews the generated draft against the evidence library.&lt;/p&gt;

&lt;p&gt;Unsupported claims become blockers rather than mere writing suggestions.&lt;/p&gt;

&lt;p&gt;It also calculates a readiness score, helping the bid lead distinguish between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"The writing looks good."&lt;/li&gt;
&lt;li&gt;"The submission is actually defensible."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are two very different things.&lt;/p&gt;

&lt;h2&gt;
  
  
  The human gate is code, not a prompt
&lt;/h2&gt;

&lt;p&gt;This is the part I cared about most.&lt;/p&gt;

&lt;p&gt;I didn't want human approval to be something an agent could simulate by writing "Approved" in a chat message.&lt;/p&gt;

&lt;p&gt;Approval is a CLI command requiring a named person:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bidroom evidence approve E-DEL-09 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--by&lt;/span&gt; &lt;span class="s2"&gt;"Priya Raman"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--note&lt;/span&gt; &lt;span class="s2"&gt;"Checked Delivery report v4 section 3: top-20 transactions complete end to end."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sign-off is a separate command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bidroom signoff &lt;span class="nt"&gt;--by&lt;/span&gt; &lt;span class="s2"&gt;"Priya Raman"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--note&lt;/span&gt; &lt;span class="s2"&gt;"Reviewed the matrix, draft and red-team findings."&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--accept-gaps&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;--accept-gaps&lt;/code&gt; option isn't a bypass.&lt;/p&gt;

&lt;p&gt;It requires a written reason, and the final report lists every accepted gap by ID.&lt;/p&gt;

&lt;p&gt;The signature also pins the approved evidence library using a SHA-256 digest.&lt;/p&gt;

&lt;p&gt;If someone edits an approved record afterward, the report marks the signature as &lt;strong&gt;stale&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There's another deliberate restriction: the MCP server exposes no approval or sign-off tool.&lt;/p&gt;

&lt;p&gt;That means an agent cannot approve its own evidence, even if someone prompts it to try.&lt;/p&gt;

&lt;p&gt;That's the entire product thesis:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The interesting work isn't generating text. It's deciding what counts as proof, and who is allowed to say so.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers
&lt;/h2&gt;

&lt;p&gt;The bundled example uses a synthetic but realistic UK local-government RFP.&lt;/p&gt;

&lt;p&gt;It ships with 54 evidence records.&lt;/p&gt;

&lt;p&gt;Here's what happened after six human approvals:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Baseline&lt;/th&gt;
&lt;th&gt;After six human approvals&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Compliant&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;57&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Needs approval&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gap&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coverage&lt;/td&gt;
&lt;td&gt;68.8%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;77.9%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Approved evidence&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;52&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Readiness&lt;/td&gt;
&lt;td&gt;55/100&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;70/100&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blockers&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The six records that closed gaps were actual reviewable files covering:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The top-20 transactions journey.&lt;/li&gt;
&lt;li&gt;The single digital front door.&lt;/li&gt;
&lt;li&gt;The IDOX Uniform integration.&lt;/li&gt;
&lt;li&gt;A 60k-user load test.&lt;/li&gt;
&lt;li&gt;The assisted-digital route.&lt;/li&gt;
&lt;li&gt;The open-data extract.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;They were imported as &lt;strong&gt;unapproved&lt;/strong&gt; records on purpose, so the human approval step would be visible.&lt;/p&gt;

&lt;p&gt;Two records remained unapproved as well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The AI search pilot was still in its sandbox stage.&lt;/li&gt;
&lt;li&gt;The delegated-access consent wording was still under legal review.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A demo that approves everything isn't a demonstration of an approval gate.&lt;/p&gt;

&lt;p&gt;Eight mandatory gaps also remain, each with an owner and a disclosed next step. These include ISO/IEC 27001 certification, UK GDPR/DPA/PSBAR evidence, IPv6, digital-skills workshops, gainshare, and submission or commercial items the council hasn't answered yet.&lt;/p&gt;

&lt;p&gt;The report shows them.&lt;/p&gt;

&lt;p&gt;That's the point.&lt;/p&gt;

&lt;h2&gt;
  
  
  What surprised me
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Qualifier penalties did more for trust than any prompt
&lt;/h3&gt;

&lt;p&gt;The first version of the matcher was too generous.&lt;/p&gt;

&lt;p&gt;It matched "security certification" to "security certification" and produced a beautiful but incorrect compliance matrix.&lt;/p&gt;

&lt;p&gt;Adding named-standard penalties changed that.&lt;/p&gt;

&lt;p&gt;The system became more cautious about what it considered relevant evidence, and that made the output much more useful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gaps are a feature, not a failure state
&lt;/h3&gt;

&lt;p&gt;Initially, gaps looked like something the system needed to eliminate.&lt;/p&gt;

&lt;p&gt;But once every gap had an owner and a next action, the team's attention shifted away from arguing about prose and toward closing evidence gaps.&lt;/p&gt;

&lt;p&gt;The compliance matrix became the actual product.&lt;/p&gt;

&lt;h3&gt;
  
  
  The human gate needs a scripted replay
&lt;/h3&gt;

&lt;p&gt;Judges and reviewers shouldn't have to manually approve six records just to see the final signed result.&lt;/p&gt;

&lt;p&gt;So I added:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bidroom demo &lt;span class="nt"&gt;--full&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It replays the human's part of the workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Imports the six evidence records.&lt;/li&gt;
&lt;li&gt;Records the approvals by name.&lt;/li&gt;
&lt;li&gt;Generates the draft.&lt;/li&gt;
&lt;li&gt;Runs the red-team review.&lt;/li&gt;
&lt;li&gt;Completes sign-off.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It produces the same result: 57 compliant, 6 partial, 2 needing approval, 12 gaps, 77.9% coverage, 70/100 readiness, and zero blockers.&lt;/p&gt;

&lt;p&gt;The approval gate is still enforced through the same CLI command.&lt;/p&gt;

&lt;p&gt;The demo just makes the entire process reproducible with one command.&lt;/p&gt;

&lt;h3&gt;
  
  
  The agents are most useful before the prose
&lt;/h3&gt;

&lt;p&gt;Scout and Matcher performed work that would otherwise have taken me around two days.&lt;/p&gt;

&lt;p&gt;Writer was fast, but it was only trustworthy because the evidence layer existed first.&lt;/p&gt;

&lt;p&gt;That was probably my biggest takeaway from building BidRoom.&lt;/p&gt;

&lt;p&gt;The quality of AI-generated writing matters, but the quality of the evidence behind it matters much more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run it yourself
&lt;/h2&gt;

&lt;p&gt;You can clone the repository and run the bundled example locally.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/shreepalgoyal/bidroom.git
&lt;span class="nb"&gt;cd &lt;/span&gt;bidroom

python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv .venv
.venv/bin/pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;".[dev]"&lt;/span&gt;

&lt;span class="c"&gt;# Full replay: baseline, six human approvals, draft, red team, sign-off&lt;/span&gt;
.venv/bin/bidroom demo &lt;span class="nt"&gt;--out&lt;/span&gt; demo-output &lt;span class="nt"&gt;--force&lt;/span&gt; &lt;span class="nt"&gt;--full&lt;/span&gt;

&lt;span class="c"&gt;# Baseline only&lt;/span&gt;
.venv/bin/bidroom demo &lt;span class="nt"&gt;--out&lt;/span&gt; demo-baseline &lt;span class="nt"&gt;--force&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To run the actual multi-agent room:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Import &lt;code&gt;switch/bidroom.template.yaml&lt;/code&gt; in Switch Console → Templates.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;directory&lt;/code&gt; to the shared checkout.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;repo_url&lt;/code&gt; to your fork.&lt;/li&gt;
&lt;li&gt;Create the group.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The complete setup instructions, including the OpenCode version note and Mattermost troubleshooting, are in &lt;a href="https://github.com/shreepalgoyal/bidroom/blob/main/docs/SETUP.md" rel="noopener noreferrer"&gt;&lt;code&gt;docs/SETUP.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The project currently includes &lt;strong&gt;19 tests&lt;/strong&gt;, including an end-to-end test that runs the full demo and verifies the signed result.&lt;/p&gt;

&lt;p&gt;No API key is required to run the bundled example.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would build next
&lt;/h2&gt;

&lt;p&gt;There are still several areas I'd like to improve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Evidence expiry&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;last_verified&lt;/code&gt; field already exists, but nothing currently forces a re-check before a bid.&lt;/p&gt;

&lt;p&gt;A stale evidence library should block sign-off, not just generate a warning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Per-claim provenance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The report currently pins the entire approved evidence library with a digest.&lt;/p&gt;

&lt;p&gt;The next step would be a per-claim hash, allowing reviewers to trace an individual sentence back to its exact evidence record.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Real RFP ingestion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The bundled example uses Markdown.&lt;/p&gt;

&lt;p&gt;Real public-sector tenders arrive as PDFs, spreadsheets, and web portals. Building a reliable ingestion pipeline for those formats is one of the next major challenges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Team roles&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One bid lead is enough for a demo.&lt;/p&gt;

&lt;p&gt;Real bids involve security reviewers, commercial reviewers, delivery leads, and other stakeholders.&lt;/p&gt;

&lt;p&gt;The approval gate should understand these different responsibilities instead of treating every approval as interchangeable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;BidRoom was built for &lt;strong&gt;Flip the Switch - Track 01: Best Business Workflow&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The project explores a simple idea: AI agents can do a lot of the work involved in preparing a complex bid, but they shouldn't be the authority on whether a claim is true or whether a submission is ready.&lt;/p&gt;

&lt;p&gt;Five agents, a real compliance matrix, a signed report, and a human who has to mean it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Watch the &lt;a href="https://youtu.be/0KTzrEUJdoU" rel="noopener noreferrer"&gt;2:04 walkthrough&lt;/a&gt;&lt;/strong&gt; or explore the &lt;a href="https://github.com/shreepalgoyal/bidroom" rel="noopener noreferrer"&gt;source code on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I'd be interested to hear how others are approaching human approval, evidence traceability, and reliable multi-agent workflows.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
