Ayan SEO — Delivery Tracker

Forty-seven tasks, ordered so nothing starts before the thing it depends on is fixed

Every item from the scope of work, re-verified against a full crawl of the live site. Where the audit and the current site disagree, the tracker states what is on the page today.

Sources — Ayan Capital SEO Scope of Work (9pp) · full crawl of all 147 sitemap URLs, 11 August 2026
Crawl data — seo-data/crawl.tsv (147 rows × 53 fields) · seo-data/links.tsv (4,557 internal link edges)
Headline — 139 pages returned 200, 8 returned 404; 4 money pages have zero internal links; 138 of 139 pages carry no structured data
Owners — Onur (SEO) · Dev · Nabihah (brand and content)
Updated — 27 August 2026 · quick wins 1, 3, 5, 6 and 8 built on staging · workstream A reviewed with Onur
Live — production was published by the team on 26 Aug, taking T-2, T-3, T-9, C-6 and E-1 live along with /calculator
Updated — 21 August 2026 · five tasks built on staging, one new technical task added (T-11) · live verified unchanged
Re-audited — all eight quick wins re-tested against live on 21 Aug: all still open · A-1 unblocked, GSC access confirmed working · keyword-gap analysis added from a 90-day pull

One set of IDs across every document. The task IDs here are now the only scheme in use. The annotated homepage build uses the same labels — the chip marked E-1 on that page is this E-1, and so on — so a finding can be traced from the page it appears on to the task that fixes it without a lookup table.

Five tasks below were found after the scope of work was written, by crawling the live site: C-5, C-6, T-7, T-8 and T-9.

Five tasks are built but not delivered. T-2, T-3, T-9, C-6 and E-1 exist only on ayanuk.webflow.io. They carry a Built — staging pill rather than a green one, because nothing has been published to www.ayan.co.uk.

Live was re-verified on 21 August and is unchanged — 17 of 17 checks confirm the old hero copy, the empty heading, the modal <h2>s and nine H1s per blog post are all still in place. Promoting to live is a separate, deliberate publish.

Escalate

Outside the SEO board

The scope of work is explicit that this is not an SEO ticket. It is on this list only so it cannot be lost between the two boards.

  • SEC-1/Dev/Security — urgent
    P0
    Detail

    Audit item 8.A. Credentials in URLs leak into referrer headers, browser history, server logs and any analytics pipeline. Route this through the security process, not the SEO tracker — the SEO consequence, that these URLs become crawlable, is the least serious part of the problem.

Phase 0

Quick wins

All small, all high-value, all inside Webflow. Each one re-verified against the live site on 11 August 2026 — the status below reflects what is actually on the page today, not what the audit found when it was written.

Six of eight now done — all on staging

QW-1, QW-3, QW-5, QW-6 and QW-8 were built on 26-27 August and verified; QW-7 was already done. None of it is on www.ayan.co.uk yet — it ships with the next production publish.

Two still need a person. QW-4 (robots.txt) is Site Settings only, not exposed in the API. QW-2 is smaller than ticketed — only the title needs rewriting; see the correction on that task.

  • QW-1/Onur/Highest-value fix on the list/Done on staging
    Built — staging
    Detail

    Done on staging, 26 Aug — all four footer links repointed to www.ayan.co.uk. Re-measured before the change: 612 links across 153 of 154 pages, worse than the 553 in the audit. Now zero. All four live equivalents return 200, so it was a pure repoint with no content work.

    Confirmed, and the blast radius is measured — 553 staging links across 138 of the 139 live pages, i.e. the same four footer links on essentially every URL, leaking internal link equity site-wide to an external staging domain.

    Correction to the scope of work: it says two of the four already exist on the live domain. All four do — core-principles-behind-ayans-car-finance, how-to-sorn-car, what-oil-for-my-car, winter-driving-tips. This is a pure repoint with no content work attached.

  • QW-2/Onur/127,214 impressions @ 0.02% CTR/Smaller than ticketed
    P0
    Detail

    Correction, 26 Aug. Two of the three claims in this ticket are wrong. The meta description exists ("Navigating the intersection of ethical finance and smart driving...") and the H1 is not empty — it renders "Values In Motion: The Ayan Journal." The earlier "missing" reading came from a detection pattern that assumed Webflow writes name before content; it writes them the other way round. Only the title needs rewriting, from the literal Ayan Blog.

    Confirmed — the title is literally Ayan Blog and the <h1> renders empty. At that impression volume this is a snippet problem, not a ranking problem, and it is the cheapest single win available.

    If it cannot be made to earn clicks, noindex it and record that decision rather than leaving it ambiguous.

  • QW-3/Onur/12 URLs/Done on staging
    Built — staging
    Detail

    Done on staging, 26 Aug — one edit on the category template covers all twelve: <meta name="robots" content="noindex, follow">. Verified 12/12. follow was kept deliberately so the pages still pass equity to the posts they link to. Homepage, blog archive, posts and calculator confirmed unaffected.

    All twelve are in the sitemap today: all, ayan-updates, car-reviews, customer-service, driving-tips, electric-vehicles, ethical-banking, halal-finance, phv-insights, taxi-industry, uber-tips, vehicle-finance. They earn no traffic and consume crawl budget.

    Confirmed — there is no meta robots tag on any page anywhere on the site, so nothing is currently noindexed by any means. Crawl baseline captured before the change, so the effect will be measurable.

  • QW-4/Onur/Webflow site settings
    P0
    Detail

    Confirmed — ayan.co.uk/robots.txt currently contains a single Sitemap: line and nothing else. There is no user-agent block at all.

  • QW-5/Onur + Nabihah/Needs a share image designed/Done on staging
    Built — staging
    Detail

    Done on staging, 27 Aug — a 1200x630 card was designed from the live wordmark and brand tokens, uploaded to Webflow assets, and set on 20 pages plus both CMS templates. Webflow emits og:image and twitter:image from that one field. Coverage: 152 of 155 sitemap pages; the other three keep their own bespoke artwork. This also closes a live mismatch, since twitter:card was already summary_large_image, promising an image that did not exist.

    Set via page settings rather than site-wide head code, so the three pages with their own images do not end up with two competing og:image tags. The image deliberately carries no rate or price: it is a site-wide default that platforms cache and cannot be revised per page.

    Confirmed site-wide — og:title, og:description, og:type, twitter:title, twitter:description and twitter:card are present. 136 of 139 live pages have neither og:image nor twitter:image, and not one page anywhere has og:url.

    Worth flagging in itself: twitter:card is set to summary_large_image, which promises a large image the page never supplies. Every share of every page currently renders blank. Raise the design request with Nabihah — this is blocked on an asset, not on implementation.

  • QW-6/Dev/Onur writes the ticket/Swiper fixed; charset is Webflow's
    Built — staging
    Detail

    Half done on staging, 27 Aug — the duplicate Swiper stylesheet is gone (2 to 1). GTM, CookieYes, all four font preloads, the JSON-LD and the DM Sans rule were all preserved and re-verified.

    The second charset tag cannot be removed. It is emitted by Webflow itself, alongside its Google Ads injection, and is absent from the site head, site footer, page head and every registered script. Harmless in practice: browsers honour the first declaration. The Swiper duplicate was the half that actually cost a request on every page.

    Confirmed — the homepage head contains both <meta charset="utf-8"/> and <meta charset="UTF-8" />. Swiper CSS is requested twice.

  • QW-8/Onur/Found by the crawl — zero inbound links/Done on staging
    Built — staging
    Detail

    Done on staging, 27 Aug — all four pages went from 0 to 153 inbound internal links, via the footer only.

    Most of the fix was uncovering what already existed: Electric Cars, Rent to Buy and Car Hire were already in the footer but their list items were set to visibility: false and their links to linkType: none. Someone had built the column and switched it off. Only /interest-free-car-finance needed a new label.

    Confirmed against all 4,557 internal link edges — these four pages have no internal links pointing at them from anywhere on the site, and are therefore unreachable by crawling from the homepage. Google can only find them via the sitemap.

    /interest-free-car-finance (861 words) · /pco-rent-to-buy-cars (1,776) · /electric-pco-cars (1,563) · /pco-car-hire (1,540).

    That is roughly 5,700 words of commercial landing-page content receiving zero internal link equity. For comparison, every other core page has 137 or 138 inbound links. /interest-free-car-finance targets a named core keyword cluster in Workstream B and is currently invisible to internal crawling.

    This is a nav or footer edit in Webflow. It is the highest-leverage fix on the entire tracker and requires no new content, no dev time and no data access.

  • QW-7/Onur/Verification only
    Fix applied
    Detail

    Already fixed — ayanuk.webflow.io/robots.txt now returns User-agent: * / Disallow: /. Webflow subdomain indexing has been turned off since the audit was written.

    The subdomain still resolves and returns 200, so anything already in the index needs to age out. Verify removal in Search Console rather than assuming it, then close.

Workstream A

Indexation and crawl waste

Priority one in the scope of work: nothing else works until Google can crawl and index the right pages. Deliverable is one spreadsheet, one page per row. Acceptance — Nabihah picks any five URLs from the sheet, pastes them into URL Inspection, and the live status matches what the sheet says.

  • A-1/Onur/Unblocked 21 Aug — GSC access working/Done
    P0
    Detail

    Done. Confirmed complete by Onur, 27 August 2026.

    No longer blocked, 21 Aug 2026 — the service account reads sc-domain:ayan.co.uk successfully; a 90-day pull returned 67,771 query rows and 86,691 page+query rows. The urlInspection endpoint this task needs is a separate call but the same credential. Nothing external is now in the way of building the sheet.

    Every URL that is not indexed, with: exact Google status (“Crawled – currently not indexed”, “Discovered – currently not indexed”, “Duplicate without user-selected canonical”, “Excluded by noindex tag”), whether we want it indexed (yes / no / unsure), diagnosed cause, fix, owner, status.

    These statuses come from the urlInspection.index.inspect API endpoint, not from searchanalytics.query. That endpoint is capped at 2,000 calls a day, which comfortably covers 133 indexable URLs but will not support inspecting everything repeatedly.

  • A-2/Onur/241 fragment URLs, 249 query-string rows/Deprioritised
    P0
    Detail

    Deprioritised, 27 Aug — judged not important for now. Worth noting the premise holds up: canonical tags are present and self-referencing on every page, live included, exactly as this task assumed. An earlier claim in this workstream that canonicals were missing was a false reading from an attribute-order-dependent pattern, and is withdrawn.

    Must state which URL is canonical for blog pagination, activeTab parameters, marketing parameters and fragment URLs. At the volume the audit found, a per-case approach will not converge.

    One live detail for the policy to resolve: the homepage canonical is https://www.ayan.co.uk with no trailing slash, while the sitemap and internal links are inconsistent about it.

  • A-3/Onur/Partially done/Done
    P1
    Detail

    Done, 27 Aug — sitemap contents reviewed. Excluding the twelve category pages and /complaints was considered and deliberately not done: Webflow offers no per-page sitemap exclusion, so it would mean abandoning the auto-generated sitemap for a hand-maintained file that goes stale the moment a post is published. The categories are already noindex under QW-3 and will leave the index regardless — sitemap membership is a discovery hint, not an indexing instruction. Auto-generate stays on.

    Crawled 11 Aug 2026 — 147 URLs total: 121 blog posts, 12 category pages, 13 core pages, and no lastmod dates on any entry. The twelve category pages are the clear “should not be here” set, covered by QW-3.

    Missing lastmod is worth raising separately — it costs nothing and helps recrawl prioritisation across 121 posts.

  • A-4/Onur/One cluster already visible
    P1
    Detail

    Delivered — cannibalisation analysis built and reported: every non-brand query sharing impressions with another URL, fragment URLs folded, brand terms excluded, ranked by shared impressions rather than raw volume. Re-confirmed 21 Aug against a fresh 90-day pull.

    Found before the sheet exists — four pages target PCO and Uber vehicle terms: /private-hire, /pco-car-hire, /uber-rental-cars, /pco-rent-to-buy-cars. Three of them carry near-identical meta descriptions, all promising insurance and servicing included on flexible terms.

    The crawl reframes this. They are not competing on equal footing: /private-hire has 137 internal inbound links and /uber-rental-cars 137, while /pco-car-hire and /pco-rent-to-buy-cars have zero (see QW-8). Whatever cannibalisation exists in the SERP, internally the site has already picked two winners by accident rather than by decision.

    Resolution depends on C-1 — whether the rental fleet is a real product. Flag it here; do not consolidate until that answer lands.

  • A-6/Onur/8 dead URLs, 11 missing posts/Sitemap fixed; 301s outstanding
    P0
    Detail

    Sitemap half done. The live sitemap is now clean: 154 of 154 URLs return 200, and all eight dated slugs have gone. The 301s were never added. Those eight URLs still return 404 — the sitemap no longer lists them, which quiets Search Console, but any external link or lingering search result pointing at a dated URL still dead-ends. The audit put 41,329 impressions against them. Redirects are Webflow Site Settings, not API-exposed.

    Eight sitemap URLs return 404 — 10-cheapest-cars-for-new-drivers-to-insure-in-2026 · best-cars-for-uber-xl-in-2025-… · edinburgh-airport-drop-off-and-pick-up-fees-2026 · essentials-every-uber-driver-needs-in-2025 · halal-car-finance-uk-everything-you-need-to-know-in-2025 · how-much-do-uber-drivers-really-make-in-london-2026-… · how-to-get-more-rides-on-uber-in-2025 · top-10-cars-for-uber-drivers-in-2025.

    Every one of them is a dated slug whose undated twin is live and internally linked. Posts were renamed to strip the year, and no redirects were put in place — so any accumulated ranking and any external link to the old URL is being dropped on the floor. One of the eight is a core halal finance post.

    Eleven posts are linked internally but absent from the sitemap — including how-to-buy-a-car-the-halal-way, best-cars-for-learner-drivers and what-is-a-mild-hybrid-car.

    Net effect: the true live post count is around 124, not the 121 in the sitemap and not the 49 in the scope of work. Add 301s for the eight dead slugs, get the eleven missing posts into the sitemap, and re-verify before A-1 is built on top of it.

  • A-5/Dev builds, Onur writes/Outside Webflow/Reported to the team
    P1
    Detail

    Reported to the team, 27 August 2026. Handed over for ticketing; the app routes sit outside Webflow so the fix is not ours to make.

    These sit outside the Webflow site so they cannot be fixed from Site Settings. Related to SEC-1 — the same app surface is where credentials are appearing in URLs. Worth writing as one ticket with two acceptance criteria.

Workstream B

Keyword map

There is no keyword map today. It is the foundation for workstreams C and D, so it comes before them. Acceptance — every indexable URL appears exactly once in Sheet 1 with a primary keyword assigned, and no two URLs share the same primary keyword.

  • B-1/Onur/Blocked on Ahrefs or Semrush
    Blocked
    Detail

    Scope is 133 indexable URLs once the twelve categories are noindexed. The uniqueness rule in the acceptance criteria is what will surface the cannibalisation in A-4 formally.

    Current position and the queries each URL actually ranks for come free from the GSC API with page and query dimensions — do that pull before buying keyword data, since it grounds the map in what we rank for rather than what we assume.

  • B-2/Onur/Seven mandated clusters
    Blocked
    Detail

    Clusters to cover as a minimum — core (halal / Islamic / Sharia / Shariah-compliant / interest-free / no-interest / riba-free car finance); structure (Ijara, Ijara wa Iqtina, Murabaha, rent-to-own, lease-to-own); question-led (is car finance haram, is PCP haram, is HP halal, is a car loan riba, halal alternative to PCP); circumstance (self-employed, no deposit, first-time buyer, students, new to the UK); geographic (London, Birmingham, Manchester, Leicester, Bradford, Nottingham, Bolton); vehicle and use-case (halal van finance, halal PCO / Uber car finance, halal finance for 7-seaters); comparison (vs PCP, vs personal loan, vs 0% APR).

    The scope is explicit that a term with 200 searches a month and buying intent is worth more than 5,000 informational searches.

  • B-3/Onur/Landscape mapped, needs SERP data
    P1
    Detail

    Direct — halal finance. Halal Cars (closest real rival; claims AAOIFI and ICRIE audit; blocks crawlers) · Totalee Halal · InterestFree4Cars · Halal Motor Leasing · ShariaCarFinance (new, thin, still “launching soon”, and an Appointed Representative rather than a lender) · Forza Finance and Saxtons (brokers with a halal page bolted on).

    The larger threat — informational interception. Kandoo owns a full guide cluster (sharia-compliant-car-finance-uk, car-finance-options-for-muslims, best-halal-car-finance-options, halal-car-finance-for-bad-credit) — a broker beating a direct lender on the lender's own topic. MyHalalMoney owns the category-defining listicle and ranks for commercial-investigation intent. CarFinance247 has a halal explainer backed by far more authority than us.

    PCO and rental. Otto Car, Splend, Fleeto, WeFlex, Hertz. Note G&M Direct Hire, who run an effective and very cheap comparison play — /blog/splend-alternatives, /blog/6-alternatives-to-otto-cars, /blog/hertz-pco-alternatives. We have no comparison content on either side of the business.

  • B-4/Onur/Added to scope
    P1
    Detail

    Halal finance is national, religiously differentiated, and competes with Halal Cars and Kandoo. PCO and rental is London-weighted, operational, price-led, and competes with Otto Car and Splend. They share a blog today and dilute each other.

    One map with one intent model cannot serve both. Two tabs, two competitor sets, two content plans.

Workstream C

Landing pages

Two different things get called landing pages: paid-media pages built for Meta conversion, and indexable keyword-targeted SEO pages built to rank. We need more of both. Acceptance — each new page passes the Rich Results Test with no errors, returns “URL is on Google” within 21 days of publication, and has its starting and current position logged.

  • C-1/Onur → Nabihah/Blocks C-2, C-3 and A-4
    Blocked
    Detail

    /uber-rental-cars and /pco-car-hire sell hire from “Ayan's trusted fleet” with insurance and servicing included. That is a fundamentally different product from lease-to-own finance, and it is not mentioned anywhere on the homepage.

    If the fleet is real it needs its own keyword map, its own competitor set and its own landing pages. If those pages are legacy, the answer is to consolidate or retire four URLs rather than optimise them. Everything else in this workstream waits on the answer.

  • C-2/Onur/After B-2
    P1
    Detail

    This is where the moat is. Ayan is an FCA direct lender with an AAOIFI audit, published rates and a national dealer network; most of the competitive set are brokers, appointed representatives or pre-launch. None of that is currently communicated on a page built to rank for the questions buyers actually search.

  • C-3/Onur → Nabihah/Needs local substance
    Blocked
    Detail

    London, Birmingham, Manchester, Leicester, Bradford, Nottingham, Bolton — chosen to match the out-of-home footprint, which is a genuine supporting-media argument for prioritising them.

    The question to answer first is whether we have anything real to put on them: local dealer relationships, customer numbers, a local team, regional case studies. Seven boilerplate doorway pages for an FCA-regulated lender is a risk worth refusing rather than absorbing.

  • C-5/Onur + Compliance/Blocked on sign-off
    P1
    Detail

    Measured — the homepage states "from 7.9% APR-equivalent, representative 11.9%" and no monetary figure at all. No monthly payment, no total payable, no worked example. Zero pages on the site show one.

    People search "halal car finance monthly payments" and "how much is car finance on £15,000" — a page with no numbers cannot match those. Specific figures in a table are also among the most-lifted formats for featured snippets.

    Blocked: a representative example has a defined legal format for a regulated lender. Compliance must sign off both the figures and the wording. A draft that reconciles at the published 11.9% is in the review build.

  • C-6/Onur → Product/6 terms with zero coverage
    Live
    Detail

    Live since 26 August 2026. Published to production by the team, not from this workstream. What was described below as staging-only is now on www.ayan.co.uk.

    Built on staging, 18–21 Aug — a four-card "What you need to know" section now answers where we operate, what we can finance, who we finance and how long it takes, with brand-green SVG icons and an apply panel beneath. Compliance review has since moved the card labels off lender language ("Where we lend" → "Where we operate", "Who we lend to" → "Who we finance"). Still uncovered: "self-employed" and "no deposit" appear nowhere on the site and need Product to confirm the answer. Not yet live.

    Measured on the homepage — eligib… 0, self-employed 0, no deposit 0, credit check 0, proof of… 0, how long 0. The only qualifying language is "open to anyone to apply (subject to status)".

    This is the largest cluster of unclaimed long-tail intent on the site. Stating limits plainly — including not lending in Northern Ireland — also reads as trustworthy where missing eligibility information reads as evasive, and it cuts wasted applications.

    Needs Product to confirm whether Ayan lends to the self-employed, to applicants with poor credit history, and without a deposit. Those three answers are deliberately left blank in the review build rather than guessed.

  • C-4/Nabihah, Onur supporting/Conversion, not ranking
    P2
    Detail

    Built for conversion, not for search. Keep them out of the keyword map and confirm the canonical and indexing policy for them explicitly in A-2 so they cannot compete with the SEO pages.

Workstream D

Blog engine

Fix the template before adding volume. Cadence is to be proposed rather than assumed — two well-optimised posts a week beats five thin ones.

  • D-1/Onur/Blocked — Nabihah to share audit rules
    Blocked
    Detail

    Confirm the collection has fields for, and the template correctly outputs: SEO title, meta description, og:image, canonical, author name and bio, table of contents, featured image with alt text, and Article schema.

  • D-2/Onur/121 posts, not 49
    P1
    Detail

    Scope correction — the scope of work estimates roughly 49 existing posts in D1. The crawl finds about 124 live posts (113 reachable from the sitemap, plus 11 linked internally but missing from it — see A-6). The retro-fit job is roughly two and a half times the size it was scoped at, and the estimate should be reset before it is committed to.

    Internal linking is the bigger problem than length. Median post length is 798 words and only five posts fall under 500, so the corpus is not especially thin. But 68 of 129 posts have exactly one internal inbound link, and no post contains a single contextual in-content link to a money page — every money-page link on every post is identical navigation chrome, with the same anchor text repeated across all 138 pages. Fixing that is cheaper than rewriting and worth more.

    Fix the posts already getting attention first — this depends on the impressions data in A-1.

  • D-3/Onur/Gap in the document
    P1
    Detail

    Section 7, D2 “Blog automation and weekly cadence” is a single empty bullet, but blog automation is priority five in section 1. It cannot be estimated, resourced or agreed until it is written. Propose a cadence with it rather than waiting to be told one.

  • D-4/Onur/~10 of 121 posts on topic
    P0
    Detail

    Measured from the live sitemap — of 121 posts, only about ten are about halal or Islamic finance. Roughly ten more are car-finance adjacent (voluntary termination, HP vs PCP, credit score, guarantors) and are salvageable with a halal angle and internal links. The remaining hundred or so are generic motoring.

    Missing entirely, and named in the scope of work: is car finance haram · is PCP haram, is hire purchase halal · is a car loan riba · what is Ijara wa Iqtina · halal car insurance and Takaful explained · what to ask before taking any car finance as a Muslim.

    This is the single clearest content finding. The blog is answering questions a Muslim car buyer is not asking, while Kandoo answers the ones they are.

  • D-5/Onur/Named in scope
    P1
    Detail

    What documents you need for car finance · how long approval takes · car finance with no deposit · settling car finance early · part-exchanging a car with outstanding finance · what happens at the end of a rent-to-own agreement.

  • D-6/Onur + Nabihah/Campaign clash — time-sensitive
    P1
    Detail

    The September 2026 registration change is a strong seasonal target, but it overlaps a live UGC campaign running mid-August to mid-November 2026. The scope of work is explicit that Nabihah must be consulted before publishing.

    Note the date: that campaign window opens this month, so this needs raising at the next Friday catch-up rather than at the next planning cycle. Car tax changes 2026 sits in the same timely group.

  • D-7/Onur/Prune, merge or keep
    P2
    Detail

    Eight separate airport posts (Heathrow twice, Gatwick, Luton, Stansted, Manchester, Birmingham, Edinburgh), plus material like best-car-air-fresheners, how-to-jump-start-a-car and best-muslim-radio-stations-in-the-uk.

    These are very likely a large share of the 127,214 impressions at 0.02% CTR. They compete with the RAC and Auto Express for traffic that cannot convert into car finance. Make an explicit decision — consolidate, noindex or keep — and record the reasoning, because this is the kind of call that gets silently reversed later.

Workstream E

Entity and brand search

Social media SEO is not one thing, and hashtag optimisation is not it. For a regulated finance brand, Google guessing at our identity is a genuine problem.

  • E-1/Onur/Needs a paid Webflow site plan
    Live
    Detail

    Live since 26 August 2026. Published to production by the team, not from this workstream. What was described below as staging-only is now on www.ayan.co.uk.

    Built on staging, 18–21 Aug — no longer blocked — one @graph in the site-wide head carries FinancialService (FCA firm reference, company number, ICO registration, address, opening hours, seven sameAs profiles) linked by @id to WebSite. The blog template adds BlogPosting + BreadcrumbList bound to CMS fields. Verified present on all 152 pages, validated with zero errors. FAQ markup was deliberately dropped — Google retired FAQ rich results for non-government/health sites in Aug 2023. Not yet live.

    Audit item 1 and the foundation of this whole workstream. Added via Webflow custom code, which requires a paid site plan — confirm the plan before scheduling the work.

    Correction — the site has almost no structured data. An earlier read suggested two ld+json blocks on the homepage; the full crawl shows those were matches inside JavaScript strings, not real script blocks. Parsed properly, exactly one page on the entire site carries structured data: /private-hire, with Organization, ContactPoint and PostalAddress. The other 138 live pages have none — no Article on any of the 121 posts, no BreadcrumbList, no WebSite, no FinancialService.

    Reuse the /private-hire block as the template for the entity facts, then extend site-wide.

    Entity facts to encode consistently: Ayan Capital Ltd, FCA FRN 1022208, Company No. 15123809, ICO ZB613240; affiliated Ayan Capital 1 Ltd, FRN 1021505, Company No. 15996246.

  • E-2/Onur/Named deliverable
    P1
    Detail

    Screenshot what Google currently shows for “Ayan Capital”, “Ayan car finance” and “Ayan halal finance”. Identify what is wrong or missing, fix what is fixable, ticket the rest.

  • E-3/Onur/Hours 9am–6pm, seven days
    P1
    Detail

    Complete the profile, keep hours accurate, post to it, respond to reviews. Ties directly into C-3 if the city pages go ahead.

  • E-4/Onur/Feeds E-1
    P2
    Detail

    Registered office: 4th Floor, 1 Kingdom Street, London W2 6BD. Support: support@ayancapital.co.uk. Phone: +44 20 3802 0292. These must match the schema in E-1 exactly, character for character.

  • E-5/Nabihah's creator roster/Coordination, not production
    P2
    Detail

    Both platforms are searched directly for “halal car finance”. Titles, descriptions, on-screen text, closed captions, keyword-led naming. Depends on B-2 landing first, or the naming will not align to anything.

Technical

Build and performance

Audit items 4 through 7. Mostly developer-owned, all re-verified against the live homepage on 11 August 2026.

  • T-1/Dev/Cause identified
    P0
    Detail

    Confirmed, diagnosed, and site-wide — the first image in the DOM carries loading="lazy" on all 139 live pages, not just the homepage. The LCP element is being explicitly deprioritised by the markup on every URL. This is very likely the majority of the 11.1 seconds, and fixing it at template level fixes it everywhere at once.

    Do not evaluate Partytown without developer sign-off.

  • T-2/Onur, in Designer/Confirmed live
    Live
    Detail

    Live since 26 August 2026. Published to production by the team, not from this workstream. What was described below as staging-only is now on www.ayan.co.uk.

    Built on staging, 18–21 Aug — the homepage now carries exactly one H1 ("Halal car finance. Finally."). The three process steps moved to H3, the Trustpilot slider heading to H2, and the two hero fragments became a single H1 when the duplicate hero was retired under T-9. Re-verified 21 Aug on ayanuk.webflow.io. Not yet live.

    Confirmed — seven <h1> elements, including “2. Add car details”, “3. Enter dealership bank details”, “4. Pick up & go” and “You're in good hands”. The process steps are numbered content, not page-level headings; they should be H3 within a properly headed section.

    Also fix the empty H1s on /blog and /faq, and the split heading on /interest-free-car-finance where “Interest Free” and “Car Finance” render as two separate H1s.

  • T-3/Onur/Template-level, one fix
    Live
    Detail

    Live since 26 August 2026. Published to production by the team, not from this workstream. What was described below as staging-only is now on www.ayan.co.uk.

    H1 half built on staging, 18–21 Aug — blog posts each carried nine H1s, eight of them from four shared template elements. Table of Contents (×2) and Related Articles moved to H2, the five related-post titles to H3, plus two posts whose authors had typed an H1 into the body. All 126 posts now have exactly one H1. The title-tag duplication half remains open.

    Found while verifying — /shariah-compliance still runs 5 H1s on staging and 6 on live ("Our Sharia", "certification", and two Mufti names). Not covered by the blog template fix; needs its own pass.

    Measured — the H1 duplicates the title verbatim on 113 pages, and the blog template emits nine H1 elements per post on 102 of them — worse than the homepage's seven. 129 of 139 pages also have at least one skipped heading level.

    One template change resolves it across the whole blog collection. Sequence it with D-1 so the template is touched once, not twice.

  • T-4/Dev, Onur specifying/Partly a rebuild decision
    P2
    Detail

    Confirmed site-wide — 146 of 147 URLs have zero <header>, <main>, <footer> or <article> elements. Only <nav> and <section> appear anywhere. The homepage alone renders 378 divs.

    Tag changes are possible in Webflow Designer and are worth doing. The duplicated desktop and mobile DOM is a build-pattern problem and a rebuild decision, not a quick fix — scope it honestly rather than absorbing it into this ticket.

  • T-5/Onur/Accessibility
    P1
    Detail

    Includes the logo link, the /shariah-compliance card, the /private-hire card and the icon-only social links. Blocked zoom is a straightforward viewport fix.

  • T-6/Dev/Layout stability
    P2
    Detail

    Correction — alt text is not done. Every image site-wide has an alt attribute, which is what an earlier spot-check measured, but 4,666 of 9,141 images have an empty one. Attribute presence is not alt text. Decorative images should be empty by design, so this needs a pass to separate the deliberate from the missed rather than a bulk fill.

    8,994 of 9,141 images carry no width or height attribute — that is 98%, and it is the CLS problem across the whole site, not a homepage issue.

  • T-7/Nabihah/Accessibility · optional for SEO
    P2
    Detail

    White text on #11a850 measures 3.12:1. WCAG AA requires 4.5:1 for normal-size text, so every green button with a white label fails — including the primary call to action.

    Not a ranking factor. This is a legal exposure under the Equality Act for a regulated lender, and low-contrast calls to action measurably cost conversions. A darkened step, #0a7d3b, measures 5.24:1 and is visually near-identical — a token addition rather than a brand change. #11a850 stays correct for large display text and decoration.

  • T-8/Nabihah/Design decision
    P2
    Detail

    The root font size is fluid and uncapped: calc(0.0021098rem + 1.66491vw) below 1920px. At a 1710px viewport that resolves to 28.5px, so body paragraphs render at 28.5px and section headings at 64px, against a conventional 16–18px.

    Not an SEO defect, but it means far less content sits above the fold, which pushes the substance a visitor came for further down. clamp(16px, 1.1vw, 20px) caps it near 18.8px. Site-wide change, so it belongs with design rather than in a page fix.

  • T-9/Onur · Webflow Designer/Found by the crawl
    Live
    Detail

    Live since 26 August 2026. Published to production by the team, not from this workstream. What was described below as staging-only is now on www.ayan.co.uk.

    Built on staging, 18–21 Aug — desktop and mobile heroes were consolidated into one component, so hero copy ships once instead of twice. The empty <h2> it left behind was removed from the homepage via a new White Header Visibility prop defaulting to true, which leaves the ~20 other pages that populate that heading untouched. Not yet live.

    .section-29 is a display:none duplicate of the hero. Invisible to every visitor, but still downloaded on every request — and it placed an <h2> ahead of the page's only <h1> in the document outline.

    Removing it fixes the outline and drops dead weight in one move. Worth noting it is one instance of a wider pattern: the FAQ block renders three times in the DOM, and the homepage ships 378 divs. That pattern is the rebuild conversation in T-4, not this ticket.

  • T-11/Nabihah/Homepage already clean
    P2
    Detail

    Source-level scan, 21 August 2026. Page-level counts inflate to 227 because listing and category pages echo blog excerpts; the real figure is 101: 52 across 18 blog post bodies, 44 across 13 static pages, 5 in four CMS description fields. The homepage is the only clean page.

    Concentrated — how-to-become-a-pco-driver-in-2025 (14) and best-eats-for-pco-drivers (11) hold half the blog total; /about-us leads the static pages with 11.

    Two worth doing regardless of the rest: /shariah-compliance carries the same "No interest is paid —" line already fixed on the homepage, and /uber-rental-cars and /electric-pco-cars have em-dashes in their page titles, which render in search results.

Blockers

Open questions

Everything marked Blocked above waits on one of these. Raise all seven at the next Friday catch-up.

  1. Is the PCO rental fleet a real product? Blocks C-1, C-2, C-3 and the resolution of A-4. Four URLs hang on the answer.
  2. Search Console and Ahrefs or Semrush access. Blocks A-1, B-1 and B-2 outright, and the impressions-based prioritisation in D-2. For the API route this needs Owner or Full permission on the property, and confirmation of whether it is a Domain or URL-prefix property. The crawl has built the skeleton of Sheet 1 already — URL is the join key, so the GSC columns can be backfilled whenever access lands.
  3. Who renamed the eight blog slugs, and can redirects be added? See A-6. If Webflow is not preserving old URLs on slug change, this will keep happening every time a post is retitled, and it needs a process rather than a one-off cleanup.
  4. Is Webflow on a paid site plan? Custom code is required for schema, so E-1 and the whole entity workstream depend on it.
  5. Do the seven out-of-home cities have real local substance? Blocks C-3. If the answer is no, the right call is to decline the pages rather than ship thin ones under an FCA-regulated brand.
  6. The blog automation section is empty. D2 in the scope of work is a single unfilled bullet, yet blog automation is priority five. It needs writing before it can be scoped — see D-3.
  7. The weekly tracker referenced in section 9 is not in the repository. Only the scope of work PDF is committed. If that tracker exists, it should live alongside it.