Inspiration

Late-night browsing through Malaysian tender packs and copy pasting contents + manual download of documents into Word made one thing painfully clear: the procurement process is broken for SMEs in Malaysia. Tender documents are buried in Malay-only PDFs, scattered across portals, and laced with hidden eligibility tables. We envisioned Tenderly as the one-stop workspace that scrapes those packs, translates them, tells a supplier “you’re 82 % eligible,” drafts a compliant proposal, and seals the submission on-chain—so honest contractors can finally compete on merit.

We don't just help you find proposals.. We help you WIN them


What it does

  • Scrape → Structure – pulls tender bundles, stores files in Supabase Storage, writes clean JSON metadata to Postgres.
  • Translate – seamless Malay ↔ English via Lingo.dev.
  • AI Summary & Eligibility – GPT-4o with RAG explains each tender and scores your company profile against every requirement.
  • Proposal Wizard – one-click draft (cover letter, pricing sheet, Gantt chart).
  • Algorand Attestation – hashes each submitted PDF and records the tx-id, creating a tamper-proof supplier reputation.

How we built it

  • Frontend – Next.js 15, TailwindCSS, shadcn/ui, SWR hooks, React Context, all inside Bolt.new.
  • Backend – Supabase Auth, Postgres (RLS), Storage, Edge Functions for heavy PDF parsing.
  • AI / Translation – OpenAI GPT-4o for RAG tasks; Lingo.dev for bilingual accuracy.
  • Blockchain – Algorand via Nodely endpoints for immutable attestations.
  • Dev tooling – seed-tenders.js for demo data, CI + snapshot tests to catch React import mishaps.

Challenges we ran into

  • Browser sandbox blocked pdf-parse; fixed by off-loading to a Supabase Edge Function.
  • Duplicate filenames in tender packs; solved with deterministic keys scraper/<tenderId>/<originalName>.
  • A single mis-export of TenderCard crashed the feed minutes before demo; CI now enforces import sanity.
  • Prompt-tuning to stop GPT hallucinations across bilingual procurement jargon.
  • Algorand mainnet deployment didnt work, and we had to revert to our previous build

Accomplishments we’re proud of

  • Turned raw tender folders into structured, AI-ready JSON in under a week.
  • Live eligibility scoring that updates the moment a supplier uploads a new cert.
  • Polished multi-page UI that loads on 3 G—and built entirely in Bolt.
  • Building an industry-ready web app within a month!

What we learned

Grounding prompts with exact snippets kills hallucinations, procurement Malay needs a curated translation corpus, and robust testing saves launches. Most SMEs care less about AI magic than about a verifiable audit trail proving fair evaluation.


What’s next for Tenderly

  1. Nightly full-portal scraper for ePerolehan and state sites.
  2. Evaluator dashboard for side-by-side bid comparison.
  3. Mobile push alerts for tenders that match saved profiles.
  4. RevenueCat paywall for analytics & multi-company workspaces.
  5. Public API so ERP tools can pull tender status and on-chain attestations.

Built With

  • algorand
  • auth
  • bolt.new
  • date-fns
  • docker
  • edge
  • edge-functions)-openai-gpt-4o-for-rag
  • eligibility-scoring-lingo.dev-translation-api-algorand-on-nodely-endpoints-for-notarisation-swr-/-axios-data-fetching-lucide-react-icon-set-date-fns
  • functions
  • gpt-4o
  • lingo.dev
  • lucide-react
  • next.js
  • nodely
  • openai
  • postgresql
  • proposal-drafting
  • react
  • react-hook-form
  • shadcn/ui
  • storage
  • supabase
  • swr
  • tailwindcss
  • zod
Share this project:

Updates