Pineventory - Standard Operating Procedures

Pineventory - Standard Operating Procedures

This is WARG's very own (automatic) inventory management system using a Discord bot. Since inventory management is historically very annoying, the Discord and Google Spreadsheets integration makes it seamless and helpful when people need to find where things are. This page outlines Standard Operating Procedures (SOPs) to use this tool in a manner to support its efficacy.


Overview

Pineventory is a Discord bot that lets WARG members track physical inventory items, check out and return equipment, and maintain a full audit trail.

Key integrations:

  • Discord — slash commands, interactive buttons, modals, paginated views

  • Google Sheets — auto-synced spreadsheet with Inventory, Active Checkouts, Audit Log, and Stats tabs


Getting Started

Before using the bot, make sure you can see its slash commands by typing / in any channel where the bot is present. If you don't see Pineventory commands, contact an admin to check the bot's channel permissions.

Run /about for a quick reference of all available commands, or /pineventory to see a summary of what the bot does.


Command Reference

Inventory Management

Command

Description

Who Can Use

Command

Description

Who Can Use

/additem

Add a new item to inventory

Anyone

/inventory

Browse all items (paginated)

Anyone

/itemdetails

View a specific item by ID

Anyone

/edititem

Edit an item's name, location, subteam, POC, PO, or description

Anyone

/deleteitem

Delete an item (blocked if active checkouts exist)

Anyone

/sheetinfo

View the linked Google Sheet URL for your server

Anyone

Checkout & Returns

Command

Description

Who Can Use

Command

Description

Who Can Use

/checkout

Check out an item (quantity, expected return date, notes)

Anyone

/return

Return a checked-out item

Anyone

/mycheckouts

View your own active checkouts with a dropdown to return items

Anyone

/allcheckouts

View all active checkouts across the server

Anyone

Admin Commands

Command

Description

Who Can Use

Command

Description

Who Can Use

/setadmin

Grant or revoke bot admin privileges for a user

Admins

/syncsheets

Manually sync all inventory data to Google Sheets

Admins


SOP 1 — Adding Items to Inventory

When new equipment is received or needs to be tracked, add it to Pineventory immediately.

  1. Run /additem in Discord.

  2. Fill in all required fields:

    • Item Name — use a clear, descriptive name (e.g., "DeWalt 20V Drill" not just "Drill")

    • Quantity — total number of this item available

    • Location — where the item is physically stored (e.g., "Workshop A, Shelf 3")

    • Subteam — the subteam that owns or primarily uses the item (e.g., mechanical, electrical)

    • Point of Contact — the Discord member responsible for this item (mention them directly). If none, mention a subteam lead.

    • Purchase Order — the PO Discord thread link associated with the purchase, if applicable. The number suffices too.

  3. Optionally add a Description for any extra context.

  4. Confirm the item was created by checking the response.

Best practices:

  • Be specific with location. "The bay" is not helpful "Barometer labelled box on EFS shelf" is.

  • This should be done when an item is received in the respective purchase order thread.


SOP 2 — Checking Out Equipment

When you need to use a piece of equipment, always check it out through Pineventory so others know it's in use and where it went.

  1. Find the item ID using /inventory to browse or /itemdetails if you know the item ID.

  2. Click the Checkout button on the item details embed, or run /checkout directly.

  3. Fill in the checkout modal:

    • Quantity — how many units you're taking (must not exceed available quantity)

    • Expected Return — number of days you expect to have it (e.g., "7" for a week)

    • Notes — any context (e.g., "Testing at home“)

  4. The bot will confirm the checkout and update the item's available quantity.

Best practices:

  • Always set an expected return date. This helps the team plan around shared equipment.

  • If your timeline changes, communicate with the point of contact directly.

  • Check /mycheckouts regularly to remind yourself what you have out.

  • When an external member borrows equipment, either you or they need to fill out a checkout entry on WARG’s Discord server.


SOP 3 — Returning Equipment

When you're done with equipment, return it through Pineventory and physically put the item back where it belongs.

  1. Run /mycheckouts to see everything you currently have checked out.

  2. Use the dropdown menu to select the item you're returning.

  3. Confirm the return when prompted.

  4. Physically return the item to its listed location.

Best practices:

  • Return items to their listed location, not just "somewhere in the bay." If the location has changed, update it with /edititem.

  • Don't let checkouts go stale. If you're done with something, return it the same day.

  • If an item is damaged or lost during checkout, notify the point of contact and update the item quantity with /edititem after running the /return command to “return” the item.


SOP 4 — Editing and Deleting Items

Items can be updated as circumstances change.

Editing:

  1. Run /edititem with the item ID.

  2. Only fill in the fields you want to change — leave the rest blank.

  3. The bot will show a summary of what changed.

Deleting:

  1. Run /deleteitem with the item ID.

  2. The bot will block deletion if the item has active checkouts — all items must be returned first.

  3. Confirm deletion when prompted. This action is permanent.

Best practices:

  • If an item's quantity changes (lost, broken, received more), update it with /edititem rather than deleting and re-adding.

  • Keep locations up to date. Stale location data defeats the purpose of the system.


SOP 5 — Google Sheets Sync

Each server has an automatically generated Google Sheet that mirrors the Discord data. This is useful for people who want a read-only overview without needing to be in Discord, or for printing inventory lists.

How it works:

  • The sheet is auto-created the first time an admin runs /syncsheets.

  • It contains four tabs: Inventory, Active Checkouts, Audit Log, and Stats.

  • Data syncs when /syncsheets is run manually.

Accessing the sheet:

  1. Run /sheetinfo to get the Google Sheet URL for your server.

  2. Share the link with anyone who needs view access.

Best practices:

  • The spreadsheet is always updated after each command that mutates the inventory. However, this command can be used if that isn’t the case.

  • The sheet is view-only for external users. All changes must go through Discord commands.


SOP 6 — Admin Responsibilities

Server admins have additional responsibilities to keep Pineventory running smoothly.

Granting admin access:

  • Use /setadmin to grant or revoke bot admin privileges for trusted members.

  • Bot admins can run /syncsheets.

  • Admin status is detected via Discord's native permission system (interaction.permissions).

Ongoing maintenance:

  • Periodically run /syncsheets to keep the Google Sheet current if not already.

  • Review /allcheckouts to identify overdue items and follow up with the responsible members.

  • When members leave the team, ensure their checkouts are returned and their admin access (if any) is revoked.


SOP 7 — Audit Trail

Every action in Pineventory is logged to an audit trail. This includes item creation, edits, deletions, checkouts, and returns.

  • Audit logs are visible in the Audit Log tab of the Google Sheet after a sync.

  • Each entry records: timestamp, user, action type, item ID, and details.

  • The audit log is append-only and cannot be edited or deleted through the bot.

Use the audit log to resolve disputes about equipment, track usage patterns, or investigate missing items.


Troubleshooting

Issue

Solution

Issue

Solution

"Item not found" errors

Double-check the item ID. Use /inventory to browse and find the correct ID.

Can't delete an item

All active checkouts must be returned before an item can be deleted. Run /allcheckouts to check.

Google Sheet isn't updating

Run /syncsheets manually. If it fails, contact a bot admin to check the Google Sheets configuration.

Bot responds with "This command can only be used in servers"

You're running the command in a DM. Use it inside a server channel instead.


How to Contribute

Pineventory is actively maintained and we welcome contributions from WARG members. Contact @Ronak Patel and checkout https://github.com/Rosnaky/pineventory/ to get involved.