Dashboard
IT equipment ordering, tracking, and billing.
Recent Purchase Orders
| Date / Order | Vendor | Client | Total | Status |
|---|---|---|---|---|
No purchase orders yet.
Order Requests
Device requests awaiting ordering.
| Device | Client / Location | Qty | Ticket # | Requested by | Status | Date | |
|---|---|---|---|---|---|---|---|
Purchase Orders
| Date / Items | Vendor | Order # | Client | Ticket # | Total | Status | |
|---|---|---|---|---|---|---|---|
|
|
|||||||
Inventory
| { invBulkSelected = e.target.checked ? filteredInventory.map(i=>i.id) : [] }"/> | Device | Units | Status breakdown | Physical Location | Total value |
|---|---|---|---|---|---|
|
{
const ids = groupedInventoryRows.filter(r=>r._type==='item'&&r._group===row.device).map(r=>r.id);
invBulkSelected = e.target.checked ? [...new Set([...invBulkSelected, ...ids])] : invBulkSelected.filter(id=>!ids.includes(id));
if(e.target.checked && !invExpandedGroups[row.device]) invExpandedGroups = {...invExpandedGroups, [row.device]: true};
}"/>
{ invBulkSelected = e.target.checked ? [...invBulkSelected, row.id] : invBulkSelected.filter(id=>id!==row.id) }"/>
|
|
|
|
|
| { const ids = vsInvResult.rows.map(r=>r.id); invBulkSelected = e.target.checked ? [...new Set([...invBulkSelected, ...ids])] : invBulkSelected.filter(id => !ids.includes(id)) }"/> | Serial | Device | Client / Location | Vendor / PO | Cost | Ticket # | Received | Location | Status | |
|---|---|---|---|---|---|---|---|---|---|---|
| { invBulkSelected = e.target.checked ? [...invBulkSelected, item.id] : invBulkSelected.filter(id => id !== item.id) }"/> |
|
— |
|
|
||||||
Device
Specifications
Provenance
Lifecycle
In stock and available to deploy.
Deployed to .
Deployed and billed.
Setup
Deploy Unit
Deployments
Group in-stock units by client/location, then complete to push to billing.
New Deployment
| Client / Location | Ticket # | Units | Started | |
|---|---|---|---|---|
|
|
| Client / Location | Ticket # | Units | Total | Completed | |
|---|---|---|---|---|---|
Add in-stock units
Shipping & notes
History
Work Orders
| WO # | Title | Location | Scheduled | Pay | Status | Tech | |
|---|---|---|---|---|---|---|---|
| Open ↗ |
Projects
Bill of materials per client site or engagement.
| Project / Device | Client / Qty | Status / Cost | Items / Total | Progress / Notes | ||
|---|---|---|---|---|---|---|
|
|
of
|
$
$
|
|
✓ Saved
|
No projects yet.
Bill of Materials
| Device | Qty Needed | Fulfilled | Unit Cost | Total | Notes | |
|---|---|---|---|---|---|---|
|
|
hrs
|
hrs
|
||||
| No items yet. Add one below. | ||||||
Add Item
Billing
Monthly services and equipment billing.
| Short Name | Service Line Item | Last Billed | Live Count | Delta |
|---|---|---|---|---|
| No line items. Click Edit to add services. | ||||
| Short Name | Service Line Item | Last Billed | Live Count | |
|---|---|---|---|---|
Push to SharePoint
Push History
| Period | Units | Total | Date |
|---|---|---|---|
Scan Serial Numbers
Point camera at barcode. Each scan fills the next empty serial slot.
Settings
Manage clients, catalog, templates, and integrations.
Clients & Locations
Click a client row to view its locations.
Vendors
Master vendor list — populates the vendor field on all purchase orders.
Device Types
Inventory device catalog — populates device autocomplete and price auto-fill.
PO Catalog
Common items that auto-fill on purchase orders.
| Product Name | Vendor | Default Unit Cost | |
|---|---|---|---|
Labor Rates
Default hourly rates auto-filled when adding Tech Time to a PO.
| Role | Default Hourly Rate |
|---|---|
| Network Engineer |
$
/hr
|
| IT Technician |
$
/hr
|
Freshservice Integration
Enables real-time ticket lookup and auto-posting a private note to tickets when a PO is saved.
Claude AI
Required for AI invoice analysis on purchase orders. Get an API key at console.anthropic.com.
Field Nation Integration
Connect to Field Nation to manage work orders. Credentials are stored encrypted.
Credentials are obtained by requesting API access from Field Nation. See developer.fieldnation.com.
Device Templates
Reusable device presets. Use "+ Add from template" when creating a PO to pre-fill a line item.
Stock Labels
Generate sheets of unique 4-character codes for non-serialized accessories. Print and stick on items — scan the code as the serial number when receiving.
Recent Batches
Activity Log
Users
All accounts with access to FORTE. Each user can set their own Freshservice API key so notes are posted under their name.
My Profile
Leave blank to fall back to the global Freshservice key in Settings → Freshservice.
FORTE
Fleet · Orders · Resources · Tracking · Equipment
FORTE is an internal operations tool built for A Sharp Consulting to manage the full lifecycle of client hardware — from purchase order to deployment.
The name is both an acronym and a philosophy. Forte (Italian: loud, strong) — in music, a direction to play with power and confidence. That's the intent: give the team a strong, capable tool that keeps nothing hidden.
Billing Export — SharePoint
Push deployments directly to your SharePoint billing spreadsheet via Microsoft Graph API. Requires an Azure App Registration with Sites.ReadWrite.All permission.
Azure App Registration
SharePoint File
Tables found in workbook:
Click a table name to use it.
Need help setting this up? See the Azure App Registration guide. Grant Sites.ReadWrite.All as an Application permission, then grant admin consent.