I have a page where schools make a list of items they need and donors make a list of items they have to donate.
Both of these lists are created from a master list of items in the database. The reasons these lists are created from a database rather than just having the schools type a list manually are that:
- I can now match donors to recipients based on their lists.
- I can keep track of the value of all donations.
- It ensures everyone is talking about the same thing (e.g. “Whiteboard - 24” x 24" instead of just “Whiteboard”).
The challenge is, if the database is too big:
- Matching won’t occur as much. E.g. if there are 30 types of tables to choose from and a school asks for 1 of those tables and a donor offers another of those tables, a match won’t occur, even though in some cases, the recipient would probably be happy with what the donor has to offer. So I thought about matching on “category” instead of “item”, for example matching on “table” instead of “3ft by 2ft wooden table”, but in most cases that falls apart, i.e. where the school needs the exact item they asked for.
- It’s really time-consuming to manage. With a database of, say, 5000 items, with item values changing regularly and links to online examples of those items changing, it seems impossible to keep up to date.
- It gets confusing for the user. E.g. if a teacher wants a table and has to look through 30 types of tables, it becomes overwhelming to choose.
On the other hand, if the database is small:
- There will be more matches, but the matches will be inaccurate. E.g. if I were to just match on table, a rectangular table and circular table would be matched, which doesn’t work.
- It’s easier to manage.
- It’s less confusing for the teacher, but they won’t find the exact items they need.
I’ve wondered about tapping into an external API of items like Walmart/Amazon.com, but I have no experience with that, so not sure if the pros would outweigh the cons.
Feel free to PM me if you’d like to get involved. Thanks!
First off what you’re building is really great and useful. Good job.
Dont have time for consultation so here are some free ideas since i love what you’re building.
As you rightly pointed out there is not going to be one solution that fits all, each one will have its pros and cons.
What you can do is offer the users (both schools and donors) options of how they want to add or search for things.
One way of doing this is to add advance search or filtering options.
So as you’re currently doing with the categories, each item will have a category and maybe even sub-categories.
Then when a school is creating a request they can specify if they’re interested in “similar” items.
How you define similarity can vary. For example you could use the categories or even tags.
This way when a donor offers an item, you can look at match based on what the school requested, whether the wanted the exact same item or are ok in similar items.
This addresses the matching problem.
Ideally if there was an api you could pull these data from that will be way so you wouldn’t have to worry about updating prices, etc. If there are no database or api you could be pulling this from then looks like you will have to manually be updating them.
I think the filtering or advance search i mentioned can address this to an extent to. For example if a teacher wants a table, they could say they’re interested in only Cafeteria one, which are round, etc.
Think of how we search for products on places like amazon. If you were to simply type table in amazon search box you will get thousands of results. But you can use the filter on the left panel to refine the search by say shape, length, height, material, colour, condition, price, etc. This way you now get a very refined small list of tables to choose from.
If you provide here whatever external api where you think you can get the data from i’m sure many people on this forum will help you set it up.
Thanks so much for taking the time, @seanhoots. Very much appreciated.
I’m still thinking using an API may bring in more problems than benefits, but not sure yet.
Will post back in here when I get it all sorted out.
I can help.
You can reach me on Skype: cisin.justin or Email: [email protected] so that we can discuss this further.