Skip to content

Bid Proposal Manual

Introduction

Welcome to the Bid Proposal team!

We are the sharp blade of an axe. We amplify the efforts put in and crack open hard deals. We are always at the front line, taking initiatives, sharp, alert, focused and quick to respond.

axe

Bid Proposal Process

  • ITB: Invitation To Bid (From Customer)
  • RFQ: Request For Quotation
  • RFI: Request For Information
  • BP: Bid Proposal
  • SS: Sales Support
  • VQ: Vendor Qualification (Require when the supplier is new and the value is substantial.)

(A) Bid Initiating Phase

flowchart TB
    a(["(A) Start"])
    itb([ITB])
    evaluate{"Evaluate<br/>ITB"}
    itb-registered{"ITB<br/>Registered"}
    register-itb("Request to Register/<br/>Register ITB")

    a --> itb
    itb --> evaluate
    evaluate --> |Go| itb-registered
    itb-registered -->|No| register-itb
    register-itb --> itb-registered

    sales-checklist{"Received<br/>Sales Checklist"}
    request-sc("Request<br/>Sales Checklist")
    initiate("Initalize Project<br/><tt>bid init</tt>")
    organize("Organize<br/>ITB Documents")

    itb-registered -->|Yes| sales-checklist
    sales-checklist -->|No| request-sc
    request-sc --> sales-checklist
    inform("Inform<br/>Sales/Customer")

    itb-registered -->|Yes| initiate

    evaluate -->|No-go| inform
    inform --> End([End])

    b2((B))
    b((B))
    study(Study Deatiled<br/>Project Requirements)
    enough-partial-info{"Enough Partial Info to<br/>Liaise with Suppliers"}
    required-clarification{"`Require<br/> **Initial** Clarification<br/>or Additional Info`"}
    send-rfi("Send RFI/Clarification<br/>to Customer")

    sales-checklist --> |Yes| organize
    initiate --> organize
    organize --> study
    study --> required-clarification
    required-clarification --> |Yes| enough-partial-info
    enough-partial-info --> |Yes| b
    enough-partial-info --> |Yes/No| send-rfi
    send-rfi --> required-clarification
    required-clarification ---> |No| b2

    click sales-checklist "https://egg.posonekyu.com/bid-proposal/sample-sales-checklist-r0.pdf"

(B) Supplier RFQ Phase

flowchart TB
    b(("B"))
    b2((B))
    b3((B))
    drop([Drop])
    send-rfq("Send RFQ/RFI to Suppliers<br/>or Price Negotiation with Suppliers")
    require-clarification-s{"Require<br/>Clarification<br/>or Additional<br/>Info"}
    received-rfq{"Received<br/>Quotation or<br/>Information"}
    meet-specs{"Meet<br/>Requirement<br/>Specs"}
    try{"Tries <= 3"}
    is-critical-supplier{"Is Critical<br/>Supplier"}
    inform("Inform<br/>Sales/Customer")
    inform2("Inform<br/>Sales/Customer")
    chase("Chase<br/>Supplier")
    End([End])
    End2([End])
    drop2([Drop])
    negotiate{"Right Time to<br/>Negotiate Price"}
    new-supplier{Is New Supplier}
    require-vq{Require VQ}
    vq(Engage Purchasing<br/>for Vendor Qualification)
    price-negotiated{Price<br/>Negotiated}
    make-request("Make Request<br/> & Negotiate")
    c((C))
    has-alternate-s{"Has Alternative<br/>Supplier"}
    is-critical-requirement{"Is Critical<br/>System<br/>Requirement"}

    b --> send-rfq
    send-rfq --> received-rfq
    received-rfq --> |Yes| require-clarification-s
    require-clarification-s --> |Yes| send-rfq
    received-rfq --> |"No<br/>Not In-Time"| is-critical-supplier
    is-critical-supplier --> |Yes| try
    is-critical-supplier --> |No| drop
    try --> |Yes| chase
    try --> |No| inform
    inform --> End
    chase --> received-rfq
    require-clarification-s --> |No| meet-specs
    meet-specs --> |No| is-critical-requirement
    meet-specs --> |Yes| new-supplier
    new-supplier --> |No| price-negotiated
    new-supplier --> |Yes| require-vq
    require-vq --> |Yes| vq
    require-vq --> |No| price-negotiated
    vq --> price-negotiated
    negotiate --> |No| c
    price-negotiated --> |Yes| c
    price-negotiated --> |No| negotiate
    negotiate --> |Yes| make-request
    make-request --> b2
    is-critical-requirement --> |No| drop2
    is-critical-requirement --> |Yes| has-alternate-s
    has-alternate-s --> |Yes| b3
    has-alternate-s --> |No| inform2
    inform2 --> End2

    click vq "https://egg.posonekyu.com/bid-proposal/jason-vendor-qualification-form-r4-2023-07-14.docx"

(C) Bid Compilation Phase

flowchart TB
    c((C))
    compile-proposal("Compile Into Main Proposal")
    proposal-completed{"Proposal Completed"}
    has-enough-time{"Has Enough Time"}
    has-historical-data{"Has Historical Data"}
    request-extension("Request ITB Extension")
    allow-partial-submission{"Partial<br/>Submission<br/>Allowed"}
    seek-consensus("Seek Internal Consensus<br/>to Drop ITB")
    send-review("`Internal Review`")
    approved{"Approved"}
    revise-proposal("Revise Proposal")
    extension-granted{"Extension<br/>Granted"}
    prepare-docs("Generate & Prepare<br/>Necessary Docs")
    inform("Inform<br/>Sales/Customer")
    c1((C1))
    c11((C1))
    d((D))
    b2((B))
    End([End])
    b((B))
    project-phase{"Porject Phase"}
    e1((E1))

    c --> compile-proposal
    compile-proposal --> proposal-completed
    proposal-completed --> |Yes| c1
    c1 --> send-review
    send-review --> approved
    approved --> |Yes| prepare-docs
    prepare-docs --> project-phase
    project-phase --> |Submission| d
    project-phase --> |Clarification| e1
    approved --> |No| revise-proposal
    revise-proposal --> send-review
    has-enough-time --> |Yes| b
    proposal-completed --> |No| has-enough-time
    request-extension --> extension-granted
    has-historical-data --> |Yes| compile-proposal
    has-enough-time --> |No| has-historical-data
    has-historical-data --> |No| request-extension
    extension-granted --> |No| allow-partial-submission
    allow-partial-submission --> |Yes| c11
    allow-partial-submission --> |No| seek-consensus
    extension-granted --> |Yes| b2
    seek-consensus --> inform
    inform --> End

(D) Bid Submission Phase

flowchart TB
    d((D))
    send-for-commercial("Send for<br/>Commercial Review")
    %% Sales, BP, SS
    submission-by{"Submission By"}
    %% Direct, Portal
    submission-mode{"Submission Mode"}
    submit-via-email("Submit Via Email")
    submit-via-portal("Submit Via Portal")
    inform("Inform Customer")
    include-pdf("Include Required Files<br/>in Commercial Review Itself<br/>or Give These Separately<br/>to Submit")
    e((E))

    d --> send-for-commercial
    send-for-commercial --> submission-by
    submission-by --> |BP| submission-mode
    submission-mode --> |Direct| submit-via-email
    submit-via-email --> e
    submission-mode --> |Portal| submit-via-portal
    submit-via-portal --> inform
    inform --> e
    submission-by --> |SS| include-pdf
    submission-by --> |Sales| e
    include-pdf --> e

(E) Bid Clarification Phase

flowchart TB
    e((E))
    receive-response{"Receive Customer Response"}
    proposal-type{"Proposal Type"}
    pass-time{"Sufficient Time<br/>Has Elapsed"}
    wait("Wait")
    response-type{"Response Type"}
    work-with-sales("Work Together<br/>with Sales")
    require-clarification-s{"Required<br/>Clarification<br/>with Suppliers"}
    prepare-docs("Prepare<br/>Necessary Docs")
    b((B))
    d((D))
    mark-lost("Mark Project Lost")
    End1([End])
    tries{"Tries <= 3"}
    End2([End])
    chase("Chase<br/>Sales/Customer")
    f((F))
    e1((E1))
    e2((E))


    e --> receive-response
    tries --> |Yes| chase
    receive-response --> |No| pass-time
    wait --> pass-time
    pass-time --> |Yes| proposal-type
    pass-time --> |No| wait
    proposal-type --> |Budgetary| End1
    proposal-type --> |Firmed| tries
    tries --> |No| mark-lost
    mark-lost --> End2
    chase --> e2
    receive-response --> |Yes| response-type
    response-type --> |Lost| mark-lost
    response-type --> |Commercial<br/>Clarification| work-with-sales
    response-type --> |Tecnical<br/>Clarification| e1
    e1 --> require-clarification-s
    require-clarification-s --> |No| prepare-docs
    require-clarification-s --> |Yes| b
    work-with-sales --> prepare-docs
    prepare-docs --> d
    response-type --> |PO<br/>Contract| f

(F) Bid Handover Phase

flowchart TB
    f((F))
    check-po(Check PO or Contract)
    po-correct{PO Correct}
    highlight-discrepancies(Highlight Discrepancies in<br/>PO or Contract Document)
    inform(Inform Sales, SS or Customer)
    mark-won(Mark Project Won)
    handover("Handover Project by Following Handover Checklist")
    attend-internal(Attend Internal KOM)
    attend-external(Attend External KOM)
    End([End])

    f --> check-po
    check-po --> po-correct
    po-correct --> |No| highlight-discrepancies
    highlight-discrepancies --> inform
    inform --> check-po
    po-correct --> |Yes| mark-won
    mark-won --> handover
    handover --> attend-internal
    attend-internal --> attend-external
    attend-external --> End

    click handover "https://egg.posonekyu.com/bid-proposal/sample_handover_checklist_r3.pdf"

Proposal File Versioning

  • Budgetary: As long as the client we are quoting to does not have the project in hand themselves, it will be treated as budgetary.
  • Firmed: The client has the project in hand and is looking for actual purchase.
  • VO: Variation Order for the project we have already won.
  • Major Revision: It means there is any kind of change in selling price. If in doubt, use major revision. Major revision requires updating changes in color that correspondances to the revision number.
  • Minor Revision: It means there is no change in price and that the change is only technical or re-arrangement of items. The color for the changes remains as per the current revision number.
flowchart TB
    s([Start])
    proposal-type{Proposal Type}
    budgetary("`Code **B** Suffix<br/>File Name with B0, B1, B2...
    **B** code starts count from **0**`")
    revision-type{Revision Type}
    first-submission("`Code **R** Suffix<br/>Very First Submission<br/>**R0**. if VO, **V1-R0**`")
    major-revision("`Update **R** number<br/>e.g. **R1, R2**...,<br/>if VO, **V1-R1, V3-R1**, ...
    Revision Color Update Required`")
    minor-revision("`Append '.' & sub-number after major-revision e.g. **R0.1, R2.2** ...,
    if VO, **V1-R0.1, V2-R1.2**,...
    Revision Color Update **Not** Required`")
    vo("`Code **V** Suffix<br/>File Name with V1, V2, V3... followed by hyphen**(-)**
    e.g. **V1-, V2-**
    **V** code starts count from **1**<br/>`")
    End([End])

    s --> proposal-type
    proposal-type --> |Budgetary| budgetary
    proposal-type --> |Firmed| revision-type
    proposal-type --> |VO| vo
    revision-type --> |First| first-submission
    revision-type --> |"Major<br/>(Selling Price Change)"| major-revision
    revision-type --> |"Minor<br/>(No Selling Price Change)"| minor-revision
    vo --> revision-type
    budgetary & first-submission & major-revision & minor-revision --> End

The revision without the minor revision number, e.g. R0, V2-R1, etc., is implicitly considered to be of minor revision "0". This means R0=R0.0, V1-R0=V1-R0.0, etc. Therefore, when a minor revision is carried out, the count starts from 1.

For MODEC/OFS Budgetary Proposals

They do not accept if we put in as Budgetary Proposal in the cover page. In this case, in the cover page we can put in Commercial Proposal. However, file version to remain Code B.

Item Removal Using Negative Quantity

Overview

Items can be removed from a revision using a negative quantity in the Qty column. This is the recommended approach when submitting a revised proposal where a client has requested removal of a previously quoted item. It provides a clear visual signal (the negative number) and produces correct financial calculations.

The alternative is the REMOVED scope keyword. Both approaches produce identical lot prices and financial figures — the choice is a matter of preference for how the removal is communicated.


When to Use Each Approach

Approach Use when
Negative Qty You want to signal removal with a visible number (e.g. -1 lot, -6 ea). The item stays in the BoM as a clear record.
REMOVED keyword (Scope column) You prefer a text label. The item's price and cost cells go blank; only the REMOVED tag is visible.

Both approaches produce the same lot price, TCDQL, BTCQL, TSPL, TP, and TM at the sheet subtotal level.


How to Apply Negative Quantity

Full system or lot removal

Set the Title row Qty to negative. Leave all sub-items at their original positive quantities.

9   PROGRAMMING KIT    -1   lot   ...
  1   Programming USB Cable For R7Ex     6   ea
  2   Programming USB Cable For DM       6   ea
  3   Programming USB Cable For DP       6   ea

The lot price and all financial columns (TCDQL, TSPL, TP, TM) automatically go negative, correctly reflecting the credit back to the client.

Partial removal — one sub-item within a retained lot

Set the sub-item (Lineitem) row Qty to negative. Leave the Title row at its original positive quantity.

9   PROGRAMMING KIT    1   lot   ...
  1   Programming USB Cable For R7Ex    -6   ea   ← removed
  2   Programming USB Cable For DM       6   ea
  3   Programming USB Cable For DP       6   ea

The lot price automatically adjusts downward to reflect only the remaining positive-quantity items. The removed sub-item shows as a line with a negative number — no price is displayed for it (it remains in Lumpsum format like the other sub-items).

Set-based items

Same rules apply. Negate the Title row to remove the whole set, or negate a sub-item to remove that component from a retained set.


Financial Impact

Full lot/set removal (negative Title qty)

All financial columns on the Title row go negative:

Column Effect
G (Subtotal Price) Negative — the credit amount shown to the client
TCDQL Negative — material cost credit
BTCQL Negative — base cost credit
TSPL Negative — selling price credit
TP Negative — profit credit
TM (GM%) Shows the item's original margin % (informative — signals what was given up)

The sheet Subtotal row aggregates all of these correctly. The project-level GM recalculates to reflect the net position after removal.

Sub-item removal (negative Lineitem qty)

The lot Title's financial figures reduce proportionally:

Column Effect
G (Subtotal Price, lot Title) Reduced — reflects remaining items only
TCDQL, BTCQL, TSPL, TP Reduced accordingly
TM (GM%) Recalculates based on the revised lot figures

Rules and Constraints

  1. Never negate both the Title and a sub-item within the same lot. If the Title is already negative (whole lot removed), negating a sub-item within it is meaningless — the sub-item is already excluded by the Title's negative quantity. The result is undefined and should be avoided.

  2. Sub-item negative qty is equivalent to REMOVED for financial purposes. The lot price, cost, and selling price figures are identical whether a sub-item is marked REMOVED or set to a negative quantity. The only difference is visual.

  3. Positive sub-item quantities are not affected. When you negate a sub-item, all other sub-items in the same lot continue to contribute normally to the lot price.

  4. The lot price cannot go negative through sub-item negation. Because negative sub-items are excluded from the lot price calculation, the displayed lot price always reflects the sum of the remaining positive-quantity items only. (Note: negating the Title row of a lot can produce a negative lot total — this is intentional and represents a credit.)


Gross Margin on Removed Items

When the Title row is negated (full removal), the TM column shows the same margin percentage as the original item. This is correct: the percentage reflects the item's inherent profitability, which is unchanged by the removal. The sheet-level subtotal GM is the figure to watch — it recalculates to the correct net margin across all remaining and removed items.

When a sub-item is negated (partial removal), the lot's TM recalculates based on the revised lot figures.


Summary of Scope Keywords

For reference, all scope keywords and their effect on pricing:

Scope Price shown Included in totals
(blank) Yes Yes
OPTION Yes No
INCLUDED No Yes (cost only)
WAIVED No Yes (cost only)
TBA No No
REMOVED No No
Negative Qty No (sub-item) / Negative (Title) Yes (as credit)