Track every laptop, license and who has it right now

By General Input

One register for every piece of equipment and every software seat, with a dated record of who had what, so nothing depends on a shared spreadsheet again.

Integrations

  • General Input Database
  • Slack Bot
  • Google Sheets

Type

App

Categories

  • Operations
  • Finance

I want an app for tracking every piece of equipment and every software seat we own. Right now it all lives in a shared spreadsheet that nobody trusts, so this app has to become the single system of record. Ops and IT are the daily users.

Store everything in the General Input Database using the user-database integration. On first setup, use Create or List Databases to find or create the database, then use Execute SQL to create the tables. I need at least three things. An assets table holding the asset name, asset type (laptop, monitor, phone, printer, furniture, software seat and so on), serial number or seat identifier, vendor, cost, purchase date, warranty expiry date, renewal date, status (assigned, spare, in repair, retired), current holder name and work email, expected return date, and notes. A custody_events table holding the asset id, event type (assigned, transferred, returned, repaired, retired, imported), the person's name and work email, the date, who recorded it, and a note. And staging tables for spreadsheet imports. Every read and every write in the app goes through Execute SQL. Add indexes on holder email, status, renewal date and warranty date so the views stay fast.

The app opens on the register: one row per asset showing type, name, serial number or seat, cost, purchase date, warranty or renewal date, status and current holder. I want search across name, serial and holder, filters by type and status, sortable columns, and server side paging so the counting and filtering happen in SQL rather than by pulling the whole table into the browser. Clicking a row opens the asset detail with its full custody history in date order, newest first.

Alongside the register I want four more views. Who has what groups assets by holder and shows each person, the items they are holding, the total value of that kit, and the oldest thing they have had out. Overdue returns lists every assigned asset whose expected return date has passed, oldest first, with the number of days overdue. Spare stock lists unassigned assets available to hand out, grouped by type. Renewals lists every software seat renewal and hardware warranty falling in the next 60 days, sorted by date, with the cost so we can see the money at stake. Make the 60 day window easy to change.

From the register or the asset detail I want to assign an asset to a person (pick or type their name and work email, set an expected return date and a note), record a return, transfer an asset straight from one holder to another, mark something in repair, retire an asset, and add or edit assets by hand. Every one of those actions writes a new dated row into custody_events through Execute SQL as well as updating the asset row. Nothing ever overwrites history: if a laptop has been through four people I want all four handovers on the record with their dates, so this is a real audit trail rather than a cell someone typed over.

Use the Slack Bot integration for notifications. When an asset is assigned to someone, resolve their work email with Look Up User by Email and then Send a Message to DM them what they now have, the serial or seat, and when it is due back. On the Overdue returns view give me a Nudge button on each row and a Nudge all button, which DM the holders about their late return. Record on the asset that a nudge was sent and when, so the same person is not chased repeatedly on the same day. If an email does not match a Slack user, show that on the row instead of failing silently.

Include an Import my old spreadsheet button that kicks off a background agent. I give it the spreadsheet link and the tab name, and the agent reads the existing sheet with Google Sheets Get Values. It then maps our inconsistent column names onto the register schema (Owner, Assigned To and Holder all mean the same field, dates arrive in several formats, costs arrive with and without currency symbols), normalizes asset types and dates, flags rows that look like duplicates of each other or of assets already in the register, and flags conflicts where two rows disagree about the same serial number. It writes the normalized rows plus a reconciliation summary into the staging tables with Execute SQL.

When the agent finishes, the app shows an import review screen: how many rows were read, how many are clean, how many look like duplicates, how many conflict, and how many are missing required fields, with the agent's note on each flagged row. I can edit a row, pick a winner on a conflict, skip a row, and then commit. Only the commit writes into the assets table, and each imported asset gets an opening custody_events row recording that it came from the spreadsheet on that date. Nothing lands in the live register before a person approves it.

The register needs to stay trustworthy well past a few hundred rows, so keep filtering, sorting, counting and paging in SQL, handle empty and loading states properly, and treat the custody history as the point of the app rather than a nice extra.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerA brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensStop cold emails to anyone with a live deal in PipedriveLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasoniMessage campaign console with pre-flight checks and delivery board