Inspiration

Small teams often choose software from a spreadsheet assembled during a short buying window. A month later, prices, limits, integrations, and service records may already be different. General AI tools make the comparison faster, but a confident answer with an invented citation is worse than the original spreadsheet. VendorProof was built to make freshness, contradictions, and missing evidence visible before a team commits.

What it does

VendorProof converts a procurement brief into no more than five decision-critical claims. It searches current Google Web and Google News results through SerpApi, classifies each claim as supported, changed, conflicting, or insufficient, and produces a publish, review, or hold decision file. Every citation must exactly match a URL returned in the current search. Missing evidence forces a downgrade instead of a guess.

The full brief and report are saved to Xano. On the next run, VendorProof can compare the new evidence with the previous snapshot and report what changed.

How we built it

The product is a Python 3.12 Flask application running on Google Cloud Run. Gemini 3.5 Flash on Vertex AI provides structured claim extraction and evidence assessment. SerpApi supplies live Google Web and Google News results. Pydantic validates the model output and URL contracts. A separate provenance guard compares citations byte for byte with the URLs returned during that run. Provider credentials stay on the server.

Xano owns the briefs and snapshots records. It finds or creates a normalized brief, serializes writes for that brief inside a transaction, loads the previous snapshot, compares stable claim keys, saves the complete evidence JSON, and returns a compact receipt to the app.

What we replaced, and how long it took

VendorProof replaces the stale vendor comparison spreadsheet and its copy-pasted research tabs. The working product was built over two focused days, August 29 and 30, 2026. Gemini handled structured research tasks. Codex helped implement and independently review the code. Xano shortened the path from a spreadsheet concept to a transactional history layer with published APIs and persistent records.

Challenges

The hard part was enforcing an honest boundary between live evidence and model output. URL normalization can silently alter a citation. A partial provider failure can look like an empty result. A smoke test can report success without completing the full evidence chain. Independent review rounds found these cases, and each one now has a regression test.

Stable history was another problem. Model wording changes between runs, so persistent identity cannot depend on a model-generated label. VendorProof maps exact anchors back to deterministic vendor and requirement atoms from the immutable brief before Xano compares snapshots.

Accomplishments

  • Complete Gemini, SerpApi, and Xano production chain on Cloud Run
  • Exact live-source citation enforcement
  • Visible partial-search and persistence failures
  • Conservative decision states instead of false certainty
  • 391 passing tests with 95.26% branch-aware coverage
  • Secret scanning and push protection enabled on the public repository
  • Independent review converged with no actionable regressions
  • Responsive interface tested on desktop and mobile

What we learned

Structured model output is only the start of reliability. The application still has to validate URL semantics, preserve provider provenance, re-check data after transformations, and treat integration smoke tests as evidence rather than ceremony. The most useful procurement tool is one that is comfortable saying "insufficient evidence."

What's next

Scheduled refreshes, vendor watchlists, richer snapshot diffs, and team review notes. The same evidence policy can also support supplier due diligence beyond software.

Built With

Share this project:

Updates

Submission history