Skip to main content

Knowledge > Products > PewSearch Directory > Denomination Taxonomy

Denomination Taxonomy

What It Is

The denomination taxonomy is the classification system that organizes 218K+ churches by their theological tradition, denominational affiliation, and doctrinal family. It consists of three layers:

  1. Denominations -- specific affiliations (e.g., "Southern Baptist Convention", "Presbyterian Church (USA)")
  2. Families -- broad groupings (e.g., "liturgical", "community", "protestant")
  3. Theological Lenses -- doctrinal traditions (e.g., "Reformed", "Pentecostal/Charismatic", "Catholic")

These three layers serve different purposes: denominations are for precise filtering, families are for UI theming and grouping, and theological lenses are for cross-denominational discovery (e.g., "show me all Reformed churches regardless of denomination").

Denominations Table

The denominations table stores the canonical list of denominations recognized by PewSearch:

ColumnTypePurpose
idUUIDPrimary key
nameTEXTDisplay name (e.g., "Southern Baptist Convention")
slugTEXTURL-safe identifier
familyTEXTGrouping family (liturgical, community, protestant)
about_textTEXTRich description for denomination detail page
church_countINTNumber of visible churches with this denomination
display_orderINTSort position within family
parent_denomination_idUUIDHierarchical parent (e.g., SBC → Baptist)
aliasesTEXT[]Alternative names and abbreviations

Denomination Detail Pages

Route: /denominations/[slug] File: pewsearch/web/src/app/denominations/[slug]/page.tsx

Each denomination has a detail page showing:

  • About text (history, beliefs, distinctives)
  • Church count in this denomination
  • Browse churches filtered to this denomination
  • Related denominations in the same family
  • State-by-state breakdown

Denomination Index Page

Route: /denominations File: pewsearch/web/src/app/denominations/page.tsx

Lists all denominations grouped by family, with church counts and links to detail pages.

Family Classification

The family field groups denominations into three broad categories used for UI theming, search grouping, and template selection. The classification logic lives in denomination-labels.ts:

Family: liturgical

Churches with formal, structured worship traditions:

DenominationsPattern Match
Orthodox (all variants)Contains "Orthodox"
Roman CatholicContains "Catholic"
EpiscopalContains "Episcopal"
AnglicanContains "Anglican"
Lutheran (all synods)Contains "Lutheran"

Characteristics: Liturgical calendar, sacramental theology, vestments, formal order of worship, historical creeds prominent.

Family: community

Non-denominational and independent churches:

DenominationsPattern Match
Non-denominationalContains "Non-denominational" or "Nondenominational"
Bible ChurchContains "Bible Church"
VineyardContains "Vineyard"
Calvary ChapelContains "Calvary Chapel"
IndependentContains "Independent" (not "Independent Baptist")
InterdenominationalContains "Interdenominational"
Community ChurchContains "Community Church" as a standalone string (i.e., not preceded by a specific denominational prefix — avoids false matches on "Baptist Community Church" which should stay in the protestant family)

Characteristics: Contemporary worship, less formal, pastor-led governance, autonomous local church, often avoids denominational labels.

Family: protestant (default)

Everything that does not match liturgical or community:

DenominationsExamples
Baptist (all varieties)SBC, ABC, Independent Baptist, Missionary Baptist
MethodistUMC, AME, Free Methodist, Wesleyan
PresbyterianPCA, PCUSA, OPC, EPC
PentecostalAssemblies of God, Church of God, Foursquare
EvangelicalEvangelical Free, Evangelical Covenant
Church of ChristChurches of Christ, Disciples of Christ
AdventistSeventh-day Adventist
HolinessChurch of the Nazarene, Salvation Army
Everything elseDefault fallback

Family Detection Pseudocode

pseudocode: getDenominationFamily(denomination)
INPUT: raw denomination string from churches table
OUTPUT: "liturgical" | "community" | "protestant"

normalized = denomination.toLowerCase().trim()

// Check liturgical first (most specific)
LITURGICAL_PATTERNS = [
"orthodox", "catholic", "episcopal",
"anglican", "lutheran"
]
if any pattern in LITURGICAL_PATTERNS matches normalized:
return "liturgical"

// Check community
COMMUNITY_PATTERNS = [
"non-denominational", "nondenominational",
"bible church", "vineyard", "calvary chapel",
"independent" (not "independent baptist"),
"interdenominational"
]
if any pattern in COMMUNITY_PATTERNS matches normalized:
return "community"

// Default to protestant
return "protestant"

Theological Lenses

The sai_theological_lenses table defines 18 cross-cutting theological traditions that span denominations. A single church can belong to multiple lenses (e.g., a PCA church is both "Reformed" and "Evangelical").

All 18 Lenses

IDLens NameDescriptionExample Denominations
1EvangelicalBible-centered, conversion-focused, Great Commission emphasisSBC, Evangelical Free, many non-denoms
2ReformedCalvinist soteriology, covenant theology, confessionalPCA, OPC, Reformed Baptist, Dutch Reformed
3Pentecostal/CharismaticSpiritual gifts active today, tongues, prophecy, healingAssemblies of God, Foursquare, Vineyard
4AnabaptistPacifism, adult baptism, separation of church and stateMennonite, Amish, Church of the Brethren
5LiturgicalFormal worship, liturgical calendar, sacramentalCatholic, Orthodox, Anglican, Lutheran
6MethodistWesleyan theology, sanctification, social holinessUMC, AME, Free Methodist, Nazarene
7OrthodoxEastern Orthodox tradition, church fathers, theosisGreek Orthodox, Russian Orthodox, OCA
8RestorationRestore NT church patterns, no creed but ChristChurches of Christ, Disciples of Christ
9HolinessEntire sanctification, clean living, Wesley-influencedChurch of the Nazarene, Salvation Army, CMA
10BaptistBelievers baptism, congregational polity, soul competencySBC, ABC, Independent Baptist
11ProgressiveSocial justice emphasis, inclusive theology, LGBTQ+ affirmingUCC, Unitarian Universalist, progressive mainline
12CatholicRoman Catholic communion, papal authority, seven sacramentsRoman Catholic, Eastern Catholic
13AnglicanVia media (Catholic + Reformed), Book of Common PrayerEpiscopal (USA), Anglican Church
14AdventistSabbatarian, second coming emphasis, health messageSeventh-day Adventist
15Latter-day SaintBook of Mormon, modern prophets, temple worshipLDS Church, Community of Christ
16Jehovah's WitnessNontrinitarian, Kingdom Hall, door-to-door witnessJehovah's Witnesses
17UnitarianReligious pluralism, no creed, individual spiritual pathUnitarian Universalist Association
18UniversalCross-tradition, applies to all churchesUsed as default/catch-all

Junction Table: church_theological_lenses

The many-to-many relationship between churches and lenses:

ColumnTypePurpose
church_idUUIDFK to churches
lens_idINTFK to sai_theological_lenses
confidenceFLOATHow confident the assignment is (0-1)
sourceTEXTHow assigned: "auto" (ML), "manual", "denomination_map"

Lens Filtering via RPC

Because the junction table can have hundreds of thousands of rows, filtering by lens uses a server-side RPC function instead of a client-side .in() query (which would exceed URL length limits):

pseudocode: search_churches_by_lens(p_lens_id, p_query, p_state, p_denomination, p_limit, p_offset)
-- Server-side RPC function
SELECT c.*
FROM churches c
INNER JOIN church_theological_lenses ctl ON c.id = ctl.church_id
WHERE ctl.lens_id = p_lens_id
AND c.directory_visible = true
AND c.business_status = 'OPERATIONAL'
AND (p_query IS NULL OR c.fts @@ websearch_to_tsquery(p_query))
AND (p_state IS NULL OR c.state_code = p_state)
AND (p_denomination IS NULL OR c.denomination ILIKE '%' || p_denomination || '%')
ORDER BY c.reviews_count DESC NULLS LAST
LIMIT p_limit
OFFSET p_offset

Denomination Alias Expansion

Many denominations have multiple spellings, abbreviations, and variant names in the raw data:

Canonical NameAliases
Southern Baptist ConventionSBC, Southern Baptist, So. Baptist
Presbyterian Church in AmericaPCA, Presbyterian (PCA)
Assemblies of GodAG, Assembly of God
United Methodist ChurchUMC, United Methodist
Church of Jesus Christ of Latter-day SaintsLDS, Mormon, LDS Church
Evangelical Lutheran Church in AmericaELCA, Evangelical Lutheran
African Methodist EpiscopalAME, A.M.E.

The get_denomination_values() RPC function returns all aliases for a given denomination name, enabling the search system to match any variant:

pseudocode: get_denomination_values(p_denomination)
-- Returns all denomination names that are aliases of the input
SELECT DISTINCT d2.name
FROM denominations d1
JOIN denominations d2 ON d1.id = d2.parent_denomination_id
OR d2.id = d1.parent_denomination_id
OR d1.id = d2.id
WHERE d1.name ILIKE '%' || p_denomination || '%'
OR p_denomination = ANY(d1.aliases)

Cross-Product Usage

The denomination taxonomy is not PewSearch-specific. It is shared across all properties:

ProductHow It Uses Denominations
PewSearchSearch filtering, detail page badges, denomination landing pages
ChurchWiseAI Voice AgentPer-church theological tradition in system prompt (prompts.py)
ChurchWiseAI ChatbotTheological lens for doctrinal responses
Pro WebsiteTemplate style selection (liturgical → formal, community → modern)
IllustrateTheWordIllustration filtering by theological tradition

Theological Lens in Voice Agent Prompts

When a church has a theological lens assigned, the voice agent's system prompt includes it:

"[Church Name] is in the {denomination} tradition, with a {lens_name} theological orientation.
When answering questions about beliefs, worship style, or doctrinal positions,
speak from within this tradition, not about it."

This ensures a Reformed Baptist church's voice agent gives Reformed answers, not generic Christian answers.

State + Denomination Combination Pages

PewSearch generates SEO landing pages for every state + denomination combination with significant church counts:

Route: /directory?state={state}&denomination={denomination}

These pages rank for searches like "Baptist churches in Texas" or "Catholic churches in California". The URL parameters make these pages indexable by search engines while sharing the same directory page component.

Top Denomination by State Query

pseudocode: getTopDenominationsForState(state, limit=10)
SELECT denomination, COUNT(*) as count
FROM churches
WHERE directory_visible = true
AND business_status = 'OPERATIONAL'
AND state_code = state
AND denomination IS NOT NULL
AND denomination != ''
GROUP BY denomination
ORDER BY count DESC
LIMIT limit

Data Quality Notes

  • ~15% missing denominations: Many churches (especially non-denominational) have NULL denomination
  • Inconsistent naming: Same denomination appears as "SBC", "Southern Baptist", "Southern Baptist Convention" -- alias expansion mitigates this
  • Lens assignment gaps: Not all churches have lens assignments; auto-assignment uses denomination-to-lens mapping
  • Deprecated denominations: Some denomination records have zero churches after data cleanup -- they remain in the table for historical reference but are hidden from UI when church_count = 0

See Also