Yes I understand your point. However, setting TODO for each category manually would be laborious in my situation, I have to adjust the configuration file each time I add/delete the project.
For my implementation, I advice on function 'org-agenda-finalize-entries' to put lists into different groups, limit them and add separator after the line '(setq list (mapcar 'org-agenda-highlight-todo list))'
There's a 'org-agenda-before-sorting-filter-function' variable. However, I'm not able to use it for grouping things, because it's used as '(mapcar org-agenda-before-sorting-filter-function list)'
Would it be useful to add another function here, not used in 'mapcar', but work directly on the whole list? I don't know whether it is worthy, and I'm OK if that's not general enough to be added, because I can use defadvice anyway :)