Playbook: Build a Purchase Approval Tracker
A purchase request starts as a Slack message, an email, or a conversation in the hallway. Somebody needs something — office supplies, a software license, a contractor engagement. They tell their manager. The manager says yes (or says "how much?"). The request goes to finance. Finance says yes or asks for more detail. Eventually procurement places the order. At every step, the information lives in a different place: the requester's email, the manager's Slack thread, a shared Google Sheet with 47 tabs.
Nobody can answer "what's the status of my request?" without pinging three people. Nobody can answer "how much have we committed this month?" without manually summing a spreadsheet column. And nobody can answer "who approved this?" without digging through email.
This playbook walks you through replacing that with a single app — a sandcastle that tracks every purchase request through its full lifecycle, with a kanban board, a detail view, and a linked subagent that sends reminders and posts summaries.
What you will build
- A Purchase Approvals sandcastle with three views: a kanban board, a filterable table, and a detail page per request.
- Collections for
requisitions(the requests),comments(a threaded discussion per request), andaudit_log(every status change with who, when, and why). - A linked subagent that posts daily summaries to
#procurement-opsand nudges stuck requests. - A workflow: Requested -> Manager Approved -> Finance Approved -> Ordered -> Received (plus Rejected as a terminal state).
What you need before you start
- An Assist workspace with access to the AI chat.
- A sense for the fields your team actually tracks on a purchase request: requester, description, amount, vendor, priority, budget code, department. If you have an existing spreadsheet, bring the column names — they become your collection schema.
Step 1: Describe the app
Open the AI chat:
"Build me a sandcastle called 'Purchase Approvals'. It tracks purchase requisitions through these statuses: Requested, Manager Approved, Finance Approved, Ordered, Received, Rejected. Each requisition has: requester_name, requester_email, department, description, vendor, amount (number), budget_code, priority (urgent/high/normal/low), status, requested_at, and notes.
I want three views:
- A kanban board grouped by status. Cards show requester, vendor, amount, and priority (color-coded: red=urgent, orange=high, green=normal, gray=low). Drag-and-drop to change status.
- A table view with columns for all fields, sortable and filterable by status, department, and priority.
- A detail page per requisition that shows all fields, a comment thread, and a status history timeline.
Also create a 'comments' collection (requisition_id, author, text, created_at) and an 'audit_log' collection (requisition_id, from_status, to_status, changed_by, changed_at, reason).
Seed it with 10 example requisitions spread across the statuses."
Step 2: Review and refine the plan
The AI generates a plan. Read it carefully. Look for:
- Missing fields. If your team tracks "cost center" separately from "budget code", now is the time to add it.
- Missing views. If you want a dashboard with total spend by department, say so now.
- The workflow. Make sure the status progression makes sense. Are there any statuses you want to add (e.g., "On Hold")?
Push back:
"Add an 'on_hold' status between any stage and 'Ordered'. Also add a 'total_committed' summary card at the top of the kanban that sums the amount of all non-rejected, non-received requests."
Step 3: Let the AI scaffold
Approve the plan. The AI creates the sandcastle, the collections, the seed data, and the linked subagent. You get a link to the preview.
Step 4: Test the happy path
Open the preview. Walk through what a real user would do:
- Create a request. Click "New Request" (or whatever the AI built). Fill in the fields. Submit. Confirm it appears in the Requested column.
- Approve it. Drag the card from Requested to Manager Approved (or click the status button on the detail page). Confirm the audit log records the change.
- Add a comment. Open the detail page. Add a comment: "Approved — within Q2 budget." Confirm it appears in the comment thread.
- Filter the table. Switch to table view. Filter by priority=urgent. Confirm only urgent items show.
- Check the summary. Look at the total-committed card. Confirm it sums correctly.
If anything doesn't work or look right, iterate:
"The drag-and-drop isn't working on the kanban. Make it so clicking a 'Move to...' dropdown on each card changes the status instead."
"The amount column in the table should be formatted as currency with two decimal places."
Step 5: Wire the subagent for automation
The scaffolding step created a linked subagent. Now give it a job. Open a chat with the subagent (from the Subagents page, click the chat icon on the linked agent):
"Every weekday at 9 AM Eastern, query the requisitions collection for items that have been in 'Requested' status for more than 3 days. For each one, post a reminder to #procurement-ops: 'Requisition [description] from [requester_name] ($[amount]) has been waiting for manager approval for [N] days.' Also post a one-line summary: 'X requests pending approval, $Y total committed this month.'"
The subagent creates a scheduled trigger. See Scheduling a subagent for details on how scheduling works.
Step 6: Add a weekly report
"Also schedule a Monday 8 AM run that queries all requisitions updated in the last 7 days, groups them by status, and posts a summary table to #procurement-ops: how many moved to each status, total spend approved, total spend ordered, and any rejections with the reason."
Now the procurement team starts every week with a clean picture of what happened and what's stuck.
Step 7: Share with the team
Go to Workspace > Permissions > Resources, find the Purchase Approvals sandcastle, and grant:
- Execute to the people who submit and approve requests (they can use the app but not edit its code).
- Edit to the person who maintains the app (they can refine the UI and manage data).
Share the URL with the team. They bookmark it and use it daily.
What you built
You have a purchase approval system that:
- Replaces the spreadsheet, the email threads, and the "ping me on Slack for status" pattern.
- Shows every request's status in one place, with a full audit trail of who approved what and when.
- Sends daily reminders for stuck requests so nothing falls through the cracks.
- Gives procurement a weekly summary without anyone having to compile it.
- Runs in your Assist workspace — permissioned, auditable, and under your control.
What used to take three systems and six emails per request now lives in one app.
Where to go from here
- Add budget tracking. Create a
budgetscollection with department, quarter, and amount. Add a view that shows remaining budget per department and warns when a new request would push a department over. - Add email notifications. Give the subagent an email tool and have it notify the requester when their request changes status.
- Add a receipt upload step. When a request reaches "Received", prompt the user to confirm receipt. The subagent can update the audit log and close the loop.
- Connect to the ERP. Build custom tools that create POs in your ERP when a request reaches "Ordered". The subagent calls the tool as part of the status transition.