The Parking Space Auction
Auctions are often used to regulate access to scarce resources, and they are considered a fair mechanism by many people. I'll try to separate mechanism (which is relatively simple) from policy (which may depend on company policies and legal regulations).
This is not a full sketch of the implementation but just a collection of ideas which will need to be fleshed out.
Auction Mechanism
The available parking slots are auctioned for each day sufficiently in advance so that employees can plan their transportation for the day.
Employees bid for parking slots using points which are allocated to them in a defined schedule (for example, each employee gets 10000 points at the beginning of a week.)
The auction for each day works like this:
- While the bidding phase for that day is open, employees place their bids for the respective day. Employees may place bids higher than their current point balance, because they can gain additional points later (see policy options below.) Zero-valued bids are also possible, they just mean the employee would like to take a parking slot if one is available but is not willing to pay for it, for example on holidays when many but not all employees take a day off.
- When the bidding phase is closed (the auction starts), all bid amounts are clamped to the current balance of the bidder, and bids are sorted by descending amount and ascending timestamps, so that for equal bids the earlier bids win.
- The first N bids corresponding to the number of parking slots win. You may decide to reduce the amounts on all bids to the minimum winning amount so that all bidders pay the same amount (see policy options below.)
- Their amount is deducted from the employee's point balance, and the employees each receive a ticket for that day.
Employees may transfer points among each other, for example a group of people sharing a ride may pool their points to get better chances at winning auctions, which makes sense both economically and ecologically.
Another option might be for an employee who takes a day off to sell his points to a coworker, or departments might want to hold raffles for points. All of this is up to the users and not part of the auction system.
(Optional) Point Market Mechanism
In addition to being able to transfer points among each other according to direct agreement, employees may sell and buy points on a market embedded in the system. This might enable people who use public transport even if it is a little inconventient to get compensation for that inconvenience, and it might enable higher-paid employees to get better chances at winning an auction by buying points on the market.
Employees may put sell offers and buy orders on the market. Buy orders that are higher than existing sell offers are matched against each other for a transaction.
Policy
There are several possible auction schedules and rules:
- Daily auction
The auction for each possible day is held at a specific time in advance, for example at 6 pm two days before. This allows employees to react to unforeseen changes in their needs.
- Weekly auction
The auctions for all days of a week are held on Friday or Saturday of the previous week. Each employee receives a summary statement for the days they can use the parking place.
- Pay lowest winning bid
Some auctions work so that the winner pays the amount set by the second bid (see https://en.wikipedia.org/wiki/Vickrey_auction) and a possible application to this system would be that all winners of an auction pay just the amount of the minimum winning bid. I am not sure whether this increases or reduces fairness, though.
- Bid higher than current balance
Especially when there is sufficient time between making a bid and the respective auction, it might make sense for the employee to bid more than she currently has on balance, because they may get more points in the meantime, for example through the market or due to the regular point schedule when they're taking a vacation and want to bid on auctions for the week after that vacation. However, this may create a wrong perception in other employees about their chances to win an auction.
The company may decide to handle accounts of people with special needs (disabilities, pregnancies, etc.) differently. For example, it may be legally required to make some slots available for people with disabilities, or it may want to give bonus points to pregnant employees to give them better chances at getting a parking slot on each day.
For the point market, it needs to be decided whether it is actually worth the effort (someone has to handle the money involved, which might pose logistical and legal problems.)
Technical Implementation and User Interface
The solution which would probably be easiest for most people would be a website on which employees can log in, see an overview of the open auctions, place their bids and possibly trade points on the market. For many people, a matching smartphone app might be attractive, too.
Tickets could be made available to employees by e-mail or through the smartphone app. Each ticket could contain a QR code with information that can be used by an automated parking barrier to grant access to the parking lot if you have such a barrier.
Scheduling of auctions and point disbursement needs to be implemented using whatever scheduling mechanism is available within the framework you use for the application. You also need scheduling to create auctions for future dates and to clean up past auctions and bids.
The database schema skeleton for the auction part can be relatively simple. You will likely need to add more fields when actually implementing it.
- Employee
- e_id (unique key)
- points (balance of points)
- Auction
- date (primary key)
- slots_available (so you can reduce the number of slots when part of the parking space is unavailable due to construction work or other use)
- open (flag denoting whether bids can be placed, you might alternatively use a closing timestamp)
- Bid
- e_id (key of Employee)
- date (key of Auction)
- timestamp (to break ties on equal bids)
- amount
- winner (flag denoting whether this bid wins)