Short answer: schema does not make a model cite you. What it does is make a specific fact unambiguous — who you are, what a thing costs, what the answer to this question is — in a form that does not depend on prose parsing. That is worth doing for a small number of types and a waste of effort for the rest.

The types that do work

TypeWhat it pins down
OrganizationBrand identity: name, URL, logo, and sameAs links to profiles elsewhere. This is the entity anchor; without it the model is inferring who you are from prose.
FAQPageA question and its answer as a discrete pair — the exact shape an answer engine wants
Article with author and datesWho wrote it and when; time-bound claims need a machine-readable date
Product / OfferPrice, currency, availability — facts that are otherwise buried in prose
BreadcrumbListWhere this page sits, which helps a model describe it correctly

The pattern that hurts

FAQPage schema over content the page does not display. It is tempting — the schema is easy to generate and the page stays clean. But the schema then describes a page that doesn't exist, and a model comparing markup to rendered content has a reason to trust neither. If the answer is worth marking up, it is worth showing.

Schema is a claim about your page. A claim the page contradicts costs more than no claim at all.

The part that matters more than the markup

sameAs is the field most sites leave nearly empty, and it is the one doing entity work. Links to your profiles on platforms, directories and knowledge bases are what connect "the name on this page" to "a real organisation that exists elsewhere". An Organization block with no sameAs is an assertion with no corroboration — which is the same problem as the content itself.

How to verify

Extract the JSON-LD your page actually ships — not what your template intends to ship — and check that every fact in it matches what a reader sees. Then re-check after template changes, because that is when schema and content silently diverge.