Access bid documents for active TekTone Builders commercial projects. View open opportunities below - then enter your access code to download plans - specs - and addenda.
Click a project to access bid documents. An access code is required for each project. Don't have one? Request one below.
Loading active bids...
Just a moment while we pull the latest bid opportunities.
How It Works
Three steps from invitation to download. Built for subs who'd rather be on the job than hunting for documents.
1
Find Your Project
Browse open bid opportunities above. Each card lists the project type - location - and bid deadline.
2
Enter Your Access Code
Click into a project. Enter the access code TekTone provided when you were invited to bid.
3
Download What You Need
Plans - specs - addenda - and bid forms. Download what applies to your scope. Submit your proposal before the deadline.
Need an Access Code?
If you've been invited to bid on a TekTone Builders project and don't have your access code - or if you'd like to be considered for an upcoming bid - reach out and we'll get you set up.
(function () {
var nav = document.querySelector('.tk-nav');
if (!nav) return;
var hamburger = nav.querySelector('.tk-nav-hamburger');
var menu = nav.querySelector('.tk-nav-menu');
var backdrop = nav.querySelector('.tk-nav-backdrop');
var subToggles = nav.querySelectorAll('.tk-nav-sub-toggle');
function openMenu() {
hamburger.setAttribute('aria-expanded', 'true');
hamburger.setAttribute('aria-label', 'Close navigation menu');
menu.setAttribute('data-open', 'true');
backdrop.setAttribute('data-open', 'true');
document.body.classList.add('tk-nav-open');
}
function closeMenu() {
hamburger.setAttribute('aria-expanded', 'false');
hamburger.setAttribute('aria-label', 'Open navigation menu');
menu.removeAttribute('data-open');
backdrop.removeAttribute('data-open');
document.body.classList.remove('tk-nav-open');
// Collapse any open submenus
subToggles.forEach(function (toggle) {
toggle.setAttribute('aria-expanded', 'false');
var subId = toggle.getAttribute('aria-controls');
if (subId) {
var sub = document.getElementById(subId);
if (sub) sub.removeAttribute('data-expanded');
}
});
}
hamburger.addEventListener('click', function () {
var isOpen = hamburger.getAttribute('aria-expanded') === 'true';
if (isOpen) { closeMenu(); } else { openMenu(); }
});
backdrop.addEventListener('click', closeMenu);
// Escape key closes mobile menu
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape' && hamburger.getAttribute('aria-expanded') === 'true') {
closeMenu();
hamburger.focus();
}
});
// Services submenu toggles (mobile)
subToggles.forEach(function (toggle) {
toggle.addEventListener('click', function () {
var isExpanded = toggle.getAttribute('aria-expanded') === 'true';
toggle.setAttribute('aria-expanded', String(!isExpanded));
var subId = toggle.getAttribute('aria-controls');
if (subId) {
var sub = document.getElementById(subId);
if (sub) {
if (isExpanded) { sub.removeAttribute('data-expanded'); }
else { sub.setAttribute('data-expanded', 'true'); }
}
}
});
});
// Auto-close mobile menu if viewport resized back to desktop
var resizeTimer;
window.addEventListener('resize', function () {
clearTimeout(resizeTimer);
resizeTimer = setTimeout(function () {
if (window.innerWidth > 1024 && hamburger.getAttribute('aria-expanded') === 'true') {
closeMenu();
}
}, 150);
});
})();
(function() {
'use strict';
// ============================================================
// CONFIG - PASTE YOUR GOOGLE SHEET CSV URL HERE
// ============================================================
// To get the URL:
// 1. Open the Google Sheet
// 2. File > Share > Publish to web
// 3. Choose "Comma-separated values (.csv)"
// 4. Click Publish, copy the URL, paste below
var GOOGLE_SHEET_CSV_URL = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vTuGpesWJyEgVMdjI26xvDHutqkmmC4DJbE7YpqiYoJRSHa7zE-4JWXD0R4vKzsO6IYvuJPPK9T6hLh/pub?output=csv';
// Expected CSV column order (must match Google Sheet):
// status, project_name, project_type, location, bid_due, walk_through,
// trades, description, page_url
// (header row required as row 1)
// ============================================================
// SIMPLE CSV PARSER (handles quoted fields with commas)
// ============================================================
function parseCSV(text) {
var lines = [];
var current = '';
var inQuotes = false;
var i;
for (i = 0; i < text.length; i++) {
var ch = text[i];
if (ch === '"') {
inQuotes = !inQuotes;
current += ch;
} else if (ch === '\n' && !inQuotes) {
lines.push(current);
current = '';
} else if (ch === '\r' && !inQuotes) {
continue;
} else {
current += ch;
}
}
if (current.length) lines.push(current);
return lines.map(function(line) {
var fields = [];
var field = '';
var quoted = false;
for (var j = 0; j < line.length; j++) {
var c = line[j];
if (c === '"') {
if (quoted && line[j+1] === '"') {
field += '"';
j++;
} else {
quoted = !quoted;
}
} else if (c === ',' && !quoted) {
fields.push(field);
field = '';
} else {
field += c;
}
}
fields.push(field);
return fields;
});
}
function rowsToObjects(rows) {
if (rows.length < 2) return [];
var headers = rows[0].map(function(h) {
return h.trim().toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '');
});
return rows.slice(1).map(function(row) {
var obj = {};
headers.forEach(function(h, idx) {
obj[h] = (row[idx] || '').trim();
});
return obj;
}).filter(function(obj) {
return obj.project_name && obj.project_name.length > 0;
});
}
// ============================================================
// ESCAPE HTML
// ============================================================
function esc(s) {
if (s == null) return '';
return String(s)
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
// ============================================================
// RENDER BID CARDS
// ============================================================
function renderBids(bids) {
var grid = document.getElementById('tkbpr-bid-grid');
if (!grid) return;
// Filter to active bids only (Open or Closing Soon)
var active = bids.filter(function(b) {
var s = (b.status || '').toLowerCase();
return s === 'open' || s === 'closing soon' || s === 'closing';
});
if (active.length === 0) {
grid.innerHTML =
'<div class="tkbpr-state">' +
'<h3>No active bid opportunities right now</h3>' +
'<p>Check back soon - or call our office to be considered for upcoming work.</p> ' +
'</div>';
return;
}
grid.innerHTML = active.map(function(b) {
var statusLower = (b.status || '').toLowerCase();
var statusClass = statusLower === 'open' ? 'open'
: statusLower.indexOf('closing') >= 0 ? 'closing'
: 'closed';
var pageUrl = b.page_url || '#';
// Resolve fields from either the descriptive form-question headers
// or the shorter names - whichever the sheet uses.
var location = b.location_city_state || b.location || '';
var bidDue = b.bid_due || b.bid_due_date_and_time || '';
var walkThrough = b.walk_through_date_and_time || b.walk_through || '';
var trades = b.trades_welcome || b.trades || '';
var description = b.brief_description || b.description || '';
return '' +
'<article class="tkbpr-bid-card">' +
'<span class="tkbpr-bid-status ' + statusClass + '">' + esc(b.status) + '</span>' +
(b.project_type ? '<div class="tkbpr-bid-type">' + esc(b.project_type) + '</div>' : '') +
'<h3>' + esc(b.project_name) + '</h3>' +
'<dl class="tkbpr-bid-meta">' +
(location ? '<dt>Location</dt><dd>' + esc(location) + '</dd>' : '') +
(bidDue ? '<dt>Bid Due</dt><dd>' + esc(bidDue) + '</dd>' : '') +
(walkThrough ? '<dt>Walk-Through</dt><dd>' + esc(walkThrough) + '</dd>' : '') +
(trades ? '<dt>Trades</dt><dd>' + esc(trades) + '</dd>' : '') +
'</dl>' +
(description ? '<p class="tkbpr-bid-desc">' + esc(description) + '</p> ' : '') +
'<a href="' + esc(pageUrl) + '" class="tkbpr-bid-cta">Access Documents' +
'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">' +
'<path d="M5 12h14M12 5l7 7-7 7"/>' +
'</svg>' +
'</a>' +
'</article>';
}).join('');
}
// ============================================================
// FETCH AND POPULATE
// ============================================================
function loadBids() {
var grid = document.getElementById('tkbpr-bid-grid');
if (!grid) return;
if (!GOOGLE_SHEET_CSV_URL || GOOGLE_SHEET_CSV_URL === 'PASTE_PUBLISHED_CSV_URL_HERE') {
grid.innerHTML =
'<div class="tkbpr-state">' +
'<h3>Bid feed not configured</h3>' +
'<p>The Google Sheet CSV URL has not been set yet. See the setup guide.</p> ' +
'</div>';
return;
}
fetch(GOOGLE_SHEET_CSV_URL, { cache: 'no-store' })
.then(function(res) {
if (!res.ok) throw new Error('Failed to fetch bid data: ' + res.status);
return res.text();
})
.then(function(csv) {
var rows = parseCSV(csv);
var bids = rowsToObjects(rows);
renderBids(bids);
})
.catch(function(err) {
console.error('TekTone bid feed error:', err);
grid.innerHTML =
'<div class="tkbpr-state">' +
'<h3>Unable to load current bids</h3>' +
'<p>Please refresh the page or call (918) 695-9461 for current opportunities.</p> ' +
'</div>';
});
}
// ============================================================
// INIT
// ============================================================
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', loadBids);
} else {
loadBids();
}
})();
var wpilFrontend = {"ajaxUrl":"/wp-admin/admin-ajax.php","postId":"587","postType":"post","openInternalInNewTab":"0","openExternalInNewTab":"1","disableClicks":"0","openLinksWithJS":"0","trackAllElementClicks":"1","clicksI18n":{"imageNoText":"Image in link: No Text","imageText":"Image Title: ","noText":"No Anchor Text Found"}};
//# sourceURL=wpil-frontend-script-js-extra
var DIVI = {"item_count":"%d Item","items_count":"%d Items"};
var et_builder_utils_params = {"condition":{"diviTheme":true,"extraTheme":false},"scrollLocations":["app","top"],"builderScrollLocations":{"desktop":"app","tablet":"app","phone":"app"},"onloadScrollLocation":"app","builderType":"fe"};
var et_frontend_scripts = {"builderCssContainerPrefix":"#et-boc","builderCssLayoutPrefix":"#et-boc .et-l"};
var et_pb_custom = {"ajaxurl":"https://tektonebuilders.com/wp-admin/admin-ajax.php","images_uri":"https://tektonebuilders.com/wp-content/themes/Divi/images","builder_images_uri":"https://tektonebuilders.com/wp-content/themes/Divi/includes/builder/images","et_frontend_nonce":"3734b91bd8","subscription_failed":"Please, check the fields below to make sure you entered the correct information.","et_ab_log_nonce":"cb916077c6","fill_message":"Please, fill in the following fields:","contact_error_message":"Please, fix the following errors:","invalid":"Invalid email","captcha":"Captcha","prev":"Prev","previous":"Previous","next":"Next","wrong_captcha":"You entered the wrong number in captcha.","wrong_checkbox":"Checkbox","ignore_waypoints":"no","is_divi_theme_used":"1","widget_search_selector":".widget_search","ab_tests":[],"is_ab_testing_active":"","page_id":"587","unique_test_id":"","ab_bounce_rate":"5","is_cache_plugin_active":"yes","is_shortcode_tracking":"","tinymce_uri":"https://tektonebuilders.com/wp-content/themes/Divi/includes/builder/frontend-builder/assets/vendors","accent_color":"#7EBEC5","waypoints_options":[]};
var et_pb_box_shadow_elements = [];
//# sourceURL=divi-custom-script-js-extra