Dozens of recovery websites. One standard, one desk, one watchtower.
Your posting asks for someone who builds on WordPress, Wix, Squarespace and GoDaddy, keeps SEO intact through redesigns, owns hosting, DNS and SSL, and turns routine updates around in one to three days. This page reviews recoverymovementconsult.com and three client sites, then proposes a system for the whole portfolio: a build standard, a monthly watchtower and a request desk, each with the evidence behind it and each requirement in the posting matched to work you can open.
Four sites, one pattern.
recoverymovementconsult.com plus three client sites named on its testimonials page, 68 pages sampled on Sep 22, 2026. The strengths are real: every site is mobile-ready, on HTTPS, with Open Graph tags, and RMC’s own site already has a sitemap, canonicals and an llms.txt. The gaps repeat from site to site, which is the useful part: a pattern can be fixed with a standard.
| Metric | RMCrecoverymovementconsult.com · Wix | Recovery Community Networkrecoverycommunitynetwork.com · Wix | Recovery Africarecoveryafrica.org · Squarespace | Hope Town Ohiohopetownohio.org · static HTML |
|---|---|---|---|---|
| Pages with exactly one H1 | 18/24 | 5/15 | 0/15 | 13/13 |
| Pages with a meta description | 21/24 | 11/15 | 1/15 | 13/13 |
| Pages with Organization or LocalBusiness schema | 0/24 | 1/15 | 0/15 | 0/13 |
| Images with alt text | 150/169 | 106/118 | 281/341 | 51/81 |
| Homepage HTML weight | 1.35 MB · 64 scripts | 1.40 MB · 66 scripts | 146 KB · 40 scripts | 24 KB · 4 scripts (4.4 MB of images) |
| Canonical host | www, 2 redirect hops from http://apex | www, 2 hops | www, 1 hop | www and non-www both answer 200; no canonical tags |
| Sitemap and robots.txt | Both; 90 URLs, one redirects | Both; 59 URLs | Both; 64 URLs | Neither (404) |
| Placeholder or template pages live | /about-5, /copy-of-…, /samsha-… | 4 × “Project Name 0x” + 8 real pages on leftover slugs | 2 × “New Page” + 5 pages on default slugs | 3 old WordPress URLs return 404 with no redirect |
The page that sells websites has no structured data
0 of 24 pages carry Organization, ProfessionalService or FAQPage JSON-LD. The /faq page has none. Only WebSite on the homepage and BlogPosting on three posts.
Five pages have no H1, including the homepage
The homepage and the contact page have no H1; all 24 pages skip heading levels; 21 of 24 meta descriptions run past 160 characters; /pricing, /grant-wins and /our-mission share one title and one description.
Template leftovers are still live
Two pages link to Wix’s own social accounts. The footer says © 2024. Slugs include /about-5, /copy-of-samhsa-grant-consulting and /samsha-grant-management. The $500 offer says “up to 10 pages” on one page and “15-page site” on another.
The Wix client carries the same marks
Recovery Community Network: 10 of 15 pages have no H1, one 344-character description is reused on 9 pages, four “Project Name 03–06” placeholders are live and indexed, three footer links point to the wrong pages, and the phone appears in three formats with no tel: links.
The Squarespace client stopped in 2020
Recovery Africa, credited to Shannon Egan on the site: 14 of 15 pages have no meta description, every page has 2 to 23 H1s, two untitled “New Page” placeholders are indexed, the donate form posts to a legacy PayPal cgi-bin endpoint with unlabeled inputs, and the newest content is dated 2020.
Two testimonial domains no longer serve their sites
nmrc-inc.org resolves to a GoDaddy parking page. utahpetaquamation.com serves a third-party redirect script. Both organizations are still quoted as happy clients on recoverymovementconsult.com/testimonials.
The $500 site, built the same way every time.
RMC builds on whatever platform the client already has. So the standard is written once and implemented on each: the same page structure, the same rules for words, the same schema, the same launch gates. Pick a platform to see how each item is done there.
- 1One H1, a title under 60, a description under 160, unique on every pageThe first thing a search result and a screen reader both read.
- 2No placeholders, no template slugs, no template social links, current footer yearThe marks that tell a visitor nobody looked after launch.
- 3NonprofitOrganization or LocalBusiness schema with address, phone, hours, sameAs; FAQPage on the FAQ; Event on meetingsSo the organization is an entity to search engines, not a page.
- 4One phone format, tel: and mailto: links, one address block, a link to the Google Business ProfileRecovery organizations are found locally. The listing and the site must agree.
- 5Alt text on every image, labeled form fields, heading order, a skip link, AA contrastBehavioral-health sites serve people in crisis on old phones. Accessibility is not optional here.
- 6Speed budget: images under 200 KB with srcset, homepage HTML tracked, third-party scripts countedA 4.4 MB homepage on a rural connection is a closed door.
- 7Launch gates: one canonical host with one 301, sitemap and robots submitted, GA4 and Search Console connected, SSL on apex and wwwThe last hour before launch is where rankings are kept or lost.
- 8Migration protocol: URL inventory, redirect map checked URL by URL, rankings snapshot before, Search Console checked afterA redesign that loses the old URLs loses the donors who bookmarked them.
The same page twice: the marks found on the sites above, then under the standard. Riverbend Recovery Community is fictional.
Every client domain, checked monthly, before anyone notices.
Two organizations quoted on RMC’s testimonials page have domains that quietly stopped serving their sites. A monitor that runs on the first of the month over every client domain catches that, along with expiring certificates, redirect chains, placeholder pages and missing schema, and turns it into a one-page note per client. Below: the September run over the sites reviewed above, from public checks only.
| Site | Domain | SSL | Redirects | Placeholders | Schema | Alt text | Weight | Newest content |
|---|---|---|---|---|---|---|---|---|
| Recovery Movement Consultingrecoverymovementconsult.com · Wix | Live | LE · Oct 28 | 2 hops | 3 leftover slugs | WebSite only | 89% | 1.35 MB | 2025 |
| Recovery Community Networkrecoverycommunitynetwork.com · Wix | Live | LE · Nov 25 | 2 hops | 4 placeholders | LocalBusiness | 88% | 1.40 MB | Recent |
| Recovery Africarecoveryafrica.org · Squarespace | Live | www only · Nov 13 | 1 hop | 2 “New Page” | WebSite only | 83% | 146 KB | 2020 |
| Hope Town Ohiohopetownohio.org · static | Live | GTS · Nov 15 | 2 hosts, no canonical | 3 old URLs 404 | None | 63% | 4.4 MB images | Recent |
| Nebraska Minority Resource Centernmrc-inc.org | Parked (GoDaddy) | — | — | — | — | — | — | No site |
| Utah Pet Aquamationutahpetaquamation.com | Third-party redirect | — | — | — | — | — | — | No site |
One page a month, in plain language
Green, amber or red for each check, what changed since last month, what I fixed inside their hours, and the one thing that needs a decision. Written so an executive director can forward it to their board.
The whole portfolio on one screen
Every client site in one table: renewals and certificates with dates, the sites that need a rebuild ranked by what it would take, hours per client against the month’s budget, and the testimonials page cross-checked against reality.
# domains.txt → watch.csv: status, host, hops, cert expiry, sitemap, placeholders, schemawhile read d; do r=$(curl -sIL -o /dev/null -w "%{http_code} %{url_effective} %{num_redirects}" "http://$d") exp=$(echo | openssl s_client -servername $d -connect $d:443 2>/dev/null | openssl x509 -noout -enddate) h=$(curl -sL "https://$d"); sm=$(curl -so /dev/null -w "%{http_code}" "https://$d/sitemap.xml") ph=$(echo "$h" | grep -ciE "project name 0|new page|add a title|lorem ipsum") sc=$(echo "$h" | grep -c "application/ld+json") echo "$d,$r,${exp#*=},$sm,$ph,$sc" >> watch.csvdone < domains.txt# parked landers and third-party redirects show up in url_effective. That is the whole point.
{ "@context": "https://schema.org", "@type": ["NonprofitOrganization","LocalBusiness"], "name": "Riverbend Recovery Community", "url": "https://example.org/", "telephone": "+1-330-555-0140", "email": "hello@example.org", "address": { "@type": "PostalAddress", "streetAddress": "410 Elm Street", "addressLocality": "Marion", "addressRegion": "OH", "postalCode": "43302" }, "openingHours": "Mo-Fr 09:00-17:00", "sameAs": ["https://maps.google.com/?cid=…", "https://www.facebook.com/…"], "potentialAction": { "@type": "DonateAction", "target": "https://example.org/donate" } }// same fields as the footer NAP and the Google Business Profile. Fictional organization.
A request, start to finish.
Request
A client emails: “Our meeting schedule changed and the donate button is broken.”
Estimate
Scoped in hours before any work: 0.5 h for the schedule, 1 h to rewire and test the donate form. Written to RMC, and to the client if they hold the budget.
Build
The change is made in the platform’s draft or on staging: schedule updated, Event schema refreshed, donate form pointed at the current processor.
QA
The standard’s gates: the form submits and lands, tel: links dial, mobile check, no console errors, title and H1 unchanged, before and after screenshots.
Launch
Published, cache cleared, the changed URLs checked in Search Console, the donate path tested with a real $1.
Note
Three lines to the client and RMC: what changed, what it cost in hours, what I noticed while I was in there.
Two more snippets from the standard.
The migration map that keeps a redesign’s rankings, and the Event markup that makes a weekly meeting findable. Written for this proposal; the organization is fictional.
# _redirects (Cloudflare Pages / Netlify): one canonical host, old WordPress URLs kept alivehttps://hopetownohio.example/* https://www.hopetownohio.example/:splat 301/costs-and-benefits/ /program-fees 301/about-hope-town-recovery-housing/* /recovery-housing 301/index.html / 301# then: sitemap.xml + robots.txt generated, canonical tags added, and every old URL curled to prove one hopwhile IFS=, read old new; do [[ "$(curl -sI -o /dev/null -w "%{http_code} %{redirect_url}" "$old")" == "301 $new" ]] || echo "FAIL $old"; done < map.csv
{ "@context": "https://schema.org", "@type": "Event", "name": "All-Recovery Meeting", "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode", "eventSchedule": { "@type": "Schedule", "byDay": "https://schema.org/Thursday", "startTime": "18:30", "endTime": "19:30", "repeatFrequency": "P1W" }, "location": { "@type": "Place", "name": "Riverbend Recovery Community", "address": "410 Elm Street, Marion, OH 43302" }, "isAccessibleForFree": true, "organizer": { "@type": "Organization", "name": "Riverbend Recovery Community" } }// emitted from the same schedule the page shows, so the two never disagree. Fictional organization.
Everything the posting asks for, with something to open.
Nine requirements from the posting, each matched to work I have already done. Every link opens a live site, a tool or a written review, not a slide.
WordPress, WooCommerce, Wix and Shopify sites I built and ran; Squarespace and GoDaddy audited above
greatlakescigarfest.com (WordPress event site, built end to end), universalwholesaleonline.com (WooCommerce, 14,000+ SKUs), k-wav.com (Wix, for a display manufacturer), shopunitedtextile.com (Shopify). Squarespace and GoDaddy are the same HTML, DNS and SEO underneath; the standard above is written per platform.
Twenty written reviews with the markup to fix what they find
Salt Security: no FAQPage markup, llms.txt returning 404, 720 disallowed sitemap URLs. JB Tools: double-encoded names in H1, title and JSON-LD, no GTIN in Product schema across a 104,348-product index. Nine browser SEO tools I built for the same checks.
A Shopify storefront whose organic rankings reached pages 1–2 in the first year
shopunitedtextile.com: built and ran it, owned its technical and on-page SEO; organic Google rankings for its product categories reached results pages 1–2 within the first year. The reviews site I shipped this month scores 78–94 on mobile PageSpeed and 96–100 on accessibility.
Fifty-two builds on one hosting account that I run myself
Deploys over SSH, caching and compression rules, SSL, DNS and mail records, form endpoints, backups: mine to run and mine to fix. 14,000+ SKU migrations with redirect maps and QA; ChangeAtlas previews a catalog import before it runs.
Hand-coded on every build, including this page
This proposal and the reviews site are hand-written HTML, CSS and JavaScript with no framework. The Wix, Shopify and WordPress sites above all carry custom code where the platform ran out.
Reporting from GA4 and Search Console at two employers
Monthly GA4 and Search Console reporting at Universal Wholesale and at Wild Bill’s Tobacco, a Michigan retailer with 200+ locations. The standard connects both on launch; the monthly note reads from them.
Designed and built end to end: the reviews site, this proposal, k-wav.com
No design handoff on any of them. Type, color, motion and layout are mine, checked against WCAG AA and mobile first.
Platform migrations with redirects, URL structure and full QA
At Universal Wholesale the catalog moved across platforms: URL inventory, redirect map, data cleanup, QA before and after. I built ChangeAtlas and the CSV Mapper to check the data before it moves.
An independent contractor who scopes in hours and answers the same day
I scope each job, estimate it in hours, log time against the estimate and ship. As webmaster for a 200+ location retailer I ran the request queue for a whole company. The desk above is how I would run RMC’s. The Deals Operating System shows the checklist habit: 16 checks on every deal before it goes live.
Sixty days, then a rhythm.
The posting describes five to twenty-five hours a month with quick turnarounds and an ongoing relationship. This is what the first two months deliver and what every month after looks like.
Access, own house, first watchtower run
Hosting, registrar, Search Console and GA4 access for each client site. The own-house pass on recoverymovementconsult.com: H1s, titles, descriptions, schema, template leftovers, one price for the $500 offer. Watchtower v1 over every client domain, with a note on the two that are no longer serving their site.
- RMC site: 0/24 → 24/24 pages with schema
- Placeholders and template links gone
- Watchtower run + note to RMC
The standard on the first client
Recovery Community Network brought to standard: placeholders unpublished, slugs and footer links fixed, one H1 per page, tel: links, NonprofitOrganization schema. Recovery Africa’s donate path replaced. The desk running with hour logs from the first request.
- 1 client site to standard
- Donate path fixed and tested
- Desk live, hours logged
Five to twenty-five hours a month, accounted for
Every month: the watchtower note per client, routine updates in one to three days, and, when the month allows, one more site brought to standard. Every build starts with an estimate.
- Monthly note per client
- 1–3 day routine updates
- One site to standard per quarter
A watchtower run over the whole portfolio costs about an hour a month once the script is in place. The rest goes to requests, and when a month is quiet, to the next site on the list. Nothing starts without an estimate, and the hours are logged where RMC can see them.
A $500 site is a promise that it will still work next year. A standard keeps the promise at launch, a watchtower keeps it every month, and a desk keeps it when the client emails. I have built all three before, for catalogs. I would like to build them for recovery organizations.
Shannon, thirty minutes, screen-shared.
- A 30-minute walkthroughThe review, the standard, the watchtower run. Bring one client site and I’ll audit it live.
- Access and baselineHosting, registrar, Search Console and GA4 for each client; the own-house pass on recoverymovementconsult.com.
- The standard, one client at a timeStarting with the sites on your testimonials page, so the work you show is the work you sell.
- The monthly noteGreen, amber, red per client, hours against budget, and the one decision that needs you.
Independent contractor in Michigan, Eastern Time: two hours ahead of Utah, so I am online before your day starts and can stay through your afternoon. Requests answered within one business day, routine updates in one to three.
Email hireme@mousabatarseh.com (248) 810-1816Independent proposal by Mousa Batarseh, Warren, MI, submitted with his application for Recovery Movement Consulting’s Website Developer & SEO Specialist role. Not affiliated with, endorsed by, or created for Recovery Movement Consulting or its clients. Recovery Movement Consulting, Recovery Community Network, Recovery Africa, Hope Town Ohio, Nebraska Minority Resource Center and Utah Pet Aquamation are named only as evidence; figures come from public pages sampled Sep 22, 2026 and may have changed. Who built Hope Town Ohio’s current site is not stated on it. Riverbend Recovery Community, its address, phone and meetings are fictional.