Search Moroccan Jewish Cemeteries
A good name is better than fine oil - Kohelet 7:1 - קהלת ז:א
Release Notes
Track all updates and improvements to Yahasra.org
No detailed notes available for this version.
No detailed notes available for this version.
No detailed notes available for this version.
No detailed notes available for this version.
No detailed notes available for this version.
No detailed notes available for this version.
No detailed notes available for this version.
No detailed notes available for this version.
No detailed notes available for this version.
No detailed notes available for this version.
No detailed notes available for this version.
No detailed notes available for this version.
Web Application Updates
- feat(stats): Alliance Comparison tab in unified dashboard with KPI, diversity, names comparison [May 18]
- feat(stats): Export API for PDF/Word with numbered tables (12 sections) [May 18]
- feat(stats): AI Insights API for Claude-powered statistical analysis [May 18]
- feat(stats): Export buttons (PDF, Word, AI) in dashboard header for admins [May 18]
- fix(alliance): FNCI method now uses correct column name (firstname not first_name) [May 18]
Web Application Updates
- feat(alliance): Filter illegible/blank names from all statistical analysis (prevents bias) [May 18]
- fix(alliance): Geographic data now uses alliance_cities.region (was 1 North, now 6263) [May 18]
- feat(alliance): Temporal names API for decade-by-decade surname/firstname analysis [May 18]
- fix(admin): Script runner uses gunicorn service (not cemetery-search) [May 18]
Web Application Updates
- feat(alliance): MJPN applied to 66K+ AIU students, 100% phonetic coverage (was 41.4%) [May 18]
- feat(alliance): All names converted to lowercase for consistent matching [May 18]
- feat(alliance): City names normalized (Mogador Essaouira -> Essaouira, Mazagan variants -> Mazagan) [May 18]
- feat(stats): Added Simpson, Random Isonymy, HHI, Zipf coefficient to both Alliance and Unified dashboards [May 18]
- feat(admin): Research & Analysis section with Alliance Statistics prominently featured [May 18]
- feat(alliance): ALLIANCE_TO_CEMETERY mapping extended (Tanger, Meknes, Mazagan, Larache) [May 18]
Web Application Updates
- cleanup: Deleted 21 orphaned files (adapters/, scrapers/, importers/) duplicated in fb-archive [May 18]
- feat(admin): Code Review section updated to show cleanup completed [May 18]
- docs: CLAUDE.md Orphaned Code Audit section updated with deletion summary [May 18]
Web Application Updates
- feat(admin): Code Review section in admin management for orphaned/hidden features audit [May 18]
- docs: CLAUDE.md updated with Upcoming Work priorities (WhatsApp OCR, large screen refactor, cleanup) [May 18]
- docs: Orphaned Code Audit section added (21 orphaned files in adapters/scrapers/importers) [May 18]
- docs: WEBSITE_DESCRIPTION.json updated with 4 new issues (IDs 9-12) for future projects [May 18]
Web Application Updates
- fix(api): Communities API now returns canonical_region, canonical_code, canonical_name [May 17]
- docs: Updated CLAUDE.md demo priorities (5 of 6 complete), resolved duplicate codes [May 17]
- chore: Verified tiered visibility, WhatsApp integration, Names Index already implemented [May 17]
Web Application Updates
- fix(auth): Double-auth bug fixed, oauth_callback now calls login_user() for Flask-Login [May 17]
Web Application Updates
- feat(landing): IGRA feedback, hero explains site before auth wall [May 17]
- New headline: The archive of Morocco's Jewish cemeteries [May 17]
- Live-stats subhead with OIS attribution (32K burials, 36 communities) [May 17]
- Trust line: Free for genealogists and researchers. Records from 1689 to today. [May 17]
- Why-sign-in microcopy below auth card [May 17]
- Auth card visual weight reduced (lighter border, less shadow) [May 17]
- Hebrew translations for all 4 new strings [May 17]
- Diagnosed double-auth bug: parallel auth systems (community_routes OAuth vs Flask-Login) [May 17]
Web Application Updates
- fix(mjpn): Root assignment script now uses rowid instead of code (code column has duplicates) [May 17]
- fix(mjpn): Re-ran --fix-all to repair 30,286 corrupted root assignments [May 17]
- fix(stats): Table 13 variant counts now correct (harroch: 39 variants, not 94 with gabbay/cohen) [May 17]
- feat(mjpn): Compound surnames use first token only for root (prevents serfaty->HRSH in benarroch serfaty) [May 17]
Web Application Updates
- Stats Engine: All surname analyses now use canonical MJPN forms [May 17]
- Location Quotient tables (7a, 7b, 7c) group spelling variants (AZOULAY/AZULAY/ASSOULI) [May 17]
- Top Surnames chart and table show canonical counts (Cohen 1,293 combined) [May 17]
- Regional and cemetery diversity use canonical surnames for accurate metrics [May 17]
- Fixed FNCI Table 11: iterate records directly instead of parallel arrays [May 17]
- Fixed Table 3/8: renamed Regions to Cemeteries (matches actual data) [May 17]
- Fixed Table 8 interpretation: reference displayed top 8 not all data [May 17]
- Dynamic table renumbering ensures sequential 1-N (no gaps) [May 17]
- Shannon threshold adjusted: 0.78 now High (was Moderate) [May 17]
- KPI chart title uses dynamic date range 1713-2025 (was hardcoded 1690-2026) [May 17]
- Removed .title() capitalization; surnames now display as lowercase canonical [May 17]
Web Application Updates
- Cemetery Section Maps: Interactive Leaflet.js section map for Casablanca Ben M'Sik [May 17]
- Admin polygon editor at /admin/cemetery-map/<slug> with Leaflet-draw [May 17]
- Public map page at /cemetery/<slug> with clickable section polygons [May 17]
- API endpoint /cemetery/<slug>/section/<letter> returns paginated burials [May 17]
- Data layer: sections.json per cemetery with data_prefixes for merged sections (Va+Vb) [May 17]
- Helper module cemetery_sections.py with load_sections() and get_burials_for_section() [May 17]
- Esri satellite tiles (no API key), CRS.EARTH coordinates, atomic file writes [May 17]
Web Application Updates
- Bible v1.5.1: Added Section 27.1.1 (Source Hebrew Strings Are Authoritative, 2026-05-10 Rollback) [May 11]
- Bible v1.5.1: Added Section 27.2.1 (OCR Quality Gate Pre-Deployment Checklist) [May 11]
- Bible v1.5.1: Added Section 27.5.1 (Fez Parser Bug Fixes, Phase 4 Rebuild) [May 11]
- Bible v1.5.1: HUSBAND_CLAUSE_RE rule for French marital clauses (EPOUSE/VEUVE/FEMME DE) [May 11]
- Bible v1.5.1: is_rabbin derived from title prefix only, never ascendant/descendant strings [May 11]
- Bible v1.5.1: URL normalization policy (public domain URLs or NULL, no local paths) [May 11]
- Bible v1.5.1: Updated auto-generated stats (558 routes, 86 tables, 53 helpers, 98 scripts) [May 11]
- Bible v1.5.1: Documented drift detector design mismatch (summaries vs detailed listings) [May 11]
- Bible v1.5.1: AMI skipped per user confirmation [May 11]
Web Application Updates
- Bible v1.5: Added Section 27 (Data Quality and Privacy Rules) with 6 subsections [May 10]
- Bible v1.5: Hebrew date authority rule documenting pyluach conversion and cross-validation [May 10]
- Bible v1.5: OCR confidence routing (HIGH/MEDIUM/LOW) with two-pass date extraction [May 10]
- Bible v1.5: Privacy redaction rule for contributor emails (_safe_display_name() helper) [May 10]
- Bible v1.5: Search card UX fix (removed misleading years-since-death indicator) [May 10]
- Bible v1.5: Fez cemetery data quality note (5,793 records, 19.3% of database) [May 10]
- Admin OCR: Bulk delete functionality for Upload Photos tab [May 10]
- Admin OCR: Multi-select checkboxes with Select All/Deselect All controls [May 10]
- Admin OCR: Secure bulk delete API with path traversal protection [May 10]
Web Application Updates
- Privacy Fix (P0): Email redaction in burial commentaires, contributor emails never stored publicly [May 8]
- Privacy Fix: Added _safe_display_name() helper that redacts emails to initial + asterisks (e.g., r***) [May 8]
- Privacy Fix: Added defensive EMAIL_RE.sub() before appending update notes to commentaires [May 8]
- Data Remediation: Redacted 26 existing burials with leaked emails (13 from Remy Chicheportiche complaint) [May 8]
- Local Backup: yahasra.db.pre-redact-20260508 created before remediation [May 8]
- IGRA Analysis: Generated 6 CSVs for Raanana 2026 presentation (bot split, geographic, temporal, surnames, strategy, engagement) [May 8]
- MJPN Uplift Measurement: 49.8% of searches benefit from cluster expansion, 28.3% would be zero results without MJPN [May 8]
- Form UX: Burial update form shows placeholder text in empty fields (Type the father name to add it, etc.) plus helper line stating empty fields are ignored; addresses Remy Chicheportiche pattern where 12/13 submissions arrived with empty father/mother [May 8]
- Admin Updates Redesign: /admin/updates now shows full burial card with side-by-side comparison (current vs proposed) [May 8]
- Admin Updates Visual States: Yellow highlight for changed fields, red highlight for empty proposals, white for unchanged [May 8]
- Admin Updates Empty Warning: All-empty submissions show prominent red banner warning admin before approval [May 8]
- Admin Updates Route Enrichment: Each pending_update now enriched with current_burial data via SQLite join [May 8]
- Admin Documentation: Added in-page collapsible guide to /admin/evidence-chain explaining 5-tier source weighting, Facebook consensus boost, shadow search, geographic proximity, rabbinic cross-reference, and confidence score formulas [May 8]
- Admin Documentation: Added in-page collapsible guide to /admin/agents explaining the 7 agent teams, activity log, API endpoints, and orchestration buttons [May 8]
Web Application Updates
- Single Source of Truth: Tables now generated from same data dict as charts (heritage_tables.py) [May 6]
- Manifest Tables: Tables included in run manifest.json, read from manifest by results route [May 6]
- KPI Caveat Fix: Dynamic age coverage text computed from actual data (was hardcoded 12 records) [May 6]
- Chart 6 Fix: Singleton-aware CI policy (bootstrap CI on D2 Simpson only, D1 Shannon point estimates) [May 6]
- Bootstrap CI Hardening: Softened assertion to warning with degenerate CI fallback (prevents run abortion) [May 6]
- RTL Fix: Hebrew/Arabic sticky column positioning on /admin/user-activity (Tailwind ltr:/rtl: utilities) [May 6]
- Stats Landing Strip-Down: Simplified /stats to header + Heritage CTA only (removed upload UI, analysis catalog) [May 6]
- Heritage Chart Generation: 13 comprehensive statistical charts from live DB (matplotlib + seaborn, DPI 150) [May 6]
- Chart 1: Database overview KPIs (7-tile grid, NO tzaddikim tile) [May 6]
- Chart 2: Gender and geographic distribution (side-by-side bars) [May 6]
- Chart 3: Temporal distribution by decade (bar chart with peak annotation) [May 6]
- Chart 4: Diversity metrics (Hill numbers D0/D1/D2, Chao1 richness estimation) [May 6]
- Chart 5: Location quotient (top 10 rooted, top 5 dispersed surnames) [May 6]
- Chart 6: Regional diversity comparison (Shannon/Simpson, evenness) [May 6]
- Chart 7: Top 20 surnames (horizontal bars with coverage annotation) [May 6]
- Chart 8: Top 20 first names (horizontal bars) [May 6]
- Chart 9: Intercommunity genetic distance heatmaps (Lasker, Nei) [May 6]
- Chart 10: Rabbi records and surnames (filters by Rabbin column only, not Saint) [May 6]
- Chart 11: Community statistics and surname richness (scatter plot) [May 6]
- Chart 12: MJPN phonetic variant statistics (summary + top 15 canonical forms) [May 6]
- Chart 13: First Name Concentration Index (FNCI, HHI of first-name distribution) [May 6]
- Tzaddikim Removal: Removed saints category from all user-facing output (Saint column preserved in DB) [May 6]
- Tzaddikim Removal: Removed saint badge from burial detail page (rabbi badge kept) [May 6]
- Tzaddikim Removal: Removed saint checkbox from burial edit form [May 6]
- Tzaddikim Removal: Removed saints summary from genealogy AI report context [May 6]
- Tzaddikim Removal: Removed Saints filter from communities page type dropdown [May 6]
- Rabbi Count: Remains 616 (includes 3 records flagged as both rabbi and saint) [May 6]
- Bible v1.4: Added Section 26 documenting all 4 May 2026 improvements [May 6]
- Commits: f9a5cd6 (RTL fix), 0c215c8 (tzaddikim), d31aac3 (stats landing), a0893ec (heritage charts) [May 6]
- AI Insights Phase 2: Claude Opus generation with verified sources whitelist (15 academic sources) [May 6]
- AI Insights: Strict citation control using [CITE:Key] markers (Beider, Corcos, Zafrani, MJPN, etc.) [May 6]
- AI Insights: POST endpoint at /api/stats/generate-ai-insights/<run_id> for admin generation [May 6]
- AI Insights: 24 unit tests for citation validation, bibliography extraction, prompt building [May 6]
- AI Insights: Extended thinking (8K token budget), cost tracking (~$0.38/generation) [May 6]
- AI Insights Phase 3: UI integration into results page with server-side rendering [May 6]
- AI Insights: Executive Introduction block with cream/gold academic paper styling [May 6]
- AI Insights: Per-section commentary blocks with feather icon and italic text [May 6]
- AI Insights: APA bibliography section with hanging indent formatting [May 6]
- AI Insights: Admin-only Generate/Regenerate buttons with force_regenerate support [May 6]
- AI Insights: PDF export integration with AI introduction, section commentary, and bibliography [May 6]
- AI Insights: Word export integration with academic commentary styling [May 6]
- AI Insights: 5-language translations (EN/FR/HE/AR/ES) for all UI strings [May 6]
- Table 19 Fix: List misalignment bug causing wrong surname variants (18K+ records affected) [May 6]
- Table 19: Cosmetic filter excludes compound surnames from sample variants display [May 6]
- Heritage Analysis: Regenerated run c6c22262 with corrected Table 19 data [May 6]
- AI Insights: Fresh generation against clean manifest (old cache preserved for audit) [May 6]
- MJPN Paper Dynamic: Converted /papers/mjpn-cluster from static HTML to Jinja template with live DB stats [May 6]
- MJPN Paper Stats: New mjpn_paper_stats.py service with 1-hour cache (burials, clusters, roots, communities) [May 6]
- MJPN Paper Live Stats: 6-tile stats grid showing real-time database metrics on paper landing page [May 6]
- MJPN Paper Examples: Dynamic cluster IDs and variant counts for OUAKNINE, COHEN, HARROCH families [May 6]
- IGRA Presentation: Replaced pitch-deck with IGRA Raanana 2026-05-17 multilingual deck (HE/EN/FR) [May 6]
- IGRA Presentation: Dynamic stats from mjpn_paper_stats (29,985 burials, 630 clusters, 3,667 surnames, 333 Ouaknine records) [May 6]
- IGRA Presentation: French number formatting with NBSP thousand separator (29 985, 3 667) [May 6]
- IGRA Presentation: Added /presentation route (alias: /pitch-deck, /pitch_deck) with access logging [May 6]
- Menu: Added Presentation link to desktop sidebar (Analytics section) and mobile drawer [May 6]
- Menu: Added Analytics section to mobile drawer with Presentation entry [May 6]
- i18n: Updated 5 language catalogs with Presentation translations (EN/FR/HE/AR/ES) [May 6]
- Presentation Fix: Reverted Ouaknine punchline to hardcoded 447 (external-archive reach metric, not local cluster size) [May 6]
- AI Insights Verified: Cache hit confirmed for run c6c22262 manifest after template changes [May 6]
- Paper Verified: MJPN paper already uses live stats (no drift from claimed 1,926/3,378 found) [May 6]
- Landing: Live hero stats from mjpn_paper_stats (29,985 burials, 183 communities) [May 6]
- Landing: Flag-icon language switcher below hero, above auth card (EN=GB, FR=FR, HE=IL, AR=MA, ES=ES) [May 6]
- Landing: About + Privacy moved to modals fetched from /about?bare=1 and /privacy-policy?bare=1 [May 6]
- Landing: Removed top-right text language switcher and streamlined footer (dropped Search/Explore) [May 6]
- Routes: /about and /privacy-policy support ?bare=1 for chromeless modal embedding [May 6]
- Stats Page Fix: Restored visible hero text (added local --stats-crimson CSS variables) [May 6]
- Stats Page Fix: Verified API returns JSON 401 for unauthenticated requests (decorator handles /api/ paths) [May 6]
- Cemeteries Count Unified: get_site_stats() now uses mjpn_paper_stats as single source of truth [May 6]
- Stats Service: Added documented_communities field to mjpn_paper_stats (communities with burial coverage, ~36, distinct from num_communities master list ~183) [May 6]
- Project Rule: All public-facing stats must be live from mjpn_paper_stats; never hardcode (year 1689 excepted) [May 6]
- Landing: Hero now uses documented_communities (36) instead of num_communities (183) for accurate coverage framing [May 6]
- Stats API: Verified returns JSON 401 (decorator already handles /api/* paths); added JS content-type check for better diagnostics [May 6]
- Templates: Migrated 6 public surfaces to live stats (auth/landing, search, kiosk, about, about_bare, stats/landing) [May 6]
- i18n: Extracted and compiled new translation keys with %(records)s and %(communities)s placeholders [May 6]
- Root URL Fix: landing.html (core_routes) now uses mjpn_paper_stats with documented_communities (36), matching auth/landing.html [May 6]
- Landing Modals: Wired About and Privacy as modal triggers on the public root template (commit 4fe2235 added live stats but missed the modal wiring; this completes the refactor) [May 6]
- Stats UI: Removed crimson hero gradient. Plain Cormorant header on cream background to match site style. The May 6 'restore visibility' fix added a gradient hero card the user did not want; this commit deletes it [May 6]
- Stats UI Layout: Removed inline max-width:70ch from header so it aligns with the centered heritage card container [May 6]
- Stats UI: Removed page header (H1, subtitle, counter) per user request; page now opens directly with the Heritage Database Analysis card [May 6]
Web Application Updates
- Security Fix: Added @admin_required decorator to all 39 MJPN-ML System routes (menu audit finding) [Apr 22]
- Sidebar Refocus: Pruned 6 genealogist-focused items from yahasra.org main menu for IGRA conference demo [Apr 22]
- Navigation Update: Moved Name Network from Genealogy section to Analytics section in desktop sidebar [Apr 22]
- Navigation Update: Added prominent 'Professional Genealogist Tools' link to yahasra.com in both mobile and desktop menus [Apr 22]
- Menu items removed (routes still functional): News, Family Network, Genealogy Hub, Client Intakes, Document Scanner, Pitch Deck [Apr 22]
- Read-Only Analysis: Activity page views composition report (59.1% bot traffic, 40.9% human traffic) [Apr 22]
- Documentation: Complete menu audit report saved to /home/ec2-user/architectures/MENU_AUDIT_20260420.md [Apr 22]
- Menu Audit: Analyzed 128+ menu items across 5 templates, identified 1 admin leakage (MJPN routes - now fixed) [Apr 22]
Web Application Updates
- Memorial Pages Redesign: Candle and Rabbis pages with tree layout and marble textures [Apr 7]
- Candle Page: White marble cards (clear_marble_sm.jpeg), tree layout (3-4-4-4-3 = 18 cards) [Apr 7]
- Candle Page: Search box at top, public access (removed @login_required) [Apr 7]
- Candle Memorial: Special section for Salomon & Simy Ouaknine with black marble, linked to burial detail pages [Apr 7]
- Candle Memorial: Birth dates (Mazagan 21/6/1921 and 25/12/1925), death dates with Hebrew [Apr 7]
- Rabbis Page: Black marble cards (black_marble_sm.jpeg), tree layout (3-4-4-3 = 14 cards) [Apr 7]
- Rabbis Page: Hilloula feature showing rabbi with closest yahrzeit [Apr 7]
- Burial Detail: Added external research buttons (Wikipedia, Moreshet, Archives, Google, JewishGen) [Apr 7]
- Static Assets: Using actual marble texture images instead of CSS gradients [Apr 7]
Web Application Updates
- Database Cleanup: Moved 6 xlsx and 10 csv files to /home/ec2-user/bibliotheque/ [Apr 7]
- Code Update: hebrew_prediction_api.py now loads from name_variants and hebrew_variants tables [Apr 7]
- Code Update: mjpn_ml_features.py loads beider data from database instead of jewishnames.csv [Apr 7]
- Code Update: search_routes.py loads FOIA data from hebrew_variants table [Apr 7]
- Code Update: alliance_routes.py removed Excel file status check, data now from fb_archive.db [Apr 7]
- Admin UI: admin_alliance.html shows database source instead of Excel status [Apr 7]
- Zero-Result Fixes: ATIYAH now finds 328 results (was 0), Vakrat now finds 4 results (was 0) [Apr 7]
- MJPN v3.4.5: Added ATIYAH/ATIYA → AT mapping (match ATTIAS family, -IYAH suffix variant) [Apr 7]
- MJPN v3.4.5: Added VAKRAT/VACRAT → AKRT mapping (V=W=OU in Moroccan names) [Apr 7]
- Hebrew Search Enhancement: hebrew_to_latin_for_search() generates multiple transliteration candidates [Apr 7]
- Hebrew Transliteration: Added HEBREW_SURNAME_MAPPINGS dict with 40+ known Hebrew→Latin pairs [Apr 7]
- Hebrew Search Results: ווקנין→323, חזיזה→39, אזרד→27, זריהן→94, ימנה→6, אלמשעלי→19, אחייון→537, אבוחצירא→110 [Apr 7]
- Search Fallback Loop: Now tries multiple transliteration variants until one produces database results [Apr 7]
- 19/19 Tests Pass: All zero-result fixes verified + regression tests for existing Latin searches [Apr 7]
Web Application Updates
- CRITICAL FIX: Phonetic search type mismatch — burials.phonetic_index stores 4-letter codes (e.g., 'ABTN'), not numeric IDs [Apr 7]
- Search Bug Fixed: 'abitan' search now finds 102 records (was returning 0 due to comparing 'ABTN' with 2501) [Apr 7]
- _get_phonetic_index() Rewrite: Returns phonetic_root string (e.g., 'ABTN') instead of numeric index_id [Apr 7]
- Hebrew Search Fixed: Hebrew→Latin bridge path now correctly passes phonetic root codes [Apr 7]
- Transliteration Fallback: Fixed to use phonetic_root directly for burials lookup [Apr 7]
- Three-Tier Search Fallback: Tier 1 (exact match) → Tier 2 (Levenshtein ≤1) → Tier 3 (substring) [Apr 7]
- Levenshtein Distance: Added levenshtein_distance() function for fuzzy phonetic root matching [Apr 7]
- _find_similar_roots(): New method finds phonetically similar surnames when exact match fails [Apr 7]
- _substring_search(): Fallback substring matching on Nom column for Tier 3 [Apr 7]
- Search Response Enhanced: Returns match_tier (1-3) and suggestions array for failed searches [Apr 7]
- Search UI Suggestions: No-results section now displays clickable similar name cards from three-tier fallback [Apr 7]
- Click-to-Search: Suggestion cards auto-populate search field and trigger new search [Apr 7]
- Zero-Result Diagnostics: Enhanced investigate_zero_result() with MJPN phonetic analysis [Apr 7]
- Phonetic Diagnosis: Reports computed_root, phonetic_matches count, and mismatch detection [Apr 7]
Web Application Updates
- Database Consolidation: 12 DBs → 3 DBs (yahasra.db 238MB, fb_archive.db 519MB, research.db 444KB) [Apr 6]
- yahasra.db Expansion: Absorbed users.db (114 users → auth_users), ip_cache.db, search_cache.db, ocr.db [Apr 6]
- fb_archive.db Expansion: Absorbed alliance.db (66K+ AIU students), rabbi_biographies.db, video_archives.db [Apr 6]
- Compatibility VIEWs: Created 'videos', 'alliance_students', 'rabbi_biographies_compat' views for code compatibility [Apr 6]
- research.db Rename: platform.db → research.db for research.ois.co.il OIS Research Platform [Apr 6]
- Code Updates: 50+ Python files updated with new database paths [Apr 6]
- Deleted Databases: facebook_collector.db, archives.db, alliance.db, ip_cache.db, search_cache.db, ocr.db, users.db, rabbi_biographies.db, video_archives.db [Apr 6]
- Backup Created: /home/ec2-user/db_backup_20260406.tar.gz preserves all original databases [Apr 6]
Web Application Updates
- Heritage Database Consolidation: fb_archive.db is now single source of truth for all heritage content [Apr 6]
- Database Migration: heritage_sources.db archived to data/backups/, all queries now use fb_archive.db [Apr 6]
- Consolidated Table: digital_archives (21,340+ records) replaces heritage_content [Apr 6]
- Updated Modules: moreshet_search.py, search_helpers.py, personal_context.py, data_processors.py [Apr 6]
- Updated Scrapers: diarna_scraper.py, darnna_scraper.py, darnna_schools_scraper.py, dafina_scraper.py [Apr 6]
- Updated Admin: AVAILABLE_DATABASES now shows fb_archive.db instead of heritage_sources.db [Apr 6]
- Compatibility Layer: Created heritage_content view in fb_archive.db for backwards compatibility [Apr 6]
- Statistics Config: Updated HERITAGE_DB_PATH to point to fb_archive.db [Apr 6]
- Import Script: import_news.py now writes to fb_archive.db/digital_archives [Apr 6]
- Documentation: Updated CLAUDE.md with consolidated database architecture [Apr 6]
Web Application Updates
- Name Network Integration: D3.js surname visualization embedded in Genealogist hub at /genealogist/name-network [Apr 6]
- Name Network Theme: Light Yahasra heritage palette (cream/gold/red) replacing fb-archive dark theme [Apr 6]
- Inter-App API: Proxy endpoint at /genealogist/api/name-network-proxy calls fb-archive via Unix socket [Apr 6]
- Internal API: New /api/internal/name-network endpoint in fb-archive with X-Internal-API-Key auth [Apr 6]
- MJPN Symlink: fb-archive/phonetic_normalizer.py → cemetery-search/app/phonetic_normalizer.py [Apr 6]
- Unified Variants: Both yahasra.org and genealogy.yahasra.org now use identical MJPN SPECIAL_MAPPINGS [Apr 6]
- MJPN v3.4.4 Integration: Name Network uses Beider-based etymology separations (AZOULAY↔ASSOULY, BENHAIM≠BENHAMOU) [Apr 6]
- Navigation Update: Statistics menu now links to /stats, Genealogy section includes Name Network [Apr 6]
- Ecosystem Page: Added Statistical Analysis Engine to Professional Tools tier [Apr 6]
- requests-unixsocket: Installed package for Unix socket HTTP requests in proxy endpoint [Apr 6]
Web Application Updates
- MJPN v3.4.3: HIMI/HIMY etymology fix — moved from Hamou (HM) to Haim (HYM) group [Apr 6]
- MJPN v3.4.3: Reference: Beider (2017) lists Hamou under 'Non-related etymologies' for HIMI [Apr 6]
- MJPN v3.4.3: Added HIMI, HIMY, BENHIMI, BENHIMY → HYM to SPECIAL_MAPPINGS [Apr 6]
- MJPN v3.4.3: 13 records updated (4 HIMI + 9 HIMY) — now grouped with Haim family [Apr 6]
- MJPN v3.4.3: 35/35 benchmark pairs, 15/15 separation tests — no regressions [Apr 6]
- MJPN Manual Review: Created mjpn_manual_review.xlsx with D1-D5 review items [Apr 6]
- MJPN Manual Review: D1 (HIMI/HIMY) marked RESOLVED with Beider reference [Apr 6]
Web Application Updates
- MJPN v3.4.2: Spanish -IAS plural stripping (Beider p. 148-149) — ATTIA↔ATTIAS same family [Apr 6]
- MJPN v3.4.2: Strip final -S from -IAS suffix — conservative rule targeting Spanish patronymic pattern [Apr 6]
- MJPN v3.4.2: Merges ATTIAS(285)+ATTIA(36)+ATIAS(2) → 323 records unified under ATTIA [Apr 6]
- MJPN v3.4.2: Also merges NAHMIAS↔NAHMIA, CORCIAS↔CORCIA, SORIAS↔SORIA [Apr 6]
- MJPN v3.4.2: 354 total records updated with new canonical names [Apr 6]
- MJPN v3.4.2: Benchmark expanded to 35 pairs (added 3 -IAS pairs), still 100% pass rate [Apr 6]
- MJPN v3.4.2: 15/15 separation tests still pass (no regressions) [Apr 6]
- MJPN v3.4.2: PEREZ, BIBAS, MESSAS correctly NOT stripped (S is part of root) [Apr 6]
Web Application Updates
- MJPN v3.4.1: 32/32 benchmark pairs, 15/15 separation tests — academically honest precision [Apr 6]
- MJPN v3.4.1: ROLLBACK Z→S global rule — caused 724 false merges affecting 14K records (HAZAN≠HASSAN) [Apr 6]
- MJPN v3.4.1: KEPT W→B rule (Beider Table 2.7: waw/bet interchange) — fixes DAVID↔DAWID [Apr 6]
- MJPN v3.4.1: KEPT context-dependent C rule: C→S before i,e,y; C→K otherwise — fixes MARCIANO↔MARSIANO [Apr 6]
- MJPN v3.4.1: ADDED AZOULAY SPECIAL_MAPPING to ASL root — targeted Z/S fix (same family, diff orthography) [Apr 6]
- MJPN v3.4.1: NEW 3 Z/S separation tests verify no false merges (HAZAN/HASSAN, ELBAZ/ELBAS, ZAGOURI/SAGOURI) [Apr 6]
- MJPN v3.4.1: Benchmark script renamed to mjpn_v341_honest_benchmark.py [Apr 6]
Web Application Updates
- MJPN v3.3.1: ABENSERA etymology fix - scribal variant of ABEHSERA (אביחצירא kunya), NOT 'son of Ezra' [Apr 6]
- MJPN v3.3.1: ABENSERA/ABEN-SERA/ABENSERRA now map to ABHSR (was incorrectly ABZR) [Apr 6]
- MJPN v3.3.1: ABIUZIR/ABIEZER separation - Hebrew Abiezer (אביעזר) gets distinct ABYZR root [Apr 6]
- MJPN v3.3.1: New phonetic root ABYZR created (index 3745) for Abiuzir family [Apr 6]
- MJPN v3.3.1: 44 burial records updated with corrected phonetic roots [Apr 6]
- bibliotheque/ cleanup: Removed personal documents from git tracking (PDFs, DOCXs, brochures) [Apr 6]
Web Application Updates
- Statistical Analysis Engine: Local scipy/pandas calculations (no Claude code generation) [Apr 5]
- Heritage Database Analysis: 18 comprehensive tables with all metrics calculated locally [Apr 5]
- Claude APA Interpretations: Each table gets AI-generated APA 7th edition results paragraph [Apr 5]
- Descriptive Stats First: Overview, gender, geographic regions (North/Central/South), temporal, age [Apr 5]
- Diversity Metrics: Shannon entropy, Hill numbers (D0/D1/D2), Chao1 estimator, FNCI [Apr 5]
- Location Quotient: Rooted (LQ > 1.5) vs Dispersed (LQ < 0.7) surname analysis [Apr 5]
- Regional Comparison: North/Center/South diversity comparison with evenness scores [Apr 5]
- Heritage-Specific: Isonymy analysis, Zipf's Law, inter-community genetic distances [Apr 5]
- Rabbi Analysis: Top communities by rabbi count, most common rabbi surnames [Apr 5]
- Community Diversity: Top 15 communities with Simpson 1-D and surname richness [Apr 5]
- Stats Upload: CSV/Excel/SPSS/Stata file upload with preview and analysis selection [Apr 5]
Web Application Updates
- Unified Archives System: Consolidated all archives into genealogy.yahasra.org (admin-only) [Apr 4]
- Phase 1 Import: 21,284 digital archives, 978 videos, 168 screenshots, 1 printed archive [Apr 4]
- Phase 2 Import: 186,930 records - AIU students (59K), Harry Stein (35K), name variants (24K), Hebrew surnames (62K) [Apr 4]
- Admin-Only Access: All genealogy.yahasra.org routes now require admin session via shared cookies [Apr 4]
- Unified Search Architecture: Name variant expansion + federated FTS5 search across all sources [Apr 4]
- Navigation Update: Removed archive menus from main Yahasra site, admin-only link to unified archives [Apr 4]
- New Templates: unified_archives.html, digital_archives_list.html, video_archives_list.html, screenshots_list.html, printed_archives_list.html [Apr 4]
- ARCHITECTURE.md: Complete documentation update with unified archives schema and search architecture [Apr 4]
- Scraper Admin Interface: New /admin/scrapers page with one-click web scrapers (Moreshet, Diarna, Dafina, Darnna) [Apr 4]
- Scraper Implementation: 4 web scrapers for heritage content - WordPress API, HTML parsing, forum scraping [Apr 4]
- Stats Unification: Unified stats on home and archives pages with Reference data (187K records) [Apr 4]
- Archive Documentation: docs/ARCHIVE_OVERVIEW.md with complete system documentation [Apr 4]
- Infrastructure: Masked refresh-policy-routes@ens5 timer and service - single-ENI instance doesn't need route refresh [Apr 4]
- Infrastructure: Fixed 'imds_token: unbound variable' bug (second variable missing default) [Apr 4]
- Infrastructure: Definitive fix - buggy IMDS polling script can never run again [Apr 4]
Web Application Updates
- Infrastructure: Diagnosed daily server reboots - AWS IMDS connectivity failures causing network interface crashes [Apr 4]
- Infrastructure: Patched /usr/share/amazon-ec2-net-utils/lib.sh - fixed 'imds_endpoint: unbound variable' bug [Apr 4]
- Infrastructure: Reduced refresh-policy-routes timer from 60s to 300s (80% reduction in IMDS calls) [Apr 4]
- Infrastructure: Created systemd override /etc/systemd/system/refresh-policy-routes@.timer.d/override.conf [Apr 4]
- Disk Cleanup: Freed 225MB - vacuumed journal logs (155MB), removed old backup (70MB) [Apr 4]
- Documentation: Complete scheduled tasks inventory - 3 cron jobs, 8 systemd timers [Apr 4]
Web Application Updates
- Genealogist Document Scanner: New /genealogist/documents tool for OCR/analysis of client documents [Apr 3]
- Document Scanner Features: Drag-drop upload, client intake association, analysis history, share links [Apr 3]
- GVR User Filtering: get_history() and get_by_id() now support user-based filtering for genealogist isolation [Apr 3]
- Menu Enhancement: Added Document Scanner to genealogist metasearch menu section [Apr 3]
- Document Analysis API: New endpoints /genealogist/api/documents/* for analyze, history, and client docs [Apr 3]
Web Application Updates
- GVR Prompt v2.3.0: Enhanced form_fields with 8 new fields for complete gravestone data extraction [Apr 3]
- GVR form_fields Split: father_name split into father_name_french and father_name_hebrew [Apr 3]
- GVR form_fields New: birth_year (explicit from stone), birth_year_estimated (calculated from age) [Apr 3]
- GVR form_fields New: marital_status (married|unmarried|widowed|unknown) from בתולה/הבחור/אלמנה markers [Apr 3]
- GVR form_fields New: manner_of_death (natural|sudden|illness|accident|unknown) - פתאום = sudden [Apr 3]
- GVR form_fields New: family_context (soeur et tante = siblings with children) [Apr 3]
- GVR Age Parsing Fix: 'dans sa 62 ème année' now correctly parses as age 61 (completed 61 years) [Apr 3]
- GVR Geresh Names: א'מ'ל'י' (Emilie) - strip marks, read as single transliterated name, not acronym [Apr 3]
- GVR בתולה עלובה: 'the unfortunate unmarried woman' - עלובה is sympathetic, never translate as 'wretched' [Apr 3]
- GVR הבחור Added: The Young Man/Bachelor - male equivalent of בתולה for unmarried men [Apr 3]
- GVR Admin Form: New fields for birth year, father name (French/Hebrew), marital status, manner of death, tribal status [Apr 3]
- GVR Extracted Info: Now displays marital status, manner of death, tribal status, honorifics, family context [Apr 3]
- GVR Template: form_fields from Claude response now auto-populate form (v2.3+ responses) [Apr 3]
Web Application Updates
- GVR Prompt v2.2.0: Hebrew→French transliteration rules using established Moroccan surname forms [Apr 3]
- GVR Transliteration: בירדוגו→Berdugo (not Birdugo), אוחנה→Ohana (not Ochana), etc. [Apr 3]
- GVR נב"ע vs תנצב"ה Distinction: Warning added - two different blessings, not interchangeable [Apr 3]
- GVR Rabbinical Abbreviations: הח' הש' מו"ה שד"ר decoded (The Perfect Sage, Our Teacher, Emissary) [Apr 3]
- GVR Female Honorifics: Added הכבודה (The Honored), expanded הכשרה/הכשירה variants [Apr 3]
- GVR Female Names: Added מרים/Meriam, עזיזא/Aziza, חנה/Hannah, לאה/Leah [Apr 3]
- GVR French Spelling: Meriam (not Miriam), Aziza (not Azizah) - Moroccan conventions [Apr 3]
- GVR Surname Mapping: 28 Hebrew→French surname pairs for accurate transliteration [Apr 3]
- GVR Cemetery Injection: Admin dropdown cemetery now injected into Claude prompt as confirmed fact [Apr 3]
- GVR Cemetery Filtering: 5-tier DB matching now filters by cimetiere column when cemetery known [Apr 3]
- GVR form_fields Update: first/last_name_french descriptions specify using established French forms [Apr 3]
Web Application Updates
- GVR Prompt v2.1.0: Major prompt rewrite with form_fields, gender detection, strict factual rules [Apr 2]
- GVR form_fields: New JSON section for auto-populating burial record form (14 fields) [Apr 2]
- GVR Gender Detection: 4-step reading process now includes gender detection from ben/bat, verb forms, honorifics, names [Apr 2]
- GVR Strict Factual Rules: 5 rules preventing AI from inventing biography - buried in Morocco = did NOT emigrate [Apr 2]
- GVR Historical Context: Now describes ERA and COMMUNITY, not invented individual biography [Apr 2]
- GVR Honorifics: Expanded with male/female variants (הזקן/הזקנה, הצדיק/הצדקת, etc.) [Apr 2]
- GVR Given Names: Split into male (Messod, Makhluf, David) and female (Freha, Yamna, Saida, Sol) lists [Apr 2]
- GVR Burial Search: 5-tier matching (exact_full_name, exact_hebrew_full, exact_surname, exact_hebrew_surname, fuzzy) [Apr 2]
- GVR Burial Search: Now searches both French (Nom, Prenom) AND Hebrew (hebrew_lastname, hebrew_firstname) columns [Apr 2]
- GVR Quality Rules: 7 rules including cross-validation, character-perfect inscription, cemetery as confirmed fact [Apr 2]
Web Application Updates
- GVR Deep Analysis Integration: Merged GVR into 'Identify Image' tab with Quick OCR and Deep Analysis toggle [Apr 2]
- GVR Server Path Support: Can now analyze images from server folders (cemetery_photos, burial_photos, gvr uploads) [Apr 2]
- GVR Hebrew Date Conversion: Adds hebrew_converted field using gregorian_to_hebrew_string() function [Apr 2]
- GVR Hebrew Name Prediction: Adds Hebrew surname predictions via Beider Chain Resolution (HebrewPrediction API) [Apr 2]
- GVR Save to Database Form: Full save form with all fields PLUS detailed analysis sections (best of both worlds) [Apr 2]
- Bot Rate Limiter Admin Exceptions: /api/ocr/*, /admin/*, and authenticated API routes bypass rate limiting [Apr 2]
- Jinja2 Translation Fix: Escaped apostrophes in JavaScript context (Father's Name → Father Name) [Apr 2]
- Removed Separate GVR Tab: Consolidated UI - one Identify Image tab with Basic/Deep toggle [Apr 2]
- GVR Frontend Enhancement: renderGVRResults() now includes Extracted Information summary section [Apr 2]
Web Application Updates
- Yahasra GVR (Gravestone Visual Recognition): MyHeritage Scribe AI-inspired structured heritage analysis engine [Apr 2]
- GVR Core Engine: app/helpers/gvr_engine.py with Claude Opus 4.5 vision API integration [Apr 2]
- GVR Specialized Prompts: app/helpers/gvr_prompts.py with Moroccan Jewish expertise (8K+ char system prompt) [Apr 2]
- GVR Database Schema: New gvr_analyses table in ocr.db with 30+ columns for structured storage [Apr 2]
- GVR 8-Section Analysis: Inscription highlights, iconography, monument details, location context, historical context, research suggestions, full inscription, translation [Apr 2]
- GVR Document Support: AIU registers, ketubot, civil records, letters with specialized extraction [Apr 2]
- GVR DB Cross-Reference: Auto-match against 30K+ burials via MJPN, 1900+ rabbis, 185 communities [Apr 2]
- GVR Admin Tab: New 'GVR Analysis' tab in Visual Recognition admin with drag-drop upload, history, stats [Apr 2]
- GVR Frontend: static/js/gvr.js (850+ lines) with collapsible sections, copy buttons, share links [Apr 2]
- GVR Styling: static/css/gvr.css (300+ lines) matching heritage gold/cream design system [Apr 2]
- GVR Public Share: /gvr/<share_token> public pages for sharing analyses without login [Apr 2]
- GVR API Endpoints: /api/ocr/gvr-analyze, /api/ocr/gvr-history, /api/ocr/gvr-stats [Apr 2]
- GVR Cost: ~$0.07-0.10 per image analysis with Claude Opus 4.5 [Apr 2]
Web Application Updates
- Visual Redesign v8.0: Complete UI overhaul from red theme to warm heritage gold/cream palette [Apr 2]
- Design System: New design_tokens.css with CSS custom properties (gold #9A7348, emerald #1D6B52, cream #FAF8F4) [Apr 2]
- Typography: Google Fonts integration - Cormorant Garamond (display) + Source Sans 3 (body) across 19 templates [Apr 2]
- Landing Page: New standalone landing.html with glass-morphism nav, hero search, 6 feature cards, zellige footer [Apr 2]
- Landing CSS: Dedicated landing.css (~300 lines) for homepage styling [Apr 2]
- Navigation Partial: Unified _nav_main.html with 7-item top bar, mobile hamburger, auto-highlight current page [Apr 2]
- Footer Partial: Unified _footer.html with 3-column layout, zellige border, language selector, verse [Apr 2]
- Theme Overrides: Global theme_overrides.css (~320 lines) transforming red→gold, gray→cream site-wide [Apr 2]
- Color Transformation: .text-red-* → gold, .bg-gray-50 → cream, .border-red-* → gold via CSS overrides [Apr 2]
- Card Styling: White cards with subtle borders, hover states, and shadow elevation [Apr 2]
- Input Styling: Gold focus rings, consistent border treatment across all form elements [Apr 2]
- Button Overrides: Red buttons → gold gradient with rich hover states [Apr 2]
- Search Results: Result cards with gold names, emerald community labels [Apr 2]
- Mobile Menu: Updated hamburger drawer with gold accents and language flags [Apr 2]
- RTL Support: Verified RTL layout working via dir='rtl' attribute in templates [Apr 2]
- Legacy Route Fixes: 404.html /map→/communities, statistical_portrait /yahasra-research→/unified-research [Apr 2]
- Zellige Pattern: Moroccan geometric border using CSS repeating gradient [Apr 2]
- Print Styles: Clean print output hiding navigation and sidebar [Apr 2]
- Backup: Original landing page preserved as landing_old.html [Apr 2]
Web Application Updates
- Infrastructure: Increased gunicorn workers (1→2) and threads (1→2) with gthread class for better concurrency [Apr 2]
- Backup System: Created scripts/backup_to_s3.sh for S3 backups (pending IAM configuration) [Apr 2]
- Cleanup: Deleted 47 legacy files - 20+ deprecated scripts, 7 empty databases, 4 old templates [Apr 2]
- Apps Page: Redesigned /apps with 4-tier ecosystem structure (Core, Professional, Knowledge, Community) [Apr 2]
- Navigation: Added Ecosystem dropdown menu to desktop sidebar and mobile hamburger menu [Apr 2]
- Landing Fix: Updated landing page route after landing_v2.html removal [Apr 2]
- Documentation: Added ARCHITECTURE.md, updated WEBSITE_DESCRIPTION.json structure [Apr 2]
Web Application Updates
- Facebook Archive Cleanup: Fixed 16 Facebook groups showing 'Imported Group (ID)' - now display actual group names [Apr 1]
- Data Cleanup: Deleted 25,833 empty posts (no text content) from fb_archive.db [Apr 1]
- Duplicate Removal: Deleted 2,799 duplicate posts, reduced total from 58,065 to 29,433 posts [Apr 1]
- Import Enhancement: Admin import now requires entering Facebook group name before importing [Apr 1]
- Import UI: Added input field for group name with Facebook link button to easily copy the name [Apr 1]
- FTS Index Rebuild: Rebuilt full-text search index after data cleanup [Apr 1]
- Documentation: Added comprehensive fb-archive app documentation to WEBSITE_DESCRIPTION.json [Apr 1]
Web Application Updates
- Evidence Chain v7.0: New 5-tier confidence weighting system (Rabbinic 0.95, Burial 0.90, Synagogue 0.75, Social 0.40, MJPN 0.25) [Mar 30]
- Facebook Consensus Boost: Social sources gain +0.10 per independent witness cluster (3+ sources), capped at 0.85 effective weight [Mar 30]
- MJPN Variant Tracking: Evidence records now track which phonetic variant was used for matching [Mar 30]
- Shadow Search System: Auto-triggered when confidence < 0.50, performs phonetic expansion, geographic search, and rabbi cross-reference [Mar 30]
- Geographic Proximity Search: Find burials within 50km radius of known Mellah using Haversine distance calculation [Mar 30]
- Rabbinic Cross-Reference: Auto-search rabbi biographies when 'rabbi' detected in family intake [Mar 30]
- Auto Rabbi Detection: Intake handler detects rabbi titles (Rabbi, Hakham, Dayan) in religious_title, family_legends, known_ancestors [Mar 30]
- Bridge Ancestor Suggestions: Shadow search identifies potential 'bridge' ancestors linking families to Rabbinic Silsila [Mar 30]
- Schema Enhancement: Added mjpn_variant_used, consensus_count, consensus_boost columns to client_evidence table [Mar 30]
- Research Context API: New get_research_context() method provides intake data formatted for Shadow Search triggers [Mar 30]
Web Application Updates
- Platform Presentation Update: Added Heritage Dossier, Evidence Chain, Silsila Engine, Research Auditor, Field-to-Desk sections [Mar 30]
- Heritage Dossier: Professional PDF research report with AI narrative, pedigree chart, Zyara map, evidence appendix [Mar 30]
- Evidence Chain System: Confidence scoring (Cs formula) with source weights (yahasra=1.0, rabbi_db=0.8, social=0.3) [Mar 30]
- Silsila Engine: Patronymic chain auto-detection using MJPN phonetic matching and Pere field tracing [Mar 30]
- Rabbi Database Integration: Cross-reference 1,900+ rabbi biographies for lineage matching [Mar 30]
- AI Narrative Generator: Claude-powered biographical essays with Moroccan Jewish historical context [Mar 30]
- Pedigree Chart Export: SVG/PNG family tree visualization with gender colors and relationship lines [Mar 30]
- Zyara Geographic Maps: Folium-based interactive maps showing family locations across Morocco [Mar 30]
- Research Auditor: MJPN variant suggestions, research gap analysis, and quality checklists [Mar 30]
- Field-to-Desk Workflow: Kiosk sync for cemetery field submissions with moderation queue [Mar 30]
- New Agent Tools: detect_silsila, suggest_ancestors, search_rabbis, audit_search tools [Mar 30]
- 30+ New API Endpoints: Heritage dossier, evidence, silsila, field submissions, research audit [Mar 30]
- Daily Automated Backup: New system backs up all client intakes (data + documents) daily at 2 AM [Mar 30]
- Backup Retention: Backups older than 2 days automatically deleted to save disk space [Mar 30]
- .yahasra Export Format: Proprietary ZIP-based format for exporting client intake data [Mar 30]
- Single Intake Export: Download individual client's data as .yahasra file from intakes list [Mar 30]
- Export All Intakes: Download all your intakes in one .yahasra archive file [Mar 30]
- .yahasra Import: Upload .yahasra files to restore/transfer intake data between accounts [Mar 30]
- Export Content: Includes intake questionnaire, family tree, notes, sessions, and all documents [Mar 30]
- Import/Export UI: New buttons in intakes list page with drag-drop import dialog [Mar 30]
- Admin Backup API: Manual backup creation and cleanup endpoints for administrators [Mar 30]
- Document Upload System: New drag & drop document upload for client intakes at /genealogist/intake/<id>/documents [Mar 30]
- AI Document Recognition: Claude-powered analysis extracts names, dates, places, and full text from uploaded documents [Mar 30]
- Supported Document Types: Gravestones, ketubot, birth/death/marriage certificates, identity cards, teudat zehut, letters [Mar 30]
- Document Search Tool: New search_client_documents tool for metasearch to find information in uploaded documents [Mar 30]
- User Access Control: Client intakes now linked to users - users can only see/edit their own intakes [Mar 30]
- Admin Override: Admins can view and manage all client intakes across all users [Mar 30]
- Intake Field Updates: Renamed 'Kunya/Laqab' to 'Honorific Title', added Religious/Professional Title field with Rabbi, Hakham, Dayan, etc. [Mar 30]
- Agent Improvements: Increased MAX_ITERATIONS from 10 to 15, added final summary when limit reached [Mar 30]
- Agent Efficiency: Updated system prompt for more efficient tool usage, parallel tool calls support [Mar 30]
- Database Schema: New client_documents table for document metadata and AI-extracted content [Mar 30]
- Gunicorn Timeout Fix: Increased worker timeout from 120 to 300 seconds for complex multi-source searches [Mar 30]
Web Application Updates
- Client Family Tree: New family tree page for client intakes at /genealogist/intake/<id>/tree [Mar 29]
- Tree Visualization: D3.js-based interactive pedigree chart with drag/zoom support [Mar 29]
- Person Management: Add/edit/delete persons with full genealogy fields (names, dates, places) [Mar 29]
- Moroccan/Sephardic Fields: Tribal identity (Megorashim/Toshavim), mellah, city of origin [Mar 29]
- Relationship System: Parent, spouse, child relationships with marriage date/place [Mar 29]
- GEDCOM Import: Parse GEDCOM 5.5.1 files with INDI/FAM records [Mar 29]
- GEDCOM Export: Generate valid GEDCOM 5.5.1 files from family trees [Mar 29]
- Tree Statistics: Real-time stats showing total persons, males, females, relationships [Mar 29]
- Person Detail Panel: Side drawer with full person info and family connections [Mar 29]
- Database Schema: New client_tree_persons and client_tree_relationships tables [Mar 29]
Web Application Updates
- Genealogist Metasearch: Renamed from 'Genealogists' with updated page title, menu, and UI branding [Mar 28]
- Google Search Source: New no-auth source searching Google for obituaries, news, community pages [Mar 28]
- Google Scholar Source: New no-auth source searching academic papers on Jewish/Moroccan genealogy [Mar 28]
- Filae Tool: Added search_filae tool for French civil records, census, military (emigrants to France) [Mar 28]
- Sources Summary: Reports now start with list of all sources searched and result counts [Mar 28]
- AI Model Display: Reports now state the Claude model used (Powered by Claude...) [Mar 28]
- Default Model: Changed from Claude Sonnet to Claude Opus for higher quality responses [Mar 28]
- Filae URL Fix: Corrected search URL format for proper Filae API compatibility [Mar 28]
- Source Registration Fix: Fixed Google/Google Scholar not being imported in sources/__init__.py [Mar 28]
Web Application Updates
- Genealogist Agent Mode: Converted fixed 4-stage pipeline to Claude tool-use agentic loop with dynamic tool selection [Mar 28]
- Agent Tool System: 8 genealogy tools (search_yahasra, search_myheritage, search_geni, search_familysearch, search_jewishgen, get_name_variants, get_record_details, get_cemetery_info) [Mar 28]
- Task Queue System: Database-backed agent_tasks table for async job tracking with execution logs and statistics [Mar 28]
- Background Worker: Threaded AgentWorker for processing batch lookups, WhatsApp images, and scheduled scans [Mar 28]
- Twilio WhatsApp Integration: New webhook at /api/whatsapp/twilio/webhook for gravestone photo submissions [Mar 28]
- Manual Gravestone Processing: WhatsApp images stored with pending_review status for manual data entry (no OCR) [Mar 28]
- Agent Dashboard: New /admin/agent-dashboard with task monitoring, statistics, source hit rates, and batch operations [Mar 28]
- Windows Cookie Sync: External script to extract browser cookies and upload to server via /api/genealogist/sessions/upload [Mar 28]
- Cookie Upload API: Secure API endpoint with Bearer token authentication for remote session management [Mar 28]
- Anti-Hallucination Rules: Comprehensive system prompt preventing AI from inventing records or archives [Mar 28]
- Agent Setup Guide: Collapsible documentation in /admin/genealogists with Twilio, cookie sync, and monitoring instructions [Mar 28]
Web Application Updates
- Genealogists Rebranding: Renamed 'Federated Search' to 'Genealogists' throughout menu and UI [Mar 26]
- Staged Search Workflow: Local DB → External platforms → AI analysis (sequential, not parallel) [Mar 26]
- Enhanced RAG Context: Gathers phonetic roots, name variants, onomastics, Beider data before AI analysis [Mar 26]
- Improved Claude Orchestrator: Rich genealogical context injected into prompts for better synthesis [Mar 26]
- Chat UI Progress Stages: Visual indicators showing Parse → RAG → DB → Platforms → AI stages [Mar 26]
- Settings Page Overhaul: Simpler 3-step cookie import guide with prominent paste buttons [Mar 26]
- RAG Context Display: Chat shows variant count and meaning availability in response metadata [Mar 26]
- Agent System Guide: Comprehensive collapsible documentation added to Agent Dashboard [Mar 26]
- ZeroResultsAgent Bug Fix: Fixed phonetic query using wrong column names (phonetic_index→phonetic_root) [Mar 26]
- Photo Entry Bug Fix: Fixed image URLs pointing to wrong path (static/ocr_photos→api/ocr/image/cemetery_photos) [Mar 26]
- Agent Testing: Verified all components working (digest, investigation, activity logging) [Mar 26]
Web Application Updates
- Agent Orchestration System: Central hub for automated task orchestration at /admin/agents [Mar 26]
- ZeroResultsAgent: Auto-investigates zero-result searches, stores reports, escalates critical bugs via email [Mar 26]
- Photo Entry UI: Fast keyboard-driven interface for manual gravestone data entry at /admin/photo-entry [Mar 26]
- Photo Entry Form: Zoomable image viewer, keyboard shortcuts (Ctrl+Enter save, Ctrl+S skip, j/k navigate) [Mar 26]
- Activity Logger: Tracks all agent activity with severity levels (info, warning, critical) [Mar 26]
- Auto-Investigation: Zero-result searches now automatically investigated when logged [Mar 26]
- Auto-Escalation: Critical bugs (records exist but search returned 0) trigger immediate admin email [Mar 26]
- Auto-Notify: Users notified when matching records are added for their zero-result searches [Mar 26]
- Agent Dashboard: Shows pending counts, critical items, recent activity feed, stats by agent type [Mar 26]
- Database Migration: Added agent_activity table, investigation columns to zero_result_searches, entry_status to ocr_photos [Mar 26]
- Daily Digest: Agent generates daily summary of pending items and critical issues [Mar 26]
- Admin Management Updates: Added Agent Dashboard and Photo Entry cards to management console [Mar 26]
Web Application Updates
- Genealogist Module: Federated genealogy research assistant integrated into Yahasra.org [Mar 21]
- Genealogist User Role: New user type with access to federated search across multiple genealogy platforms [Mar 21]
- Genealogist Admin: Admin interface at /admin/genealogists for managing genealogist users [Mar 21]
- Multi-Source Search: Yahasra local DB source (30K+ records), with placeholders for MyHeritage, Geni, FamilySearch, etc. [Mar 21]
- Claude AI Orchestration: Natural language query parsing and result synthesis using Anthropic API [Mar 21]
- MJPN Analyzer Tool: Standalone HTML tool for analyzing MJPN phonetic classification accuracy [Mar 21]
- Browse by Root View: Names grouped by MJPN root with expandable accordions for validation [Mar 21]
- Correction Workflow: Mark names as misclassified and specify correct MJPN root [Mar 21]
- Export Corrections: Excel export with MJPN_CORRECTIONS and SPECIAL_MAPPINGS sheets [Mar 21]
- Import Corrections: Reload previous corrections from exported Excel files [Mar 21]
- Python Code Generation: SPECIAL_MAPPINGS sheet contains ready-to-paste phonetic_normalizer.py entries [Mar 21]
- Special Mappings Tab: New admin tab at /admin/mjpn-system to manage MJPN override mappings [Mar 21]
- Import Corrections to Yahasra: Upload Excel corrections from MJPN Analyzer directly to database [Mar 21]
- Database Special Mappings: mjpn_special_mappings table for runtime MJPN overrides [Mar 21]
- Dynamic MJPN Overrides: phonetic_normalizer.py checks database mappings in addition to hardcoded ones [Mar 21]
- Alliance vs Cemetery Comparison: Comprehensive side-by-side comparison of onomastic patterns [Mar 20]
- Comparison KPI Dashboard: Total records, surnames, firstnames for both datasets with visual cards [Mar 20]
- Diversity Metrics Comparison: Shannon entropy, Hill numbers (D0, D1, D2), evenness side-by-side [Mar 20]
- Top Names Overlap Analysis: Shared surnames/firstnames highlighted with Jaccard similarity index [Mar 20]
- Regional Distribution Comparison: North/Central/South percentage charts for both datasets [Mar 20]
- Temporal Overlap Chart: Decade-by-decade comparison (1880s-1980s overlapping period) [Mar 20]
- Comparison Insights Panel: Auto-generated insights about diversity, overlap, and regional patterns [Mar 20]
- Period Filter: Compare datasets within matching time periods (1900-1920, 1920-1940, etc.) [Mar 20]
Web Application Updates
- OCR Geocoding: Auto-geocode new cemetery folders using OpenStreetMap Nominatim API [Mar 19]
- OCR Communities Integration: New cemeteries added to communities table with coordinates automatically [Mar 19]
- OCR Accuracy Stats Fix: Calculate accuracy based on comparable records only (87.2% names, 68.5% dates) [Mar 19]
- Email Draft HTML Preservation: Rich HTML content preserved when sending automated report drafts [Mar 19]
- Email HTML Preview: Toggle preview for automated report drafts in compose form [Mar 19]
- YahasraBot Reports Guide: Comprehensive collapsible guide explaining the full report system [Mar 19]
- Personalized Research Reports: Generate reports from user search activity with burial records and name origins [Mar 19]
Web Application Updates
- Unified Communications Center: Merged mailbox and email sending into single interface with Inbox/Sent/Archive tabs [Mar 16]
- Email Reply Feature: Reply button on contact form messages with quoted original text [Mar 16]
- Security CC: All emails (incoming notifications and outgoing) BCC'd to security email for audit [Mar 16]
- Email CC/BCC Support: Admin email compose now supports multiple To, CC, and BCC recipients [Mar 16]
- Network Search Filter: Searchable surname filter matching both canonical names and spelling variants [Mar 16]
- Network Autocomplete: Live search results with type indicators (Canonical/Variant) and parent name links [Mar 16]
- Search Quick Actions: 7 quick action buttons under header (Names Origins, Research Hub, Rabbis, Memory Candles, Worldwide, Communities, Share Record) [Mar 16]
Web Application Updates
- Pitch Deck Rewrite: Complete rewrite of all 4 language pitch decks with research/academic focus [Mar 15]
- English Pitch Deck: New 14-slide research platform overview at /pitch_deck_en [Mar 15]
- French Pitch Deck: Full translation 'Plateforme de Recherche' with academic language [Mar 15]
- Hebrew Pitch Deck: Full RTL translation 'פלטפורמת מחקר' with Heebo font [Mar 15]
- Arabic Pitch Deck: Full RTL translation 'منصة البحث' with Noto Sans Arabic font [Mar 15]
- Partnership Tables: Added CSUQ, CJMT, ILAM, CCIM collaboration tables to all versions [Mar 15]
- Grant Strategy: Horizon Europe, ERC, ISF, ISERD funding sections in all versions [Mar 15]
- Investor Backups: Original investor decks preserved at pitch_deck_*_investor.html [Mar 15]
- New Route: /pitch_deck_investor for original English investor pitch deck [Mar 15]
- AI Gravestone OCR Fix: Fixed field mapping in /api/ocr-preview to extract from nested 'ocr' dict [Mar 15]
- Contribute Page JS Fix: Fixed French translation apostrophe breaking JavaScript with |tojson filter [Mar 15]
Web Application Updates
- Unified Statistics Dashboard: New /unified-dashboard with 6 tabs (Overview, Geographic, Temporal, Names, Diversity, Network) [Mar 14]
- Dashboard Filters: Region (North/Center/South), Period (pre-1900 to 1990-2020), Cemetery selection [Mar 14]
- Live Data Queries: All statistics calculated dynamically with filter support via unified_dashboard_handler.py [Mar 14]
- Diversity Metrics: Location Quotient analysis, Shannon entropy, Hill numbers (D0, D1, D2), FNCI [Mar 14]
- Geographic Analysis: Leaflet map with coordinate-based regional distribution and cemetery markers [Mar 14]
- Temporal Analysis: Decade chart with peak period detection and year statistics [Mar 14]
- API Endpoints: 7 new /api/unified-dashboard/* endpoints for AJAX section loading [Mar 14]
- Dashboard Consolidation: Merged /dashboard, /statistics, /onomastic-profiles into unified interface [Mar 14]
- Legacy Redirects: Old routes redirect to unified dashboard with preserved query parameters [Mar 14]
- Vishne Methodology: Chao1 estimator for unseen names, regional diversity comparison [Mar 14]
- Onomastic Diversity Integration: /onomastic-diversity now redirects to unified dashboard Diversity tab [Mar 14]
- Statistical Portrait Tab: Added Portrait tab with narrative summary of all statistical metrics [Mar 14]
- Statistical Portrait Integration: /statistical-portrait now redirects to unified dashboard Portrait tab [Mar 14]
- MJPN Tab Integration: How Names Work and MJPN Paper merged into unified dashboard MJPN tab [Mar 14]
- MJPN Content: 4-stage architecture, algorithm comparison, Hebrew/Spanish support, dual indexing [Mar 14]
- MJPN Redirects: /docs/name-system and /research/mjpn-paper redirect to unified dashboard [Mar 14]
- Unified Research Hub: New /unified-research with 4 tabs (Portal, Library, Contribute, Conferences) [Mar 14]
- Research Consolidation: Merged /yahasra-research, /research-library, /researcher-contributions into one page [Mar 14]
- Conferences Tab: Agadir 2025 and Raanana 2026 conference presentations integrated [Mar 14]
- Research Redirects: Old research routes redirect to unified research hub with tab preservation [Mar 14]
- Research Share Tab: Renamed 'Contribute' to 'Share' in unified research hub [Mar 14]
- About Page Rewrite: Comprehensive about page with live database statistics and pitch deck content [Mar 14]
- About Statistics: Live data for records, surnames, firstnames, year span, name origins, GPS communities [Mar 14]
- About Features: MJPN algorithm, AI name origins, multi-language search, interactive maps highlighted [Mar 14]
- Onomastic Profiles: New /onomastic-profiles page showing name recurrence patterns by cemetery [Mar 14]
- Cemetery Name Analysis: Top surnames and first names with frequency percentages per cemetery [Mar 14]
- Diversity Statistics: Unique names count, diversity ratio, top-10 concentration metrics [Mar 14]
- Cross-Cemetery Comparison: Chart.js visualization comparing name diversity across cemeteries [Mar 14]
- GitHub Integration: Full GitHub management dashboard at /admin/github [Mar 13]
- GitHub API: Repository info, issues, releases, labels, milestones management [Mar 13]
- Git Operations: Local git status, diff, commit, push, pull from admin UI [Mar 13]
- GitHub Audit Log: All operations logged to database with full history [Mar 13]
- Auto Release Notes: Generate release notes from version.json for GitHub releases [Mar 13]
- Session Automation: claude.sh script for session init with git status and project analysis [Mar 13]
- Website Description: Comprehensive WEBSITE_DESCRIPTION.json with all modules, databases, bugs [Mar 13]
- Session Workflow: Mandatory end-of-session checklist (version, summary, GitHub push) [Mar 13]
Web Application Updates
- AI Source Hallucination Fix: Strict prompt rules prevent inventing archives/documents [Mar 11]
- Canonical Name Resolution: Variant names (BENATTAR) auto-resolve to canonical (BENATAR) in generator [Mar 11]
- Management Console AI Generator: New Name Origins Generator panel with background job processing [Mar 11]
- Batch Generation UI: Generate reports by name, language, or resume from last processed [Mar 11]
- Job History Tracking: All generation jobs logged to job_history table with stats [Mar 11]
- Cache Statistics: View cached reports count, coverage, and breakdown by language [Mar 11]
- Academic Narrative Style: Reports now use flowing scholarly prose (800-1200 words) with section headers [Mar 11]
- Name Origins Validation: Full names (OUAKNINE SALOMON) now redirect to surname-only pages [Mar 11]
- SEO Generator Update: Name origins count now displayed in sitemap generation stats [Mar 11]
- Background Processing: Generation runs independently of Claude Code session via threading [Mar 11]
Web Application Updates
- Name Origins Batch Processing: Script to pre-generate reports for ALL 1,486 root surnames in 5 languages [Mar 11]
- Name Origins Default ON: Search checkbox now checked by default (cached reports = no API cost) [Mar 11]
- SEO Name Origins Pages: Virtual /name-origins/<surname> pages for all cached names with hreflang support [Mar 11]
- SEO Sitemap Update: Added sitemap-name-origins.xml with all cached surname pages [Mar 11]
- Name Origins API: New /api/name-origins/<name> endpoint for AJAX access to cached reports [Mar 11]
- 5-Language Name Origins: Reports now generated in English, French, Hebrew, Arabic, Spanish [Mar 11]
Web Application Updates
- Histoire des Juifs du Maroc: Removed login requirement, page now publicly accessible [Mar 10]
- Image Optimization: Compressed 99 images from 766MB to 42MB (95% reduction, PNG→JPEG) [Mar 10]
- Research Notice: Added 'This copy is for research purposes only' to Histoire page [Mar 10]
- Communities Map: Custom Moroccan city labels replacing third-party map labels [Mar 10]
- Official Morocco Map: Removed Western Sahara labeling, uses official Moroccan territorial representation [Mar 10]
- Name Origins Cache Fix: TTL increased from 30 to 300 days, fixed missing cache save after API calls [Mar 10]
- Name Origins Performance: Switched from Claude Opus to Sonnet 4 (3x faster, same quality) [Mar 10]
- Name Origins Pre-generation: Batch generated reports for 318 unique surnames ($4.44 total cost) [Mar 10]
- Hebrew Final Letters Fix: Fixed 1,096 records with incorrect final forms (נ→ן, מ→ם, כ→ך, פ→ף, צ→ץ) [Mar 10]
- Hebrew Normalizer: Added normalize_hebrew_final_letters() function for automatic correction [Mar 10]
- Credits Page: Added Gabbay Mimoun z"l for Fes Cemetery graves compilation [Mar 10]
- MJPN Documentation: Updated Stage 1 with real database examples (130+ OI- and 170+ WA- records) [Mar 10]
Web Application Updates
- Moroccan Zellige Landing Page: Stunning circular homepage with 14 feature tiles in geometric mandala pattern [Mar 6]
- Radial tile layout: CSS transforms for circular positioning with golden glow hover effects [Mar 6]
- Moroccan color palette: Traditional red (#C1272D), gold (#D4AF37), cream (#FDF8F0) theme [Mar 6]
- Staggered entrance animations: 50ms delayed tile appearances for visual appeal [Mar 6]
- Mobile responsive: Transforms to 2-column grid on screens under 768px [Mar 6]
- RTL support: Automatic layout mirroring for Hebrew and Arabic languages [Mar 6]
- Language selector modal: Click Languages tile for language selection overlay [Mar 6]
- Public landing page: Root URL (/) now accessible without login [Mar 6]
- Hebrew Transliteration Fix: Added BENARROCH pattern (בנהרוש) and 10+ compound surname patterns [Mar 6]
- Compound Surname Database Fix: Fixed 833 records with concatenated Hebrew names to use proper spacing [Mar 6]
- Babel Translation Rebuild: Fresh extraction and compilation of all translatable strings for 5 languages [Mar 6]
- Translation Fixes: Wrapped 50+ untranslated strings in admin templates (confirm dialogs, alerts, placeholders) [Mar 6]
- Credits Page: Added Committee of the Jewish Community of Morocco with Mr. Serge Berdugo and 6 reference links [Mar 6]
- Credits Page: Added Mr. Jacky Kadoch (Marrakech patrimoine) and Mr. Elie Devico (Fes Cemetery) to Special Thanks [Mar 6]
- Unified Communities Page: New /communities page merging Map, Directory, and Browse Cemeteries [Mar 5]
- Dual map styles: Satellite (Google HD) and Street (ArcGIS) toggle in single interface [Mar 5]
- Dual marker styles: Toggle between burial count markers and site type markers [Mar 5]
- Featured photos: Directory view shows thumbnail featured photo for each cemetery [Mar 5]
- Details panel: Featured photo, burial stats, surnames, contacts, and navigation in side panel [Mar 5]
- Legacy URL redirects: /map, /cemetery-map, /browse-cemeteries all redirect to /communities [Mar 5]
- High-resolution zoom: Zoom level 17-21 when clicking on sites for detailed satellite imagery [Mar 5]
- Navigation integration: Google Maps and Waze directions from details panel [Mar 5]
- Photo upload modals: Admin upload and user submission forms integrated [Mar 5]
- Lightbox with thumbnails: Full media viewer with video support [Mar 5]
Web Application Updates
- MJPN Algorithm Comparison: Updated results table with latest benchmark data (Soundex 75%, NYSIIS 59.4%, B-M 18.8%) [Mar 3]
- MJPN Documentation: Added 4 new sections (4.12-4.15) with comprehensive analysis [Mar 3]
- Section 4.12: Why MJPN Outperforms - Berber prefixes, Hebrew patronymics, French/Spanish transliteration [Mar 3]
- Section 4.13: Why Beider-Morse Scores Low - Ashkenazi focus vs Moroccan patterns explained [Mar 3]
- Section 4.14: Three Partial Matches Explained - DAVID/DAWID, AZOULAY/ASSOULY, MARCIANO/MARSIANO [Mar 3]
- Section 4.15: Practical Implications - Holocaust research, family reunification, heritage documentation [Mar 3]
- Algorithm Comparison Script: Added comprehensive English explanation output [Mar 3]
Web Application Updates
- Facebook Groups: Added comprehensive Guide tab with full documentation on feature setup, credentials, and usage [Mar 2]
- Management Pages: Added collapsible Guide sections to 9 admin pages with documentation, workflows, and best practices [Mar 2]
- WhatsApp Dashboard: Guide tab explaining submission workflow, review process, and configuration [Mar 2]
- Newsletter Management: Collapsible guide with workflow tips and subscriber information [Mar 2]
- YahasraBot Reports: Guide explaining report statuses and available actions [Mar 2]
- AI Research (Zero Results): Guide with workflow diagram and notification process [Mar 2]
- News Ticker: Guide for multi-language announcements and scheduling [Mar 2]
- Cemetery Photos: Guide for media review, approval criteria, and bulk import [Mar 2]
- Onomastics: Guide explaining name etymology fields and scholarly sources [Mar 2]
- Database Manager: Guide with caution warning and action documentation [Mar 2]
- User Management: Guide for authentication types and admin actions [Mar 2]
- System Backup: Full site backup with xz compression (app, databases, nginx, systemd) [Mar 2]
- Backup Management: Create, download, and delete backups with disk usage monitoring [Mar 2]
Web Application Updates
- Added Visual recognition with Claude Opus, trained with 2000 pics from the Marrakech Cemetery [Feb 25]
- OCR Admin: Removed Saint/צדיק checkbox from identify image save form [Feb 26]
- OCR Admin: Cemetery dropdown now loads dynamically from API (same as search page) [Feb 26]
- Burial Detail: Prominent Hebrew name display with Frank Ruhl Libre font [Feb 26]
- Burial Detail: Latin and Hebrew names on single lines (firstname + surname) [Feb 26]
- Burial Detail: Rabbi/רבי prefix for rabbinical records in both languages [Feb 26]
- Burial Detail: Automatic Gregorian date calculation from Hebrew dates (supports Hebrew script and transliterated formats) [Feb 26]
- Burial Preview: Anonymous users can now view burial previews with death year (SEO improvement) [Feb 26]
- Footer: Updated copyright to 2023-2026, added email link to Dr Ouaknine's name [Feb 26]
- OCR Admin: New 'Upload Photos' tab for uploading cemetery photos with drag & drop support [Feb 26]
Web Application Updates
- MJPN v3.2: Spanish & Ladino name support for Melilla cemetery records [Feb 24]
- Spanish phonetic rules: LL→Y, Ñ→NY, GUE→GE, QUE→KE [Feb 24]
- Ladino surname patterns: compound names, Portuguese variants, -EZ patronymics [Feb 24]
- Melilla Hebrew transliteration fixes: 176 compound surnames corrected [Feb 24]
- Updated MJPN documentation: name-system docs, research paper, admin page [Feb 24]
- New 'Interesting Facts' page with visitor statistics, family search clouds, and database insights [Feb 24]
- New 'Release Notes' page displaying version history from JSON [Feb 24]
- Added Release Notes and Interesting Facts links to footer navigation [Feb 24]
- Zero-Result AI Research Service: Automatic logging of failed searches for logged-in users [Feb 24]
- Admin interface for reviewing and resolving zero-result searches [Feb 24]
- Email notifications when searches are fixed [Feb 24]
- Weekly admin digest of pending zero-result searches [Feb 24]
Web Application Updates
- Fixed compound surname auto-split bug in search [Feb 24]
Web Application Updates
- Fixed Hebrew transliterations for compound surnames (Benarroch: בנאררוך → בנהרוש) [Feb 23]
- Added version management tool in admin console with changelog tracking [Feb 23]
- Kiosk mode: Burial QR codes, candles page, rabbis page [Feb 20]
- QR login authentication for kiosk terminals [Feb 19]
- MJPN Name System documentation (v3.1) with improvements [Feb 20]
- Statistics page and statistical portrait updates [Feb 1]
- Pitch deck with wordclouds and bibliography [Feb 1]
Research & Development
- MJPN Academic Preprint Paper (v6): Full academic paper for arXiv/SSRN/OSF submission [Jan 25]
- MyHeritage Partnership Proposal: Bidirectional search concept and outreach email
- Facebook Group Heritage Scraper: Multi-iteration scraper for 'Généalogie des juifs marocains'
- Transkribus HTR Exploration: Research on handwritten text recognition for tombstone OCR
Web Application Updates
- WhatsApp integration: Photo submissions via WhatsApp with dashboard [Jan 27-28]
- Pitch Deck: Multi-language versions (FR, HE, AR) with analytics [Jan 27]
- User Activity Monitor: Track searches, bot interactions, trips [Jan 30-31]
- General Access Log with IP geolocation tracking [Jan 19]
- Admin Email Interface: Compose, view, spam management [Jan 14]
- Newsletter System: Compose, preview, stats, mass mailing [Jan 13]
- YahasraBot Reports: View and export questionnaire responses [Jan 23]
- Personal Bot: AI-powered personal genealogy assistant [Jan 22-23]
- Personal Profile: Detailed genealogy profile management [Jan 22]
- Worldwide Search: Cross-platform Jewish genealogy search [Jan 27-30]
- MJPN Algorithm v3.0: Complete rewrite with fixed OI/AY rules [Jan 25]
- Large-scale MJPN evaluation (13,609 pairs) and academic algorithm comparison [Jan 25]
- Digital Archives with screenshot management [Jan 4]
- Candle memorial pages [Jan 4]
- Admin Scripts interface for batch operations [Jan 24]
- Phonetic index rebuild scripts [Jan 25]
- Search alerts system [Jan 25]
- Splash page for Android app [Jan 4]
Research & Development
- WhatsApp Business API Planning: Meta Business Platform setup, webhook config, Israeli SIM registration
- MJPN Academic Paper v4: DHSS Hub affiliation, 13,609-pair evaluation, Beider-Morse comparison [Jan 25]
- MJPN Paper HTML Conversion: Moroccan red styled HTML versions of papers [Jan 25]
- Pitch Deck with Screenshots: 23-slide merged PowerPoint with annotated demo [Jan 27]
- Google for Startups Application: 14-slide pitch deck with Moroccan heritage design
- Personal Intelligence Bot Blueprint: 1,350+ line implementation document [Jan 22]
- Landing Page Redesign: '336 Years of History' storytelling with Morocco map [Jan 31]
- Hebrew/Latin First Name Translation: 27,173 first names with 700+ mappings
- First Names Database Completion: 24,129 Hebrew names (10.4%→91.0% coverage)
- Latin-to-Hebrew Transliteration System: Custom rules for Moroccan Jewish surnames
- Moroccan Rabbis Database Enrichment: 149 rabbis with biographical data
- Iligh Cemetery Research: Pascon/Schroeter 1982 analysis, 36 family names
- DHSS Fellowship Interview Prep: 30-minute presentation with methodology rollup
- Academic Conference Search: 24 conferences identified (ICOS, IAJGS, RootsTech, DH2026)
- Strategic Market Research: Competitive landscape, 1.5M+ diaspora market sizing
- Access Log Security Analysis: WordPress vulnerability probes, Cloudflare recommendations
- Facebook Crawler Analysis: Meta crawling diagnosis, robots.txt recommendations
- Professor Jamaa Baida Outreach: French messenger for Moroccan archives
- Dr. Jack Azran Permission Letter: Safi Cemetery data authorization
- AWS Cost Optimization: $38/month→$0.25/month reduction [Jan]
- AWS Server Migration: Fresh free-tier account blueprint
- Social Login OAuth Setup: Google OAuth credentials, Facebook App ID configured
- Postmemory/Prosthetic Memory Research: Theoretical framework connecting Jung, Hirsch, Landsberg
Web Application Updates
- MJPN-ML System: Machine learning surname/firstname suggestion generators [Dec 27]
- Video Archives: Gallery, player, submissions, subtitle management [Dec 27]
- Heritage Sources indexer (475MB+ content database) [Dec 26]
- Cemetery Photos: Review, approval, bulk import system [Dec 23-31]
- Rabbi Biographies scraper and database (1900+ entries) [Dec 30]
- Corcos Index integration (490 entries) [Dec 28]
- Hebrew Transliterator with AI predictions [Dec 6]
- Hebrew Date Calculator for burial records [Dec 24]
- Data Export/Import tool (export_all_tables.py) [Dec 17]
- Onomastics Manager: Name origins and meanings [Dec 17]
- Research Library with academic papers [Dec 24-31]
- Trip Planner service for heritage tours [Dec 27]
- Melilla and Mogador cemetery data imports [Dec 27-28]
- Multiple scrapers: Dafina, Diarna, Darnna, Moreshet [Dec 3]
- External adapters: Geni, SephardicGen, Avotaynu, etc. [Dec 3]
- SEO Generator: Dynamic sitemap with 30K+ URLs [Dec 31]
Research & Development
- Sefer Mogador OCR Digitization: 2,501 burial records from 80 HEIC images (1774-2011) [Dec 28]
- Mogador Hebrew-Latin Name Matching: 86.8% match rate algorithm [Dec 28]
- MJPN vs Holmes-McCabe Academic Comparison: 68.16% vs 41.85% precision analysis
- CLAUDE.md Documentation Audit: Gap analysis revealing missing modules
- TikTok Video CSP Fix: Added *.tiktokcdn.com and CDN domains
- Roots Tourism B2G Market Research: $639.82B heritage tourism, ITALEA benchmark [Dec 7]
- Video Directory Copyright Disclaimer: Three disclaimer options
- SEO Analysis & Enhancement: 272 clicks, 7.5k impressions analysis [Dec 31]
- Academic Paper Verification System: Dual-tool verifier (911 + 931 lines)
- Search Variant Click Bug Fix: requestSubmit() with searchVariant() helper [Dec]
- Burial Details & Rabbi Template Fix: |title Jinja2 filter for name capitalization
- Religious Titles Database Cleaning: 432 records with grand rabbin/rabbi/hakham [Dec 24]
- MJPN Admin Consolidation: Merged three interfaces into unified system
- User Registration 500 Error Fix: create_user signature, change_password method [Dec 23]
- Cemetery Visibility Management: Safi cemetery hiding (838 records) [Dec 30]
- MCP Server 'Fortress Edition': HTTP/SSE server with backups, audit logging
- Cemetery Photo Gallery: Pagination, Hebrew name/date display, 337 phonetic results
- Multi-Language Translations: 51 missing strings, 676 Arabic translations
- Android App Splash & Language: /splash route fix, infinite redirect fix
- French Language Search Fix: Apostrophe-breaking bug in d'famille translations
- Admin Access Control: @researcher_or_admin_required restructure
- Android App Store Updates: Capacitor config, Gradle increments, signed APK
- Comprehensive Babel Translations: 1,454 entries, 27 Hebrew corrections
Web Application Updates
- Admin Management Console: Unified site management interface [Nov 28]
- Comments Moderation system [Nov 16]
- Pending Updates/Corrections workflow [Nov 28]
- Researcher Applications management [Nov 28]
- User Mailbox messaging system [Nov 28]
- News Manager with multi-language support [Nov 16-29]
- OAuth integration (Google) [Nov 15]
- Profile management and password change [Nov 28]
- Contribution tracking (My Contributions) [Nov 28]
- Network visualization [Nov 20]
- Search History viewer [Nov 28]
- Screenshot Analysis tool [Nov 28]
- Error pages (404, 500) [Nov 28]
- Contact form improvements [Nov 28]
Web Application Updates
- Core application rewrite with Flask blueprints [Sep]
- Multi-language support (EN, FR, HE, AR, ES) [Sep-Oct]
- Flask-Babel integration for internationalization [Sep]
- User authentication system [Sep]
- Admin role management [Sep]
- Database migration to SQLite (yahasra.db) [Sep]
- 29,957 burial records [Sep]
- 185 communities database [Sep]
- Phonetic search with MJPN algorithm [Sep-Oct]
- Laredo roots integration (3,271 entries) [Oct]
- Beider roots/variations (4,510 + 13,517 entries) [Oct]
- Name variants system (17,173 entries) [Oct]
Web Application Updates
- Initial cemetery search application
- Basic burial record database
- Simple search functionality
- Static templates
For feature requests or bug reports, please contact us.