All work
TTGovTech · Bid IntelligenceEnterprise SaaSCase study

Tendorer — Tender Intelligence & Bid Management

Turns government tender chasing into a scored, auditable pipeline where every number can be defended.

A tender intelligence workspace that takes a government tender from discovery to post-award review: every opportunity is scored against your own capability profile, and every score shows the components, weights and reasons behind it.

Source private
Tendorer — Tender Intelligence & Bid Management interface
Industry
Infrastructure / Public Procurement
Role
Architect & Full-Stack Engineer
Type
SaaS Platform
Year
2026
Status
Delivered
20 seeded
Scored Tenders
Explainable
Scoring
6 permission sets
Roles

Overview

Tendorer is a bid management workspace for organizations that compete for government tenders. It carries an opportunity through the full cycle — discover, understand, evaluate, decide, prepare, track, learn — instead of leaving it scattered across spreadsheets and mailboxes.

The defining constraint is explainability. Every score, recommendation and warning the system produces is shown next to the components and weights that produced it, and any assessment can be overridden by a person with a recorded reason. A match score of 97 is never a black box: the eligibility clauses it cleared, the ones it failed and the capability gaps behind them are all visible on the same screen.

Tender documents are parsed by a pluggable extraction provider — an offline heuristic parser by default, with an optional LLM adapter — so the platform runs with no external AI dependency and gains accuracy when one is configured.

The problem

Organizations bidding on government tenders track opportunities in spreadsheets and mailboxes. Eligibility is re-checked by hand for every tender, the reasoning behind a go/no-go decision lives in someone's head, and there is no record afterwards of why a bid was pursued or dropped.

The solution

A single workspace that ingests tenders, scores each one against a stored capability profile, and exposes the full reasoning behind every number — then carries the chosen opportunities through bid preparation, approval and submission with an audit trail.

Technical stack

Frontend

  • React 19
  • Vite 6
  • TypeScript
  • TanStack Query
  • Tailwind CSS 4

Backend

  • NestJS 11

Also used

  • Prisma 6
  • MariaDB
  • Recharts
  • Swagger

System architecture

  1. 1

    NestJS 11 REST API over Prisma 6 and MariaDB 11.8, documented with Swagger

  2. 2

    React 19 + Vite 6 SPA using TanStack Query for server state and Recharts for analytics

  3. 3

    JWT access tokens plus rotating refresh tokens in httpOnly cookies, argon2 password hashing

  4. 4

    Role-based permissions covering tenders, bids, finance, review and read-only access

  5. 5

    Pluggable document-extraction provider — offline heuristic parser by default, LLM adapter optional

  6. 6

    Scoring engine that persists the component breakdown alongside every computed score

Engineering challenges

Challenge

A recommendation nobody can interrogate does not get trusted — bid teams will not act on a number they cannot defend to a director.

How I solved it

Made explainability part of the data model rather than a UI afterthought: every score persists its components, weights and reasons, so the interface renders the argument alongside the number and a person can override it with a recorded justification.

Challenge

Document extraction quality varies wildly, and binding the product to one AI vendor would make it unusable in air-gapped procurement environments.

How I solved it

Defined extraction as a provider interface with an offline heuristic parser as the default implementation, so the platform is fully functional with no external dependency and improves when an LLM adapter is configured.

Core features

  • Opportunity, match and risk scoring with the components always shown
  • Eligibility checked clause by clause against a company capability profile
  • Bid workspaces with checklists, documents, BOQ and pricing scenarios
  • Approval chain with recorded overrides and reasons
  • Competitor tracking and win/loss analytics
  • Document intelligence with a pluggable extraction provider
  • JWT access + rotating refresh tokens in httpOnly cookies, argon2 hashing
  • Role-based permissions across tenders, bids, finance and review
  • Calendar of closings, clarifications and submission deadlines
  • REST API documented with Swagger at /api/docs

Results & impact

Tender evaluation moved from ad-hoc spreadsheet review to a scored, auditable pipeline. The seeded demo carries 20 tenders scored end to end across two organizations, with eligibility gaps, risk scores and closing deadlines surfaced on a single dashboard.

Screenshots

Tendorer — Tender Intelligence & Bid Management screenshot 1
Tendorer — Tender Intelligence & Bid Management screenshot 2
Tendorer — Tender Intelligence & Bid Management screenshot 3
Tendorer — Tender Intelligence & Bid Management screenshot 4
Tendorer — Tender Intelligence & Bid Management screenshot 5

What I learned

  • When a system produces judgements about money, the reasoning is the feature — persist it with the result rather than recomputing or narrating it later.
  • Treating an AI capability as a swappable provider keeps the product deployable in environments where no external model is permitted.

Related work

All projects
Next step

Have a system like this to build?

I take projects from the first conversation through to production, and stay on for the support that follows.