Freight Quote Tool · Implementation Plan
Implementation Plan
How the build was sequenced — the timeline, what was gathered up front, the hour-by-hour build day, and the risks planned for before they happened.
Timeline
| When | What |
|---|---|
| Pre-build | Product requirements + technical design finalized; the preparation request goes to the client. |
| Build day | Two-person build (Nate + Pete together) — sequence below. |
| +1 day | Reserve / overflow. |
| Within the week | If the UPS permission gate isn't cleared on build day, close the live-rate loop async; one batched tweak round after the team uses it. |
| Engagement end | Handoff complete — tool live, seats provisioned, source in a client-reachable repo. |
Preparation (gathered before build day)
A short, organized list, assembled up front so build day starts warm:
- UPS developer access — the app's client ID + secret (or developer-account access to mint our own), with the Rating API product enabled and the negotiated-rate account linked to the app. (This is the permission the original prototype's rating call hadn't yet cleared — if it's hard to find, it gets fixed together in a scheduled hour.)
- The current SAGE catalog export (
.xlsx), plus confirmation that the column mapping still holds. - User list — the ~5 email addresses that get access, and which of them get the admin / catalog-upload role.
- A few known-good real quotes — recent examples (part #, quantity, ZIP, residential/commercial) with the rate actually received, so the tool's numbers can be validated against real ones, not just against UPS.
- One scheduled working hour — screen share or on-site, for the credential/permission work and anything only the client can click.
- Hosting account — if hosting client-owned from the start, a free Cloudflare account on a client-controlled email, with us added to configure everything (the client never has to touch it).
- A smoke-test set of the most-quoted part numbers, plus an example no-dimensions (crystal) item for manual mode.
Build-day plan
- Hour 1 — the gate. OAuth token + one live rate call confirming negotiated rates are present, from a real network. If blocked: don't burn the day on carrier support — build everything against a stubbed rate call and close the UPS loop async within the week.
- Worker skeleton + Access gating live at a real URL.
- Catalog upload → database → item lookup → carton math.
- End-to-end quote flow (item-lookup mode + manual carton-specs mode); a UI pass mapping what the team actually does to the interface.
- Ship; collect the tweak list in one batch later — no redesign loop.
Post-build
- Provision the ~5 seats in Cloudflare Access; confirm the session length feels right.
- One batched tweak round after real use ("use it a little, and if you have any tweaks, we'll take them once").
- Validate a week of real quotes against expectations; revisit the quote-log decision only if someone actually misses it.
- Source-handoff posture: private repo, client-reachable on request — you get the source and keep running.
Risks & contingencies
- UPS permission can't be resolved in the hour → the stubbed-rate build ships anyway; live rates land async within the week. The day still ends with the team seeing their tool.
- Negotiated rates absent from responses (an account-linking quirk) → published rates shown with a visible marker; never silent.
- Catalog export drift (columns moved) → the upload parser validates headers and says exactly what's wrong instead of ingesting bad data.
- Scope creep → the cut list in the requirements is the contract; anything new goes to the tweak round or a separate conversation.