Application · Website Developer & SEO SpecialistMousa Batarseh · Sep 22, 2026

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.

01 · Website review

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.

MetricRMCrecoverymovementconsult.com · WixRecovery Community Networkrecoverycommunitynetwork.com · WixRecovery Africarecoveryafrica.org · SquarespaceHope 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 weight1.35 MB · 64 scripts1.40 MB · 66 scripts146 KB · 40 scripts24 KB · 4 scripts (4.4 MB of images)
Canonical hostwww, 2 redirect hops from http://apexwww, 2 hopswww, 1 hopwww and non-www both answer 200; no canonical tags
Sitemap and robots.txtBoth; 90 URLs, one redirectsBoth; 59 URLsBoth; 64 URLsNeither (404)
Placeholder or template pages live/about-5, /copy-of-…, /samsha-…4 × “Project Name 0x” + 8 real pages on leftover slugs2 × “New Page” + 5 pages on default slugs3 old WordPress URLs return 404 with no redirect
68 pages sampled from public URLs on Sep 22, 2026 (24 + 15 + 15 + 14). Recovery Community Network and Recovery Africa are named as website clients on recoverymovementconsult.com/testimonials; Recovery Africa credits Shannon Egan in its footer. Hope Town Ohio is the lead testimonial; who built its current site is not stated.
RMC · schema01

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.

What I’d shipOrganization, Service and FAQPage schema applied by template on RMC’s site; NonprofitOrganization or LocalBusiness with address, phone and hours on every client site.
RMC · on-page02

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.

What I’d shipOne H1 per page, titles under 60, descriptions under 160, unique on every page. On Wix this is an afternoon in the SEO panel.
RMC · template03

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.

What I’d shipA launch checklist nobody skips: slugs, social links, footer year, one price, no placeholders. Then the same list on every client site.
Client · Wix04

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.

What I’d shipThe standard applied to the sites on the testimonials page first, so the work RMC shows is the work RMC sells.
Client · Squarespace05

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.

What I’d shipA monthly watchtower that flags stale content, placeholder pages and broken donation paths, with a note to the client before a donor finds it.
Client · domains06

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.

What I’d shipDomain, SSL and redirect checks on every client domain, monthly, so RMC hears about it first and can reach the client.
0pages sampled across four sites
0/24RMC pages with Organization or FAQ schema
0placeholder pages live and indexed on one client site
0testimonial domains no longer serving their site
02 · The build standard

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.

  • One H1, a title under 60, a description under 160, unique on every pageThe first thing a search result and a screen reader both read.
  • No placeholders, no template slugs, no template social links, current footer yearThe marks that tell a visitor nobody looked after launch.
  • NonprofitOrganization 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.
  • One 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.
  • Alt 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.
  • Speed 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.
  • Launch 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.
  • Migration 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.
Template, as found

The same page twice: the marks found on the sites above, then under the standard. Riverbend Recovery Community is fictional.

03 · The watchtower

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.

Watchtower · September run · 6 client domainspublic checks · Sep 22, 2026
SiteDomainSSLRedirectsPlaceholdersSchemaAlt textWeightNewest content
Recovery Movement Consultingrecoverymovementconsult.com · WixLiveLE · Oct 282 hops3 leftover slugsWebSite only89%1.35 MB2025
Recovery Community Networkrecoverycommunitynetwork.com · WixLiveLE · Nov 252 hops4 placeholdersLocalBusiness88%1.40 MBRecent
Recovery Africarecoveryafrica.org · SquarespaceLivewww only · Nov 131 hop2 “New Page”WebSite only83%146 KB2020
Hope Town Ohiohopetownohio.org · staticLiveGTS · Nov 152 hosts, no canonical3 old URLs 404None63%4.4 MB imagesRecent
Nebraska Minority Resource Centernmrc-inc.orgParked (GoDaddy)——————No site
Utah Pet Aquamationutahpetaquamation.comThird-party redirect——————No site
Checks: HTTP status and host canonicalization, certificate issuer and expiry (LE = Let’s Encrypt, GTS = Google Trust Services), redirect hops from http://apex, placeholder and template slugs, JSON-LD types, image alt coverage, homepage HTML and image weight, newest dated content. Amber is a note, red is a call.
What the client gets

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.

What RMC gets

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.

Watchtower · the monthly check, one line per domainsnippet
# 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.
JSON-LD · a recovery organization as an entitysnippet
{ "@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.
04 · The desk

A request, start to finish.

≤ 1 business day response1–3 business days routine updatesSame day urgent, when reachableEstimate first every build
Station 01Request

Request

A client emails: “Our meeting schedule changed and the donate button is broken.”

OutcomeTicket opened, client acknowledged inside the business day, RMC copied.
Station 02Estimate

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.

OutcomeAn estimate the client can say yes to, inside their monthly hours.
Station 03Build

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.

OutcomeNothing touches the live site until QA.
Station 04QA

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.

OutcomeA checklist, the same one every time, kept with the ticket.
Station 05Launch

Launch

Published, cache cleared, the changed URLs checked in Search Console, the donate path tested with a real $1.

OutcomeRoutine updates land in one to three business days. Urgent ones the same day when I’m reachable.
Station 06Note

Note

Three lines to the client and RMC: what changed, what it cost in hours, what I noticed while I was in there.

OutcomeHours logged against the client, visible to RMC any time.
The standard · code

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.

Migration · the redirect map for a static hostsnippet
# _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
Event schema · a weekly meeting, findable by searchsnippet
{ "@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.
05 · Requirement by requirement

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.

Websites across multiple platforms

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.

Advanced SEO: technical, on-page, structure, analytics

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 portfolio with measurable SEO results

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.

Hosting, servers, domains, DNS, SSL, migrations, backups, security

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.

HTML and CSS, troubleshooting code and platform issues

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.

Google Analytics and Search Console

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.

A strong design eye, without constant direction

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.

SEO kept through redesigns and migrations

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.

Independent, multi-client, accurate estimates, fast turnaround

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.

The first sixty days, then monthly

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.

First 30 days

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
Days 31–60

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
Ongoing

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
5–25 hper month

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.

Mousa Batarseh · Web development & technical SEO · Warren, MI
06 · Let’s talk

Shannon, thirty minutes, screen-shared.

  1. A 30-minute walkthroughThe review, the standard, the watchtower run. Bring one client site and I’ll audit it live.
  2. Access and baselineHosting, registrar, Search Console and GA4 for each client; the own-house pass on recoverymovementconsult.com.
  3. The standard, one client at a timeStarting with the sites on your testimonials page, so the work you show is the work you sell.
  4. 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-1816