Software License Reclamation: Idle Seats Recovered, Exceptions Respected
Idle software seats reclaimed from Salesforce and GitHub activity, with the exception list, manager objections and leave returns respected along the way. No seat is removed until the IT asset manager approves it.
Seats nobody uses, and a few that only look idle
Every software contract carries seats assigned to people who left, changed teams or stopped logging in. Reclaiming them is straightforward on paper: departed users lose their seat, inactive users lose theirs after a set window, and anyone on the exception list keeps theirs. The exceptions are where it goes wrong. A seat that looks idle may belong to someone on leave, an engineer who only logs in during incidents, or a sales manager in the middle of renewal season.
The seat inventory is an Airtable base. Activity comes from Salesforce login history and GitHub organization activity, the exception list is a sheet in Google Drive, and managers answer notices by email. When engineering changes the GitHub window or a group of people come back from leave, the reclamation list gets patched for the seats someone happens to mention, and the closeout adds up savings per tool instead of per owner.
Who works in the room
People
IT asset manager
Owns the reclamation cycle, approves every seat change and signs the closeout
Procurement lead
Owns the vendor contracts and takes the closeout savings into renewal talks
Team managers
Confirm or object to reclaiming their people's seats
Engineering manager
Sets the GitHub inactivity window and approves removals from the GitHub organization
Agents

MycoSeat reviewer
Walks each seat in Airtable through the reclamation rules using Salesforce and GitHub activity and the exception list, proposes reclaim, keep or hold, and makes the approved changes
Airtable
Salesforce
GitHub
Google Drive
FinNotices and objections
Drafts the batch notices to managers and the reply on each objection thread, for a person to send

AdaReport checker
Checks the reclamation report and the closeout savings against the current inventory, owner by owner and tool by tool
Airtable
Google Drive
Any question about a seat goes to Myco, the default agent here and the only one that can act on Salesforce users and the GitHub organization, through lasting grants the IT asset manager and the engineering manager approved for it. Fin leads the notice and objection threads once Myco opens each one with the seat IDs and outcomes as the brief. Ada reviews the report and the closeout, which the guidelines require before the IT asset manager signs.
One reclamation cycle
A cycle runs over a few weeks, and every seat change waits for a person.
- Agent works
- Person decides
- Arrives or gets recorded
flowchart TD
review["<b>Myco</b> walks each seat through<br>the rules in order"]
ok1["<b>IT asset manager</b> approves<br>before any seat changes"]
notices["<b>Fin</b> drafts one batch<br>notice per manager"]
send["<b>IT asset manager</b><br>sends each notice"]
audit["<b>Ada</b> compares the report with<br>the approved decisions"]
confirm["<b>IT asset manager</b> confirms"]
window([The engineering manager sets<br>a new GitHub window])
objection["<b>Myco</b> re-checks each<br>seat a manager objects to"]
leave["<b>Myco</b> re-runs returning<br>users through every rule"]
github["<b>Myco</b> re-runs every<br>GitHub seat in rule order"]
decide["<b>IT asset manager</b><br>decides each objection"]
ok2["<b>IT asset manager</b><br>approves the changes"]
reply["<b>Fin</b> drafts a reply per objection,<br>each on its own thread"]
reclaim["<b>Myco</b> removes approved seats<br>and writes the closeout rows"]
sign["<b>IT asset manager</b> signs,<br><b>procurement</b> takes the totals"]
review --> ok1 --> notices --> send --> audit --> confirm
confirm --> objection & leave & github
window -.- github
objection --> decide --> reply
leave & github --> ok2
reply & ok2 --> reclaim --> sign
class review,notices,audit,objection,leave,github,reply,reclaim agent
class ok1,send,confirm,decide,ok2,sign person
class window event
classDef agent fill:#FFFFFF,stroke:#DCD3C8,color:#1B1712
classDef person fill:#EEF0E3,stroke:#6E7447,color:#1B1712
classDef event fill:#F4ECDD,stroke:#F4ECDD,color:#564C42| Stage | What happens | Who acts | Who decides |
|---|---|---|---|
| Seat review | Each seat is walked through the rules in order: departed user, inactive past the tool's window, exception list, leave | Myco | The IT asset manager approves before any seat changes |
| Manager notices | One batch notice per manager lists the seats to be reclaimed and the date | Fin | The IT asset manager sends each notice |
| Report audit | The reclamation report is compared with the approved decisions, line by line | Ada | The IT asset manager confirms |
| Objections | Two managers object, each seat is re-checked, and each objection is answered on its own thread with the seat ID and outcome | Myco, then Fin | The IT asset manager decides each objection |
| Leave returns | Returning users' holds are lifted and their seats go back through every rule | Myco | The IT asset manager approves the changes |
| Revised GitHub window | Every GitHub seat is re-run under the new window and the full rule order | Myco, checked by Ada | The engineering manager sets the window and the IT asset manager approves |
| Reclaim and close out | Approved seats are removed in Salesforce and GitHub, and one closeout row per owner and tool records the monthly savings | Myco, checked by Ada | The IT asset manager signs and procurement takes the totals |
A shorter window, returning users and two objections
A change to the GitHub inactivity window reaches every GitHub seat, not only the ones near the old line. Myco re-runs all of them under the full rule order. Some newly inactive seats are kept because their users are on the exception list, some are held because their users are on leave, and the rest are proposed for reclaim with the new window named as the reason.
Leave returns work the same way. A return lifts the hold, and the seat goes back through every rule, which can keep it or still reclaim it. Objections are answered one at a time: each manager gets a reply on their own thread naming the seat ID and the outcome, never a combined message that leaves someone to work out which line is theirs.
What the checks catch
- A seat inactive past the window whose user is on the exception list in Google Drive, so it is kept
- A revised GitHub window applied only to seats someone named, when every GitHub seat needs the full rule order again
- Two objections answered in one message instead of each on its own thread with the seat ID and outcome
- A closeout row that adds up one owner's savings across two tools, when each owner and tool pair gets its own row
What stays with people
- Setting the inactivity window for each tool
- Approving each reclamation before a seat is removed in Salesforce or GitHub
- Deciding each manager objection
- Sending every notice and objection reply Fin drafts
Integrations in this workflow
Kylon is not a SaaS management or IT asset tool, and it does not replace one. It sits across the inventory, the activity sources and the mail the team already uses, and keeps the coordination between them in one place.
- Airtable holds the seat inventory, with owner, tool, monthly cost and decision on each seat, plus the closeout rows
- Salesforce supplies login history for Salesforce seats, and is where approved seats are deactivated
- GitHub supplies organization activity for GitHub seats, and is where approved members are removed
- Google Drive keeps the reclamation rules, the exception list and the report
- Gmail carries batch notices and objection replies to managers, as drafts the IT asset manager sends
- Slack is where managers raise quick questions and engineering announces window changes
Where to start
Pick one tool and one quarter. Connect the Airtable inventory and the activity source for that tool, put the exception list in the room's folder, and make one rule explicit in the room guidelines: no seat is removed until the IT asset manager approves it in the thread, and every rerun checks every rule in order.
“The seat looked idle because its owner was on leave. The exception list said so, and the check read it.”
Set it up with your agent
Open a new Room, add your agent and paste this prompt. It connects the tools, builds the App with you and asks for your rules one step at a time, and nothing goes out until a person approves it.
Set up our software license reclamation desk in this Room. Take it one step at a time and wait for my OK before you move on. 1. Connect Airtable, GitHub, Gmail, Google Drive, Salesforce and Slack. Tell me which ones still need connecting. 2. Ask me who works this desk: the IT asset manager, the procurement lead, the team managers and the engineering manager. Help me invite them to this Room. 3. Build a Seat Reclamation App with columns Under Review, Notified, Objection and Reclaimed, one record per seat. Pull the seat inventory from Airtable and the exception list from Google Drive. 4. Walk each seat through our rules in order: departed user, inactive past our threshold, exception list, then leave hold. Use Salesforce login history and GitHub activity. Show me every seat proposed for reclaim, keep or hold, and flag any that conflict with the exception list. 5. Draft one batch notice per manager listing their seats and the reclaim date. Draft a reply on each objection on its own thread naming the seat and the outcome. The IT asset manager sends every notice and reply and approves every seat removal before anything changes in Salesforce or GitHub. 6. Write our rules and who approves which send or seat change into this Room's guideline, so every cycle follows it. 7. Build one closeout row per owner and tool recording the savings, and check it against the approved decisions line by line before the IT asset manager signs. 8. After one clean cycle, offer to turn the seat review and notice batch into an Automation. Before you start, ask me for our rules one at a time.
Your first company harness. Where humans and agents run your business together.
More Use Cases
View allSpare Parts Reorder Levels: Stocking Rules That Hold When One Part Changes
When one part changes its lead time, criticality or supersession, every part tied to it is checked again. Agents set min and reorder levels from ClickUp work orders and Salesforce quotes in one Kylon room, and the planner approves each level.
Localization Vendor QA: Translation Payments Priced Right and Paid Within Each Run's Cap
Translation jobs are priced from word counts, rate bands, rush uplifts and late penalties, placed in payment runs under a cash cap, and re-priced when rates, holds or disputes change. Agents work ClickUp and Box, and the vendor manager approves every amount.






