Track every laptop, license and who has it right now

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.

App
General Input DatabaseSlack BotGoogle SheetsOperationsFinanceNotifications & AlertsData Sync
PromptCreate

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.

What does this prompt do?

  • Opens on a full register of everything you own, with type, serial number or seat, cost, purchase date, warranty or renewal date, and who is holding it right now.
  • Gives you separate views for who has what, returns that are already overdue, spare kit sitting unassigned, and renewals landing in the next 60 days.
  • Writes a dated history row every time something is handed over or returned, instead of overwriting a cell, so you can always see where an item has been.
  • Sends a Slack direct message when an asset is assigned to someone, and lets you nudge holders whose return is overdue.
  • Has an Import my old spreadsheet button that hands your existing sheet to an assistant, which tidies the columns, flags duplicates and clashes, and shows you the result before anything is saved.

What do I need to use this?

  • A General Input account. The register itself is stored in your General Input Database, so there is no separate asset tool to buy or set up.
  • A Slack workspace where the bot can send direct messages to your team.
  • A Google account with access to the spreadsheet you are moving off, if you want to import what you already have.
  • A rough list of what you own to start with: equipment, and any software you pay for per seat.

How can I customize it?

  • Change the renewal window from 60 days to whatever notice your team actually needs.
  • Decide who gets the Slack nudge when a return goes overdue: just the holder, or the holder and their manager.
  • Add your own asset types and extra fields such as department, location, or condition.

FAQs

Do I need to buy asset tracking software as well?
No. The register lives in your own General Input Database, which the app creates and manages for you. Everything you see in the app is read from and written to that one place, so there is no second system to keep in sync.
Will it still work once we have a few thousand assets?
Yes. Searching, filtering, sorting and paging all happen in the database rather than in your browser, so the register stays quick as it grows. That is the main reason it holds up where a shared spreadsheet stops being reliable.
What happens to my old spreadsheet when I import it?
It is only read, never changed. The assistant reads your sheet, matches your column names onto the register, and shows you a review screen with duplicates and conflicting rows flagged. Nothing enters the live register until you approve it.
Can I see the full history of a single laptop?
Yes. Every assignment, transfer and return is saved as its own dated row, so opening an asset shows you everyone who has held it and when, rather than just whoever has it today.
Does everyone in the company need to log in?
No. Ops and IT work in the app day to day. Everyone else just receives a Slack message when something is assigned to them or when their return is late.

Related templates

Prospecting desk that builds account lists from the live web

Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.

Hyperbrowser
HubSpot
Google Sheets
App
Share of voice dashboard for your brand and competitors

See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.

GDELT
Notion
Slack Bot
App
Approval war room for every social post awaiting sign-off

One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.

Hootsuite
Slack Bot
App
Turn champion job changes into new pipeline in Attio

Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.

Boomerang
Attio
Slack Bot
Agentic Task
Collect social post requests and schedule them in Hootsuite

Staff submit what happened, your social manager edits the copy, picks the accounts and puts it on the calendar without a single spreadsheet.

Hootsuite
Slack Bot
General Input Database
App
Influencer campaign roster board with AI creator briefs

Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.

HypeAuditor
Google Sheets
Notion
App

Stop trusting a spreadsheet nobody maintains.

Build a register that records every handover, chases overdue returns, and warns you before a renewal lands.