SINGLE URL ROAST
https://mair.ma/ “Strong mission, sloppy signal discipline.” MAIR is trying to recruit Morocco’s AI minds while the page acts like it forgot to bring the welcome packet. The Discord invite is there, but the site keeps hiding the good parts behind a text wall and a missing sense of urgency.
https://mair.ma/ screenshot TECHNICAL SUMMARY The good news: the document is crawlable, canonical is correct, and the server is basically caffeinated at 20 ms with zero layout shift. The bad news: LCP is 3.9 s, FCP is 2.9 s, render-blocking work is costing an estimated 1,040 ms, image delivery could save 1,478 KiB, and the page still ships a 404 favicon plus zero JSON-LD, which is a weird way to ask AI researchers to trust you with their attention and their click.
Categories 6 categories AI Visibility Partial Rewrite Owner only Share Share link 02
Schema JSON-LD 0 robots.txt Missing sitemap.xml Missing Canonical Present and matches
🔥 You have a canonical URL and crawlability, which is lovely, because the rest of the search stack showed up wearing one sock and no ID badge.Show 2 more roasts 💀 Google can find you, but you’ve given it the bare minimum and a shrug.
Priority Fixes (3) → Add JSON-LD structured data for the page type, starting with Organization and WebSite. Schema: None Impact: medium Effort: medium
Why this matters Schema is completely absent, so search engines get no structured context for MAIR’s mission or identity.
→ Publish a robots.txt file so crawlers have explicit guidance instead of guessing. robots.txt: Missing Impact: medium Effort: low
Why this matters robots.txt is missing, which leaves crawler behavior unframed for a site that should be discoverable.
→ Generate and submit a sitemap.xml so the site’s key pages are not relying on luck and links alone. sitemap.xml: Missing Impact: medium Effort: low
Why this matters Without a sitemap, search engines have less efficient access to the site structure and priority URLs.
03
Images 13 Font families 15 Heading count 13 Unsized images score 0.5
🔥 The layout is clean, but 13 images with unsized assets means the page is still doing visual improv in production.Show 2 more roasts 💀 The page looks organized until you notice the font buffet and the image chaos.
Priority Fixes (3) → Add supporting imagery that reinforces the community and research story instead of leaving the layout visually underfed. Images: 13 Impact: medium Effort: medium
Why this matters With 13 images but weak visual support, the page needs intentional imagery to feel less empty and more credible.
→ Reduce the font stack from 15 families to 2–3 to stop the page from looking like it borrowed half the internet. Font Families: 15 Impact: medium Effort: low
Why this matters Fifteen font families is visual noise, not typography strategy.
→ Test spacing and alignment across breakpoints so the heading stack does not keep fighting itself on smaller screens. Viewport: Present Impact: low Effort: medium
Why this matters The viewport is present, so the remaining risk is breakpoint behavior and spacing consistency.
04
Word count 673 Sentence count 40 CTA count 1 H1 count 1
🔥 Your H1 is decent, but the rest of the page has 673 words and 40 sentences, so the message occasionally feels like it’s applying for tenure.Show 2 more roasts 💀 The copy knows the organization’s name, but not always the next step.
Priority Fixes (3) → Tighten the headline so it states the value proposition in one direct sentence. H1 Count: 1 Impact: medium Effort: low
Why this matters The page has one main headline, so it needs to do more work and say exactly why a Moroccan AI researcher should care.
→ Break long paragraphs into shorter lines and bullets so the page stops reading like a committee memo. Avg Words/Sentence: 17 Impact: low Effort: medium
Why this matters The page’s 673 words across 40 sentences are workable, but skimmability will matter for a community audience scanning fast.
→ Make the primary CTA stand out more clearly so the Discord invite doesn’t blend into the background. CTA Count: 1 Impact: medium Effort: low
Why this matters With only one CTA, that line needs to carry the whole action path instead of looking like a polite suggestion.
05
Broken assets 1 JS errors 1 Buttons 8 CTA count 1
🔥 The favicon 404 is a tiny error with huge main-character energy: even the browser tab can’t get a proper identity card.Show 2 more roasts 💀 The user journey is mostly intact, but the browser still tripped on the welcome mat.
Priority Fixes (3) → Repair the broken favicon path so the page stops advertising a 404 in the browser chrome. Broken Assets: 1 Impact: high Effort: medium
Why this matters The favicon request is failing with a 404, which is a visible quality miss even before the page content starts.
→ Fix the client-side JavaScript error so interactions do not fail silently in production. JS Errors: 1 Impact: high Effort: medium
Why this matters A console error means at least one runtime failure occurred, which is bad enough on a site trying to build trust and participation.
→ Keep navigation and footer links consistent across pages so visitors do not feel like they’re touring different drafts of the same project. Nav/Footer: Nav / Footer Impact: low Effort: medium
Why this matters The site already has nav and footer patterns, so consistency is the fix that keeps the experience predictable.
06
CTA count 1 Form inputs 2 Required inputs 0 Social proof 1
🔥 A single CTA for a Discord-first nonprofit is brave, but brave is not the same as effective.Show 2 more roasts 💀 It asks for a join, but doesn’t exactly stage a convincing reason to do it now.
Priority Fixes (3) → Add a primary CTA above the fold that matches the Discord join goal and is impossible to miss. CTA Count: 1 Impact: medium Effort: low
Why this matters The page has only one CTA, so the main action needs stronger placement and visibility right away.
→ Place social proof near the CTA so visitors see credibility before they make the jump. Social Proof: 1 Impact: medium Effort: low
Why this matters With only one social proof element, the page needs to position it where it reduces uncertainty at the decision point.
→ Offer a low-friction contact option - form, chat, or visible email. Contact Path: Present Impact: low Effort: medium
Why this matters A contact signal exists, but conversion paths should remain obvious.