Not sure if it's a good idea to just copy a database and then try to fit your organisation into it.
Normally hierarchical groups would just fit into a table with a link to another group as it's parent. Your head group for the country (or the world) wouldn't have a parent and perhaps your lone groups might not either or perhaps they would link to the head group directly. You could simply have a flag to indicate lone groups.
You could also have a simple location hierarchy table that could contain the name of an area, the type of area and the parent area that it belongs to. I'm guessing the name of counties etc. This could be used to any level of location and for any country. Each entry in the group table could link to any record in the location table so "Orange County AA" might have a location id of 3 in this example.
Code:
id name type parent_id
1 USA country NULL
2 California state 1
3 Orange County province 2
Rather than using searching you could just show users a list of states, they'd click their state and then be shown a list of provinces etc. When you have groups that meet in the current location then display the public information about that group allowing them to contact them.
Meetings could also link to the location table but would need a complete address. To do the map you could just store a link to google maps for each group and allow users to click on the link on the web page - simple.
My list of main tables would be:
Code:
Location: id, name, loc_type, parent_id
Groups: id, name, is_lone_grp_YN, loc_id, group_type, parent_id
People: id, name, group_id, role, contact details
Meetings: group_id, date_time, loc_id(?), address, notes,
organiser_id (people_id)
I wasn't sure whether you'd want the names of "clients" for groups in the database so I left that table off.
For public and private information you could simply have 2 queries that run depending on who is using the program (I assume it's web based). If the user is the general public then just select the fields that anyone is allowed to see. If they have the correct password then you run the select that shows them "all" the data for their group - or what ever they're allowed to see. If your requirements are more complex then we'd need something more complex.
I'm not sure how the "12 steps" come into the database design.
Just my 2c.