This repository powers the Manulife AI Research public-facing website, built with Jekyll and hosted on GitHub Pages. The site showcases AI research publications, patents, talks, open source projects, academic collaborations, and embedded AI domains across the organization.
- Quick Start
- Site Architecture
- Content Types & How to Add Them
- Evidence Gating Rules
- Contribution Workflow
- PR Checklist
- Local Development
- Deployment
- Troubleshooting
| I want to add... | Where to edit | Jump to section |
|---|---|---|
| New publication/paper | _library/YYYY-slug.md |
Library Items |
| New patent | _library/YYYY-slug.md |
Library Items |
| New conference talk | _library/YYYY-slug.md |
Library Items |
| New open source repo | _data/open_source.yml |
Open Source |
| New collaboration | _data/collaborations.yml |
Collaborations |
| New research domain | _domains/slug.md |
Domains |
/
├── _config.yml # Jekyll configuration
├── _data/ # YAML data files
│ ├── collaborations.yml # Academic/industry partnerships
│ └── open_source.yml # Open source project catalog
├── _domains/ # Research domain collection (Markdown)
│ ├── fraud.md
│ ├── underwriting.md
│ └── platforms.md
├── _library/ # Publications, patents, talks (Markdown)
│ ├── 2025-fraud-gnn.md
│ ├── 2024-anomaly-detection.md
│ └── ...
├── _includes/ # Reusable HTML components
├── _layouts/ # Page templates
├── assets/ # CSS, images, static files
├── index.md # Homepage (Overview)
├── domains/index.md # Domains listing page
├── library/index.md # Library listing page
├── collaborations/index.md
└── open-source/index.md
| Collection | Location | Purpose |
|---|---|---|
library |
_library/*.md |
Publications, patents, talks, reports |
domains |
_domains/*.md |
Research focus areas embedded in business units |
| File | Location | Purpose |
|---|---|---|
open_source.yml |
_data/open_source.yml |
Catalog of open source repositories |
collaborations.yml |
_data/collaborations.yml |
Academic and industry partnerships |
Library items are the core research artifacts displayed on the site. These include publications, patents, talks, and reports.
_library/YYYY-descriptive-slug.md
Naming Convention: {year}-{short-descriptive-slug}.md
- Example:
2025-fraud-gnn.md,2024-mlops-talk.md,2023-underwriting-patent.md
---
title: "Your Publication Title Here"
year: 2025
type: publication
venue: "Conference or Journal Name (e.g., AAAI, NeurIPS, ICML)"
org_unit: "Manulife AI (Business Unit)"
domains: ["fraud", "underwriting"] # Must match slugs in _domains/
external_url: https://arxiv.org/abs/your-paper-id
code_url: https://github.com/manulife/your-repo # Optional
pdf_url: https://example.com/paper.pdf # Optional
summary: "1-2 sentence neutral summary of the research contribution."
---
Detailed description of the research (5-10 lines, neutral tone).
**Problem:** What problem does this work address?
**Approach:** Brief description of the methodology.
**Results:** Key quantitative or qualitative outcomes.
**Deployment:** Status of production deployment (if applicable).---
title: "Systems and Methods for [Description]"
year: 2023
type: patent
venue: "US Patent Office"
org_unit: "Manulife AI (Business Unit)"
domains: ["underwriting"]
external_url: https://patents.google.com/patent/US12345678
summary: "Brief description of what the patent covers."
---
**Patent Number:** US 12,345,678
**Abstract:** High-level description of the invention.
**Claims:** Key claims covered by the patent.
**Status:** Granted [year] / Pending---
title: "Your Talk Title"
year: 2024
type: talk
venue: "Conference Name"
org_unit: "Manulife AI (Team)"
domains: ["platforms"]
external_url: https://conference.com/talk-link
pdf_url: https://example.com/slides.pdf # Optional: link to slides
video_url: https://youtube.com/watch?v=xxx # Optional: link to recording
summary: "Brief description of the talk topic."
---
Description of the talk content.
**Topics covered:**
- Topic 1
- Topic 2
**Audience:** Who this talk is intended for.| Field | Required | Description |
|---|---|---|
title |
✅ | Full title of the artifact |
year |
✅ | Publication/grant year (integer) |
type |
✅ | One of: publication, patent, talk, report |
venue |
✅ | Conference, journal, or issuing body |
org_unit |
✅ | Business unit (e.g., "Manulife AI (Claims)") |
domains |
✅ | Array of domain slugs (must match _domains/*.md slugs) |
external_url |
✅ | Public link to the artifact |
summary |
✅ | 1-2 sentence description |
code_url |
❌ | Link to associated code repository |
pdf_url |
❌ | Direct link to PDF |
video_url |
❌ | Link to video recording |
publication- Peer-reviewed papers, preprintspatent- Granted or pending patentstalk- Conference presentations, keynotesreport- Technical reports, white papers
Open source projects are maintained in a centralized YAML file.
_data/open_source.yml
Open _data/open_source.yml and add a new entry:
- name: "Project Display Name"
repo_url: "https://github.com/manulife/repo-name"
status: "active" # One of: maintained, active, archived
team_owner: "Team Name (e.g., AI Platforms)"
license: "Apache-2.0"
last_release: "v1.2.0 (2025-01)"
description: "Brief description of what this project does (1-2 sentences)."| Field | Required | Description |
|---|---|---|
name |
✅ | Display name of the project |
repo_url |
✅ | Full GitHub URL to the repository |
status |
✅ | One of: maintained, active, archived |
team_owner |
✅ | Team responsible for the project |
license |
✅ | SPDX license identifier (e.g., Apache-2.0, MIT) |
last_release |
✅ | Latest release version and date |
description |
✅ | Short description (displayed on cards) |
active- Under active development with recent commitsmaintained- Stable, receiving bug fixes and security updatesarchived- No longer maintained, kept for reference
- name: "Fraud Detection Toolkit"
repo_url: "https://github.com/manulife/fraud-detection-toolkit"
status: "active"
team_owner: "Claims AI"
license: "Apache-2.0"
last_release: "v2.1.0 (2025-01)"
description: "Graph neural network utilities for insurance fraud detection patterns."Collaborations showcase partnerships with universities, research labs, and industry organizations.
_data/collaborations.yml
Open _data/collaborations.yml and add a new entry:
- partner: "University Name or Organization"
type: "academic" # One of: academic, industry
domain: "fraud" # Must match a slug in _domains/
years: "2024–2026"
area: "Brief description of the collaboration focus area."
links:
- label: "Project Page"
url: "https://university.edu/project"
- label: "Related Publication"
url: "https://arxiv.org/abs/xxx"| Field | Required | Description |
|---|---|---|
partner |
✅ | Name of collaborating organization |
type |
✅ | One of: academic, industry |
domain |
✅ | Related domain slug |
years |
✅ | Active years (e.g., "2024–2026") |
area |
✅ | Description of collaboration focus |
links |
✅ | Array of public links (at least one required) |
Each link must have:
label: Display text for the linkurl: Public URL (must be accessible without authentication)
- partner: "MIT CSAIL"
type: "academic"
domain: "underwriting"
years: "2023–2025"
area: "Interpretable machine learning for automated underwriting decisions"
links:
- label: "Lab Page"
url: "https://csail.mit.edu/research/project"
- label: "Joint Publication"
url: "https://arxiv.org/abs/2024.12345"Domains represent research focus areas embedded within business and technology functions. Only add new domains when you have sufficient evidence (see Evidence Gating Rules).
_domains/slug.md
Naming Convention: The filename (without .md) becomes the slug used to reference the domain elsewhere.
---
title: "Domain Display Name"
slug: "domain-slug" # Must match filename
blurb: "One sentence description shown on cards."
contact: "team-alias@manulife.com" # Optional
---
- Bullet point describing a capability or focus area
- Another key area of work
- Additional capability---
title: "Fraud Detection"
slug: "fraud"
blurb: "Pattern recognition and anomaly detection to identify and prevent fraudulent claims and transactions."
contact: "fraud-ai@manulife.com"
---
- Real-time transaction monitoring systems
- Graph-based network analysis for organized fraud detection
- Behavioral pattern recognition and anomaly scoring
- Claims validation and document authenticity verification
- Continuous learning from investigator feedbackTo associate a library item with a domain, add the domain's slug to the domains array:
# In _library/2025-fraud-gnn.md
domains: ["fraud", "platforms"] # References fraud.md and platforms.mdImportant: Domains only appear publicly on the website when they meet the evidence threshold:
| Threshold | Requirement |
|---|---|
| Option A | ≥2 library items tagged with the domain |
| Option B | ≥1 library item AND ≥1 collaboration tagged with the domain |
This ensures we only showcase domains with demonstrated, public evidence of research activity.
- Before adding a new domain: Ensure you have at least 2 library items OR 1 library item + 1 collaboration ready to publish
- When adding library items: Tag them with appropriate domain slugs to build domain visibility
- Hidden domains: Domains that don't meet the threshold still exist but won't appear in navigation or listings
- Fork or create a branch from
main - Make your changes following the templates above
- Test locally (see Local Development)
- Open a Pull Request with a clear description
- Address review feedback
- Merge once approved
| Change Type | Files to Edit |
|---|---|
| Add publication | Create _library/YYYY-slug.md |
| Add patent | Create _library/YYYY-slug.md with type: patent |
| Add talk | Create _library/YYYY-slug.md with type: talk |
| Add OSS project | Edit _data/open_source.yml |
| Add collaboration | Edit _data/collaborations.yml |
| Add new domain | Create _domains/slug.md (ensure evidence threshold is met) |
Before submitting your PR, verify:
- All links are public – No internal/authenticated URLs
- No restricted/confidential details – Content is appropriate for public disclosure
- No marketing adjectives without artifacts – Claims are backed by evidence
- Domain tags are correct – Slugs match existing
_domains/*.mdfiles - Required fields are present – Check field requirements for your content type
- File naming follows convention –
YYYY-descriptive-slug.mdfor library items - YAML syntax is valid – No parsing errors
- Local build passes – Run
bundle exec jekyll buildwithout errors
- Ruby 2.7+ with Bundler
- Git
# Clone the repository
git clone https://github.com/sabyasm/manulife-ai-research.git
cd manulife-ai-research
# Install dependencies
bundle installbundle exec jekyll serveVisit http://localhost:4000/manulife-ai-research/ in your browser.
For automatic browser refresh on changes:
bundle exec jekyll serve --livereloadbundle exec jekyll buildBuilt files are output to the _site/ directory.
The site is automatically deployed to GitHub Pages when changes are merged to main.
- Production URL: https://sabyasm.github.io/manulife-ai-research/
- Build process: GitHub Pages builds the Jekyll site automatically
- No manual deployment required
Pull requests trigger a CI build to catch errors before merge. Check the status checks on your PR to ensure the build passes.
Error: YAML parsing error in _library/my-file.md
Solution: Check for:
- Missing quotes around values with special characters
- Incorrect indentation (use 2 spaces)
- Missing colons after field names
Problem: Added a domain but it's not showing on the site.
Solution: Ensure the domain meets the evidence threshold:
- Add at least 2 library items with
domains: ["your-slug"], OR - Add 1 library item AND 1 collaboration referencing the domain
Problem: External links return 404.
Solution: Verify:
- URLs are publicly accessible (try in incognito mode)
- No typos in the URL
- The resource hasn't been moved or deleted
Warning: Domain 'xyz' not found
Solution: Ensure the domains array in your library item matches an existing file in _domains/. The slug must match the filename exactly (without .md).
- Check existing library items for examples
- Review the plan.md file for detailed architecture decisions
- Open an issue if you encounter persistent problems
- Neutral tone – Avoid superlatives and marketing language
- Evidence-based – Claims must be backed by artifacts
- Concise – Summaries should be 1-2 sentences; full descriptions 5-10 lines
- Technical accuracy – Ensure methodology and results are correctly described
- ❌ Internal/confidential information
- ❌ URLs requiring authentication
- ❌ Unreleased or embargoed research
- ❌ Personal contact information (use team aliases)
- ❌ Competitive intelligence or trade secrets
For questions about contributing, open an issue in this repository or contact the relevant domain team using the contact information on each domain page.