Log time
My schedule
No assignments scheduled nearby.
Costs
Log a cost against a cost type and GL account. Snap a photo of a receipt or invoice and the vendor/amount are read automatically when possible, or enter one without a photo — either way you still pick the cost type and GL account yourself, plus a project and cost code too when the cost type is "Project".
Unfinished — pick a cost type and GL account (plus a project and cost code for "Project" costs) to finish logging these:
| Date | Vendor | Amount | Type | Project | Cost code | GL account | Payment method | Status |
|---|
No pending costs — anything logged here drops off once it's fully approved.
Recent entries
| Date | User | Project | Task | Hours | Description |
|---|
No time entries yet.
Hours summary
| Group | Entries | Total hours |
|---|
Projects
Click a project to see its current stage and workflow.
| Code | Name | Customer | Stage |
|---|
No active projects yet.
Tasks
Tasks are grouped under this project's workflow steps. Give a task an assignee and a date to have it show up on the Schedule automatically.
Photos
← Back to projectUpload from this device or, on a phone, take a new picture directly — each photo needs a name; keywords are optional and only used for search.
No photos yet.
Documents
← Back to projectPlans and specifications live in each employee's own Microsoft 365 account — connect yours below to view or attach files. This app never stores the files themselves, only a link to where they live in SharePoint/OneDrive.
Connect your Microsoft account to view or attach documents for this project.
No documents yet.
| Name | Division / Discipline | Attached by | Date |
|---|
Onboarding checklist
Complete each step below. Fields like SSN and bank account numbers are encrypted and shown masked (••••1234) once saved — use "Reveal" if you need to check what's on file.
1. Personal information
2. Direct deposit
3. Health insurance
4. IRA / retirement
5. Form I-9 (internal copy — Section 1)
This on-screen form is an internal convenience copy only — it is not the official I-9. Federal law requires the actual Form I-9 from uscis.gov, completed and signed. Fill this in for our records, then download, sign, and upload the real form under "Documents" below.
6. Form W-4 (internal copy)
This on-screen form is an internal convenience copy only — it is not the official W-4. Federal law requires the actual Form W-4 from irs.gov, completed and signed. Fill this in for our records, then download, sign, and upload the real form under "Documents" below.
7. Documents
Upload your signed I-9, signed W-4, ID, and anything else onboarding needs. Drag and drop a file, click to browse, or use "Take photo" on a phone/tablet.
Drag & drop a file here, or click to choose one
| Type | File | Uploaded |
|---|
Onboarding review
Visible only to HR Admins. Shows every active employee's onboarding progress; click a name to view their submitted information and documents.
| Employee | Progress |
|---|
Change requests
Once an employee's onboarding is complete, their sections lock against direct self-editing — instead they submit a request here describing what they'd like changed (this is how W-4 updates come in, along with anything else on file).
| Employee | Section | Request | Submitted | Status |
|---|
No change requests yet.
—
Time approvals
Every logged hour charged to one of your projects that hasn't been approved yet, across every employee, sorted by project then cost code. Approving an entry doesn't change anything about it — it just marks it ready to be pulled into payroll processing outside this app.
| Date | Employee | Project | Task | Hours | Description |
|---|
Nothing waiting on your approval.
Expense approvals
Every completed cost charged to one of your projects waits here before Finance can approve it. Click "Review" to see the backup document; "Approve" clears it for Finance — it still won't post to the GL or lock until a Finance Admin approves it there.
| Date | Employee | Vendor | Amount | Project | Cost code |
|---|
Nothing waiting for your approval.
Review cost
PM Home
One project's whole picture at a glance: its own row from the WIP report, the bid-vs-current financial picture below (contract amount, cost estimate, and gross margin, each in original/as-bid and current/as-changed form), what its Contract Amount and Cost Estimate at Completion would become if every PR below were approved, and — in the tabs beneath — its Cost Budget, Contract, Change Orders, PRs, and RFIs.
| Contract | Description | Contract Amount | Est Cost @ Completion | Actual Cost | % Comp | Earned To Date | To Date Billings | Billings Over | Billings Under |
|---|
"Pending" incorporates every PR on the PRs tab below that hasn't been approved yet — see that tab for what each one proposes. "Original" figures are frozen as of this project's own bid being marked Won (see Bidding) — "—" for a project never created that way, since there's no baseline to compare against. Cost Variance vs. Change Orders is Current Cost Estimate minus (Original Cost Estimate plus every change order's own Cost impact, below) — a nonzero number means Cost Budget hasn't moved in step with what's been signed: positive means it grew by more than the change orders account for, negative means it hasn't caught up yet.
Cost Budgets
Track an estimated cost for each cost code on this project. "Current Material Cost" is completed costs (see "Costs" on Home) against that cost code, not counting labor — it's purely a "spent vs. budgeted" gauge and isn't added into Total Cost. "Material Est. Cost" is this cost code's non-labor budget, filled in from the bid when this project was won and editable afterward; "Total Est. Hours" is likewise filled in from that same bid's labor hours for this cost code, and just as editable, with "% Complete" showing Hours Logged over it. Total Cost adds Material Est. Cost to a labor forecast: it starts equal to the bid's own labor dollar estimate, and once 25% of Total Est. Hours have actually been logged, it's recalculated from what that first 25% of hours cost per hour, applied across all of Total Est. Hours — so it stops matching the original bid and starts reflecting real, observed labor cost. Editing Material Est. Cost, Total Est. Hours, or Notes highlights Save below — nothing here saves until you click it, and a short note explaining the change is required first.
| Code | Name | Current Material Cost | Material Est. Cost | Hours logged | Total Est. Hours | % Complete | Total Cost | Notes |
|---|
This project has no cost codes yet — add some from "Manage Projects".
Total cost (Est Cost @ Completion): $0.00 Total spent: $0.00
Change history
Every saved change to this project's cost code budgets, most recent first.
No changes recorded yet.
Contracts — Schedule of Values
Break this project's Contract Amount into a schedule of values — one line per billable chunk of the base contract, plus every change order already on file for this project (added or removed from this project's own Change Orders tab — see that tab for the change-order ledger itself), each tracking a scheduled value and how much has been billed to date. The Schedule of Values' total is compared against the Contract Amount below, but isn't required to match exactly before saving. Editing anything here highlights Save below, and a short note explaining the change is required before it goes through.
| Description | Scheduled Value | % Complete | Billed to Date | Balance to Finish |
|---|
No schedule of values lines yet — add one below.
Change history
Every saved change to this project's Schedule of Values, most recent first.
No changes recorded yet.
Change orders
An itemized ledger of adjustments to this project's contract amount — a deductive change order (reduced scope) is entered as a negative amount. Adding or removing an entry here moves "Contract Amount" above by exactly that amount. Cost impact is separate — how much of this change order affects the cost budget (what it costs to execute), which can differ from what it bills the client; it defaults to $0 and doesn't move any other figure automatically, it's only compared against the live cost estimate in "Cost Variance vs. Change Orders" above. This is the ledger of already-approved change orders — a proposed one still awaiting a Project Manager's sign-off lives on the PRs tab instead.
| Date | Description | Amount | Cost impact | Added by |
|---|
No change orders yet.
PRs (pending change orders)
A proposed change order awaiting approval, with its proposed effect on the Contract Amount and Cost Estimate at Completion. Neither figure moves for real until it's approved (see the "Pending" stats above); approving one turns it into a real, signed change order on this project's own Change Orders tab. Rejecting one just removes it — nothing to undo, since a pending PR never moved anything yet. Type the two dollar amounts directly below for a quick PR, or use Build from costs (or "Assemble costs" on any PR already added) to price it out from cost lines and a Gross Margin instead — the same cost-entry grid Bidding's own Cost Estimate tab uses.
| Description | Proposed Contract impact | Proposed Cost impact | Added by |
|---|
No PRs pending on this project.
Assemble PR costs
Add a line for each cost item, same as Bidding's Cost Estimate tab. Each line's price is cost divided by (1 − Gross Margin), not cost plus a markup — a 15% Gross Margin on $850 of cost prices at $1,000, not $977.50. Cost Code is optional here (a PR doesn't feed its lines into per-cost-code Cost Budgets the way a won bid does).
Tax rate: Total materials cost: $0.00 Total labor hours: 0 Total tax: $0.00
| Description | Qty | Unit cost | Tax | Labor hrs | Cost Code (optional) | Line cost | Line price |
|---|
Total cost: $0.00 Net profit: $0.00
Gross Margin and Proposed Contract Amount are two views of the same number — change either one and the other recalculates from the total cost above (the same "price = cost / (1 − margin)" math every cost line already uses).
Project impact if this PR is approved
Current Contract Amount: — Current Cost Estimate at Completion: — Current Gross Margin: —
Projected Contract Amount: — Projected Cost Estimate at Completion: — Projected Gross Margin: —
RFIs
A question written up for the customer/architect, exportable onto company letterhead as a PDF to actually send. Tracked here with a discussion thread and any uploaded response documents, so everyone with Project Management access can see the question, the discussion, and the answer.
| # | Subject | Status | Created | By |
|---|
No RFIs on this project yet.
New RFI
RFI
Discussion
No discussion yet.
Documents
No documents uploaded yet.
Work In Progress Report
Every active project, grouped by department with subtotals and a grand total. "Est Cost @ Completion" and "Actual Cost" are rolled up from that project's own Cost Budgets (estimated vs. amount spent, across every cost code). "% Comp" (Actual Cost ÷ Est Cost @ Completion), "Earned To Date" (% Comp × Contract Amount), and "Billings Over/Under" (To Date Billings vs. Earned To Date) all auto-calculate. "To Date Billings" is the one number entered by hand here — click it to edit.
| Contract | Description | Contract Amount | Est Cost @ Completion | Actual Cost | % Comp | Earned To Date | To Date Billings | Billings Over | Billings Under |
|---|
No active projects to report on.
Bidding
Set up a prospective project, upload its plans, assemble an estimated cost, and dial in a margin to land on a final bid amount — then generate a bid letter from it. Nothing here is a real tracked project until you mark a bid "Won".
| Name | Category | Client | Status | Gross Margin | Total cost | Bid amount |
|---|
No bids yet — start one above.
Bid
Upload plan sheets or spec excerpts and tag each with a CSI MasterFormat division and/or a discipline, so a big plan set can be filtered down while estimating.
Drag & drop a plan file here, or click to choose one
| Division | Discipline | File | Uploaded |
|---|
No plans uploaded yet.
Add a line for each cost item. Each line's price is cost divided by (1 − Gross Margin), not cost plus a markup — a 15% Gross Margin on $850 of cost prices at $1,000, not $977.50. Set Gross Margin (and see the resulting Bid Amount and LER) at the top of the Bid Letter tab.
Tax rate: Total materials cost: $0.00 Total labor hours: 0 Total tax: $0.00
| Description | Qty | Unit cost | Tax | Labor hrs | Cost Code | Line cost | Line price |
|---|
Total cost: $0.00 Net profit: $0.00 Total bid amount: $0.00
These fields build the bid letter (AUTO uses the Teknik Controls letterhead, ELEC uses Teknik Electric) — edit anything here, then preview before downloading the PDF.
—
Gross Margin and Bid Amount are two views of the same number — change either one and the other recalculates from the Cost Estimate tab's total cost (this is the same "price = cost / (1 − margin)" math every Cost Estimate line already uses). The final bid amount always rounds to the nearest whole dollar and is what's used everywhere — the Cost Estimate tab's totals, the letter, and (if this bid is later marked Won) the new project's contract amount. LER (Labor Efficiency Ratio) is (Gross Profit + Cost of Labor) ÷ Cost of Labor — Teknik-Inc targets around 4.0 for AUTO jobs and 2.5 for ELEC jobs.
Schedule
No assignments nearby (with the current filters).
Click an open spot on the calendar to schedule a task, or click an existing entry to open and edit it.
Manage projects
Add a new project
Existing projects
| Code | Name | Client | Contract amount | Category | Active |
|---|
Unchecking "Active" hides a project from employees — it stops showing up when logging new time or adding cost codes, but past entries against it are unaffected.
Project workflow steps
Choose which of the standard workflow steps (below) apply to a project. A project's workflow page only shows the steps you pick here, in this order.
Configure workflow steps for a project
Standard workflow steps (catalog)
The company-wide list each project picks its steps from (see above). Renaming a step here doesn't change the name already copied onto a project using it.
| Order | Name |
|---|
Add a standard workflow step
Managing the standard cost code catalog itself (adding/removing codes, setting a default GL account) has moved to Settings → Cost Codes. Assigning an existing code onto a project, or adding a one-off custom code for just one project, is still done right here.
Assign cost codes to a project
Assign a standard cost code to a project
Add a custom cost code (specific to one project)
General ledger accounts
The company's chart of accounts — every employee picks from this list when logging a cost on Home (see "Costs"). Click a name to rename it. Editing or removing one here doesn't change costs already tagged with it. Balance is a snapshot from the last trial balance imported, not a live running total — a normal debit balance shows positive, a normal credit balance shows negative (see the Management page's Profit & Loss summary, built from these).
| Code | Name | Account type | Balance |
|---|
Add a GL account
Equipment
The company's equipment list, grouped by category (e.g. "Street Vehicles", "Trailers", "Lifts") — type any category name; it doesn't need to be set up ahead of time. VIN is optional and purely informational. Click a name, category, or VIN to edit it.
| Name | Category | VIN |
|---|
Add equipment
Journal entries
The full double-entry ledger — every approved or corrected cost posts a balanced entry here automatically (debiting its GL account, crediting the payment method used), shown here for a complete audit trail. Any entry, including one posted automatically from a cost, can be edited directly from this list — but editing one doesn't update the cost's own record, so the two can drift out of sync; to keep them matching when what changed is really the cost, correct the cost instead from its GL account register. Every entry's debits and credits must be equal, and greater than zero, before it can be saved. Open an entry's editor to delete or void it: deleting a manual entry removes it completely; voiding any entry (manual or auto-posted) reverses its effect on the GL accounts but keeps it on file, permanently marked "Voided", for audit.
| Date | Memo | Source | Debits | Credits |
|---|
No journal entries yet.
Add journal entry
Voided| GL account | Debit | Credit | Memo |
|---|
Accounts Receivable
The company's customer master list — separate from a project's Client field (Project Admin), which stays a free-text name so a project can be set up before its customer is formally added here. Click "Edit" to open the full record.
| Customer # | Name | Contact | Phone | Account # | Active |
|---|
No customers yet.
No customers match that search.
Add customer
Billing address
Shipping address
Additional addresses
| Label | Address | City | State | Zip | Country |
|---|
Notes
Cost approvals
Every completed cost (see "Costs" on Home) waits here before it counts toward anything — approving one posts its amount onto its GL account's balance (see the Management page's Profit & Loss summary) and locks it from further changes. A cost charged to a project with an assigned Project Manager needs that PM's sign-off first (see Project Management → Expense Approvals) — its "Approve" button here stays disabled until then. Click "Review" to see the backup document and double-check the GL account before approving; "Approve" posts it as-is.
| Date | Employee | Vendor | Amount | Type | Project | Cost code | GL account | Payment method | Status |
|---|
Nothing waiting for approval.
Review cost
Not on file This vendor isn't set up in Accounts Payable yet — add it there, or correct the name here, before this cost can be approved.
Vendors
The company's vendor master list — separate from a cost's Vendor field (Home), which stays a free-text name so a cost can be logged (including auto-filled from a scanned receipt) before its vendor is formally added here. The Home page's Vendor field searches this list as you type, but still accepts a name that isn't set up yet — that cost just gets flagged at approval until the vendor is added here. Click "Edit" to open the full record.
| Vendor # | Name | Contact | Phone | Type | Active |
|---|
No vendors yet.
No vendors match that search.
Open AP
Every cost paid via the Accounts Payable GL account — meaning the vendor hasn't actually been paid yet — grouped by vendor to show what's currently outstanding, and to who. Click a vendor's number or name for its full history, with filters for status, date range, GL account, and project.
| Vendor # | Vendor | Open items | Open amount |
|---|
No open costs on Accounts Payable.
Employees
Full employee master record for payroll/HR reference. Name, address, SSN, and direct deposit info are filled in by the employee through "My Onboarding" and lock against self-editing once onboarding is complete; everything else is entered here directly. SSN and bank account numbers are encrypted and shown masked until revealed. Adding or removing an employee happens from Manage Users — every user account gets one of these records automatically.
| Employee # | Name | Department | Job | PR Group | Hire date | Active |
|---|
No employees yet — add a user from Manage Users.
Employee
Name
First/Middle/Last/Suffix, address, SSN, phone, and emergency contact below come from the employee's own "My Onboarding" submission — editable here as an Admin correction any time.
Address
Contact
Personal
Defaults
Department also sets which Projects tab this employee sees by default when they open the Projects page — they can still switch tabs manually any time. Manage the department list itself from Settings > Departments.
Resident / work office
Current / misc
Standard pay
Equipment / categories
Garnishment allocations
Status
Misc / pay info
Bank name, routing #, account #, and account type come from the employee's own "My Onboarding" submission. Status is set automatically (Active once they've entered account info) but can be corrected here — Pre-Note is a payroll-processing state an Admin sets, not something an employee picks themselves.
GL account register
← Back to Finance| Date | Employee | Vendor | Amount | Type | Project | Cost code | Payment method | Status |
|---|
No entries for this account yet.
Vendor register
← Back to FinanceVendor information
Transactions
| Date | Employee | Amount | Type | Project | Cost code | GL account | Payment method | Status |
|---|
No entries for this vendor yet.
Project cost report
← Back to WIP| Date | Employee | Vendor | Hours | Amount | Type | Cost code | GL account | Payment method | Status |
|---|
No costs entered for this project yet.
Profit & Loss summary
Revenue and expenses across every GL account (see Finance → General ledger accounts), computed from each account's balance. This is a snapshot from the last trial balance imported, not a live running total that updates as costs are logged.
Goals
Nothing here yet.
Issues
Nothing here yet.
Manage users
"Foreman", "HR Admin", and "Project Manager" are separate permissions from Role — they control who can access the Costs card, who can see onboarding data, and who can access Project Management / Schedule, without needing to make someone a full Admin (Admins get all three automatically).
| Name | Role | Foreman | HR Admin | Project Manager | Status |
|---|
Add a new user
Expense types
The "Expense Type" dropdown on the Costs card on Home, Cost Approval, and GL Reclass all pull their options from here. Expense, Project, Equipment, and Other are built in — a "Project" expense is the only kind that shows Project/Cost Code fields, so those 4 can't be renamed or removed, only added to (Subcontract, Warranty, etc.). Unrelated to Cost Types below (Labor/Material, assigned onto Standard Cost Codes) — same idea, different catalog.
| Name |
|---|
Add an expense type
Cost types
Assigned (any number at once) onto Standard Cost Codes below — e.g. CORI (Conduit Rough-in) carries both Labor and Material. Unrelated to Expense Types above (Costs card categorization) — same idea, different catalog. Labor and Material are built in: Log Time depends on Labor always existing, so both can be renamed here but never removed. Add more (Equipment, Subcontract, etc.) as your cost codes need them.
| Name |
|---|
Add a cost type
Standard cost codes
A company-wide catalog you can assign onto any project (see Finance → Project Admin → Cost Codes → "Assign cost codes to a project"). Editing or removing one here doesn't change cost codes already assigned to a project. The default GL account, if set, prefills (but never locks) the GL account when someone picks this cost code on the Costs card on Home — changing it here applies immediately everywhere this cost code is already in use. Cost Types (above) are informational tags on a code — nothing yet requires them to be set.
| Code | Name | Cost Types | Default GL account |
|---|
Add a standard cost code
Departments
Teknik-Inc's lines of business — AUTO and ELEC to start. Used for an employee's Department field, a project or bid's category (and its project-code numbering), the Projects page's department tabs, and the Work In Progress report's department filter. Click a name to rename it. A department can only be removed once no employee or project is still assigned to it.
| Name | Code |
|---|
Add a department
Permission flags
Foreman, HR Admin, and Project Manager are built in — they can be renamed but not deleted, and always keep granting the same underlying account privileges (foreman/HR Admin/PM checkboxes on Manage Users) no matter what they're called here. What's configurable is which pages/tabs a flag's holders can reach — unchecking one here hides that page/tab and blocks the API behind it, but does not take away editing rights someone already has elsewhere (e.g. a real Project Manager can still edit projects on the Projects page even if "Project Management" is unchecked for that flag). You can also add entirely new flags below and grant them whatever combination of pages makes sense — assign people to a custom flag from Manage Users.
Add a permission flag
Finance
The default sales tax rate a brand-new bid starts with on its Cost Estimate tab (Bidding → open a bid → Cost Estimate). Changing it here only affects bids created from now on — an existing bid keeps whatever rate it already has, which can still be changed per bid by clicking the tax rate shown at the top of its own Cost Estimate tab.
New task
Log time for “”
Name this photo
—
Attach a document
Tag this document
Preview
Add vendor
Payment address
Purchasing address
Additional addresses
| Label | Address | City | State | Zip | Country |
|---|
Notes
Edit cost
This permanently erases this cost and every journal entry ever posted for it — the original approval, any corrections, all of it. Nothing is kept for audit, and this cannot be undone. Only use this to clean up a mistake or test entry; to correct a real cost, use the fields above instead, or void its journal entry from Journal entries.