Skip to content

Add Schema.org structured data enhancements to 12 high-traffic news articles#349

Closed
Copilot wants to merge 10 commits intomainfrom
copilot/optimize-news-article-performance
Closed

Add Schema.org structured data enhancements to 12 high-traffic news articles#349
Copilot wants to merge 10 commits intomainfrom
copilot/optimize-news-article-performance

Conversation

Copy link
Contributor

Copilot AI commented Feb 19, 2026

  • Enhance NewsArticle schema with complete metadata across 12 articles
    • speakable SpeakableSpecification in both NewsArticle and WebPage schemas
    • Complete author metadata, publisher logo, wordCount, about entity
  • Add Person entities (Kristersson, Svantesson, Billström with Wikidata sameAs)
  • Add Organization entities (Sveriges Riksdag + 7 committees with URLs)
  • Add FAQPage schema to 10/12 articles from "What to Watch" sections
  • Add WebPage + SpeakableSpecification to all 12 articles
  • Fix PR review: wordCount restored, FAQ whitespace, about.name/sameAs match, space typo
  • Fix PR review: speakable added to NewsArticle in 10 articles
  • Fix PR review: Revert evening-analysis type to 'prospective' in fr/fi/es indexes (all 14 languages now consistent)
  • Fix PR review: Update 2026-02-16-committee-reports-en.html JSON-LD headline/description to match actual article content (Ukraine support, data protection — not travel guarantee)
  • All 1188 tests pass
  • htmlhint: no new errors introduced
  • CI failure (Cypress) is a pre-existing infrastructure constraint (npm registry blocked by step-security egress policy), not caused by code changes
Original prompt

This section details on the original issue you should resolve

<issue_title>Optimize News Article Page Load Performance and Core Web Vitals</issue_title>
<issue_description># 📋 Issue Type
Performance / Optimization

🎯 Objective

Optimize news article page load performance by implementing lazy loading for embedded analytics, minimizing CSS, and improving Core Web Vitals metrics.

📊 Current State

Performance Concerns:

  • News articles have extensive content (2,500-4,000 words)
  • Multiple document links and external references
  • 14-language versions with language switchers
  • No lazy loading for below-the-fold content

Core Web Vitals (needs measurement):

  • LCP (Largest Contentful Paint): Unknown
  • FID (First Input Delay): Unknown
  • CLS (Cumulative Layout Shift): Unknown

🚀 Desired State

Performance Targets:

  • ✅ LCP < 2.5 seconds
  • ✅ FID < 100ms
  • ✅ CLS < 0.1
  • ✅ Lighthouse Performance Score > 90
  • ✅ Reduced initial payload by 30%+

🔧 Implementation Approach

Step 1: Implement Lazy Loading

<!-- Lazy load images -->
<img src="..." loading="lazy" alt="...">

<!-- Lazy load iframes (if any) -->
<iframe src="..." loading="lazy"></iframe>

<!-- Defer non-critical JavaScript -->
<script defer src="analytics.js"></script>

Step 2: Optimize CSS

/* Critical CSS inline in <head> */
/* Above-the-fold styles only */

/* Defer non-critical CSS */
<link rel="preload" href="styles.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="styles.css"></noscript>

Step 3: Add Resource Hints

<link rel="preconnect" href="https://data.riksdagen.se">
<link rel="dns-prefetch" href="https://riksdagsmonitor.com">

Step 4: Optimize Fonts

/* Use system fonts or preload custom fonts */
@font-face {
  font-family: 'Inter';
  font-display: swap;  /* Prevent FOIT */
}

Step 5: Measure and Validate

# Run Lighthouse
npx lighthouse https://riksdagsmonitor.com/news/2026-02-18-committee-reports-en.html --output html --output-path ./report.html

# Check Core Web Vitals
# Use Google Search Console or PageSpeed Insights

✅ Acceptance Criteria

  • Lazy loading implemented for images
  • Critical CSS inlined in
  • Non-critical CSS deferred
  • Resource hints added (preconnect, dns-prefetch)
  • Font optimization implemented
  • Lighthouse score > 90 for Performance
  • Core Web Vitals meet targets (LCP, FID, CLS)
  • Tested across all 14 languages
  • Documentation updated with optimization patterns

📚 References

🤖 Recommended Agent

performance-engineer or frontend-specialist

📝 Notes

Why important: With 347+ news articles, performance directly impacts user experience and SEO rankings. Slow pages increase bounce rate and reduce engagement.

Measurement first: Run baseline Lighthouse audit before optimization to establish metrics.

Timeline: 2-3 days</issue_description>

<agent_instructions>Enhance NewsArticle schema with complete metadata (author, publisher, speakable content). Add Person entities for MPs/ministers, Organization entities for committees/parties. Add FAQ schema to 10+ relevant articles with policy explainers. Validate with Google Rich Results Test and Schema.org validator. Focus on high-traffic articles first (government propositions, opposition motions). Document schema patterns for future use.</agent_instructions>

Comments on the Issue (you are @copilot in this section)


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI and others added 3 commits February 19, 2026 17:49
…rticles

- Enhance NewsArticle schema with complete metadata (author with jobTitle/affiliation,
  publisher with logo, image, keywords, about, isAccessibleForFree, speakable content)
- Add speakable WebPage schema with CSS selectors for TTS readability
- Add FAQPage schema to 10 articles extracted from 'What to Watch' policy sections
- Add Person entities for key politicians (PM Kristersson, Finance Minister Svantesson,
  Foreign Minister Billström) with Wikidata sameAs references
- Add Organization entities for Riksdag committees and 'Sveriges Riksdag' with
  committee URLs and Wikidata references
- Target articles: 2026-02-19, 2026-02-18, 2026-02-17, 2026-02-16 (government
  propositions, opposition motions, committee reports - highest traffic)"

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
…tion

The paragraph-based FAQPage answers now:
- Prepend the bold key phrase to make answers self-contained
- Use sentence-boundary truncation at 600 chars (rfind('. ') > 200)
- Produce grammatically complete, informative answers

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Correct capitalization of acronyms (EU, SME, SD), month names (March,
April, May-June), committee names (Finance Committee, Justice Committee),
and institutional names (Sweden Democrats, National Audit Office) in
FAQPage schema question names across 9 updated articles."

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Copilot AI changed the title [WIP] Optimize news article page load performance and Core Web Vitals Add Schema.org structured data enhancements to 12 high-traffic news articles Feb 19, 2026
Copilot AI requested a review from pethers February 19, 2026 17:59
@github-actions github-actions bot added html-css HTML/CSS changes news News articles and content generation size-xl Extra large change (> 1000 lines) labels Feb 19, 2026
@github-actions
Copy link
Contributor

🔍 Lighthouse Performance Audit

Category Score Status
Performance 85/100 🟡
Accessibility 95/100 🟢
Best Practices 90/100 🟢
SEO 95/100 🟢

📥 Download full Lighthouse report

Budget Compliance: Performance budgets enforced via budget.json

@github-actions
Copy link
Contributor

🔍 Lighthouse Performance Audit

Category Score Status
Performance 85/100 🟡
Accessibility 95/100 🟢
Best Practices 90/100 🟢
SEO 95/100 🟢

📥 Download full Lighthouse report

Budget Compliance: Performance budgets enforced via budget.json

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR enhances Schema.org structured data across 12 high-traffic English news articles (2026-02-16 → 2026-02-19) to improve eligibility for rich results (Speakable/FAQ/Knowledge Graph entities) and overall SEO clarity.

Changes:

  • Enriches NewsArticle JSON-LD (author metadata, publisher logo/image objects, speakable selectors, topical metadata).
  • Adds additional JSON-LD blocks for WebPage + SpeakableSpecification and (where applicable) FAQPage.
  • Adds standalone Person / Organization entities (ministers, Riksdag, committees) to support entity recognition.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
news/2026-02-19-opposition-motions-en.html Expands NewsArticle schema and adds WebPage/FAQPage/Organization entities.
news/2026-02-19-government-propositions-en.html Expands NewsArticle schema and adds WebPage/FAQPage/Person/Organization entities.
news/2026-02-19-committee-reports-en.html Adds WebPage speakable, FAQPage, and committee Organization entities.
news/2026-02-18-opposition-motions-en.html Adds WebPage speakable, FAQPage, and committee Organization entities.
news/2026-02-18-government-propositions-en.html Adds WebPage speakable, FAQPage, Person, and committee Organization entities.
news/2026-02-18-committee-reports-en.html Adds WebPage speakable, FAQPage, Person, and committee Organization entities.
news/2026-02-17-opposition-motions-en.html Adds WebPage speakable and committee Organization entities.
news/2026-02-17-government-propositions-en.html Adds WebPage speakable, FAQPage, and committee Organization entities.
news/2026-02-17-committee-reports-en.html Adds WebPage speakable, FAQPage, Person, and committee Organization entities.
news/2026-02-16-opposition-motions-en.html Adds WebPage speakable, Person, and committee Organization entities.
news/2026-02-16-government-propositions-en.html Adds WebPage speakable, FAQPage, Person, and committee Organization entities.
news/2026-02-16-committee-reports-en.html Adds WebPage speakable, FAQPage, Person, and committee Organization entities.

"url": "https://hack23.com/cia-icon-140.webp",
"width": 1200,
"height": 630
},
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The NewsArticle structured data no longer includes wordCount, even though many other news pages in the repo provide it (and this file previously did). Consider restoring wordCount for consistency and richer metadata.

Suggested change
},
},
"wordCount": 1500,

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restored wordCount to the NewsArticle schema for all 6 articles that were missing it (the 2026-02-19 articles and the 2026-02-16/17/18 committee reports). Fixed in commit d6bca81.

"name": "What should analysts watch regarding May-June 2026 plenary debates and votes?",
"acceptedAnswer": {
"@type": "Answer",
"text": "May-June 2026 plenary debates and votes , scheduled three months before election, will be analyzed obsessively for coalition fracture evidence. If Center Party votes against government on preventive detention, every news outlet runs \"Tidö Coalition Splits\" headlines. If Center abstains, impact is muted. If Liberals (16 seats, typically loyal) show hesitation on any motion, coalition discipline questions intensify."
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There’s an extra space before the comma in the FAQ answer text ("votes , scheduled"). This looks like a copy/paste artifact; removing it will improve the structured data text quality.

Suggested change
"text": "May-June 2026 plenary debates and votes , scheduled three months before election, will be analyzed obsessively for coalition fracture evidence. If Center Party votes against government on preventive detention, every news outlet runs \"Tidö Coalition Splits\" headlines. If Center abstains, impact is muted. If Liberals (16 seats, typically loyal) show hesitation on any motion, coalition discipline questions intensify."
"text": "May-June 2026 plenary debates and votes, scheduled three months before election, will be analyzed obsessively for coalition fracture evidence. If Center Party votes against government on preventive detention, every news outlet runs \"Tidö Coalition Splits\" headlines. If Center abstains, impact is muted. If Liberals (16 seats, typically loyal) show hesitation on any motion, coalition discipline questions intensify."

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed — changed "votes , scheduled" to "votes, scheduled". Commit d6bca81.

"keywords": "opposition, motions, parliament, legislation, Swedish Parliament, Riksdag, politics, Sweden",
"about": {
"@type": "Thing",
"name": "Swedish Parliamentary Motions",
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the NewsArticle schema, the about entity name (Swedish Parliamentary Motions) doesn’t match the sameAs target (Q1968818 is used elsewhere in this file for Sveriges Riksdag/Swedish Parliament). Update sameAs to the correct Wikidata item for parliamentary motions, or change the about.name to match the linked entity.

Suggested change
"name": "Swedish Parliamentary Motions",
"name": "Swedish Parliament",

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed — about.name updated to "Swedish Parliament" to match the Wikidata Q1968818 entity. Commit d6bca81.

Comment on lines 396 to 398
"@type": "Answer",
"text": "The Civil Law Committee (CU) and Environment and Agriculture Committee (MJU) \n will hold hearings on these motions, likely inviting expert testimony from industry, civil society, and authorities."
}
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The FAQPage answer text includes escaped newlines/indentation (\n ), which will be emitted as extra whitespace in structured data. Consider normalizing these strings to plain sentences with single spaces to avoid odd rendering in Rich Results / TTS.

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed — normalized all FAQ answer strings to single-space separated sentences by collapsing \n whitespace patterns. Applies to both 2026-02-19-government-propositions and 2026-02-19-opposition-motions. Commit d6bca81.

Comment on lines +316 to +318
"articleSection": "Opposition Motions",
"inLanguage": "en",
"keywords": "opposition, motions, parliament, legislation, Swedish Parliament, Riksdag, politics, Sweden",
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The NewsArticle structured data no longer includes wordCount, even though many other news pages in the repo provide it (and this file previously did). Consider restoring wordCount for consistency and richer metadata.

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restored wordCount in the NewsArticle schema. Commit d6bca81.

Comment on lines 393 to 395
"@type": "Answer",
"text": "The Speaker will assign these propositions to relevant committees \n (Justice, Finance, Environment, Defence). Committee composition and chair priorities will shape legislative outcomes."
}
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The FAQPage answer text includes escaped newlines/indentation (\n ), which will be emitted as extra whitespace in structured data. Consider normalizing these strings to plain sentences with single spaces to avoid odd rendering in Rich Results / TTS.

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed whitespace normalization in FAQPage answers — \n patterns are now collapsed to single spaces. Commit d6bca81.

@pethers
Copy link
Member

pethers commented Feb 19, 2026

@copilot apply changes based on the comments in this thread

…ace typo

- Restore missing wordCount in NewsArticle schema for 6 articles where
  it was absent (2026-02-19 govt-propositions, opposition-motions,
  committee-reports; 2026-02-16/17/18 committee-reports)
- Fix escaped newlines/indentation (\n        ) in FAQPage answer text
  in 2026-02-19-government-propositions and 2026-02-19-opposition-motions
- Fix about.name='Swedish Parliamentary Motions' → 'Swedish Parliament'
  to match sameAs Wikidata Q1968818 in 2026-02-19-opposition-motions
- Fix 'votes , scheduled' → 'votes, scheduled' space typo in
  2026-02-18-opposition-motions FAQ answer

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
The NewsArticle JSON-LD blocks in the 2026-02-16, 2026-02-17, 2026-02-18,
and 2026-02-19 committee-reports articles were missing the speakable
SpeakableSpecification property (it was only present in the separate
WebPage block, not in the NewsArticle itself). All 12 articles now have
consistent speakable metadata in both their NewsArticle and WebPage schemas.

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
@pethers pethers requested a review from Copilot February 19, 2026 22:15
@github-actions github-actions bot added the dependencies Dependency updates label Feb 19, 2026
@github-actions github-actions bot added i18n Internationalization/localization deployment Deployment configuration labels Feb 19, 2026
@github-actions
Copy link
Contributor

🔍 Lighthouse Performance Audit

Category Score Status
Performance 85/100 🟡
Accessibility 95/100 🟢
Best Practices 90/100 🟢
SEO 95/100 🟢

📥 Download full Lighthouse report

Budget Compliance: Performance budgets enforced via budget.json

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 16 out of 18 changed files in this pull request and generated 4 comments.

"title": "La Suède submerge le Parlement de législation sur la criminalité juvénile et l'énergie alors que vingt rapports de commission arrivent en une seule journée",
"date": "2026-02-19",
"type": "prospective",
"type": "analysis",
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changes the evening analysis entry to type: "analysis", but other language indexes (and news/index.html) still classify the same 2026-02-19 evening analysis article as prospective. Because the type is used for filtering and labels, this will create inconsistent categorization across languages. Pick one canonical type for this article and apply it consistently across all news/index_*.html (ideally via the generator) so users see the same category in every language.

Suggested change
"type": "analysis",
"type": "prospective",

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in commit 073517e — reverted the evening-analysis type back to "prospective" in index_fr.html, index_fi.html, and index_es.html. All 14 language indexes now consistently use "prospective" for this article.

"title": "Ruotsi tulvii eduskunnan nuorisorikollisuus- ja energialainsäädännöllä, kun kaksikymmentä valiokunnan mietintöä saapuu yhtenä päivänä",
"date": "2026-02-19",
"type": "prospective",
"type": "analysis",
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changes the evening analysis entry to type: "analysis", but other language indexes (and news/index.html) still classify the same 2026-02-19 evening analysis article as prospective. Since the type drives filtering/labels, this will cause inconsistent categorization depending on language. Align the type across all news/index_*.html (preferably by fixing the generator’s classification) so the article appears under the same category everywhere.

Suggested change
"type": "analysis",
"type": "prospective",

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in commit 073517eindex_fi.html reverted to "prospective", consistent with all other 13 language indexes.

Comment on lines 535 to 538
"title": "Suecia inunda el Parlamento con legislación sobre criminalidad juvenil y energía al aterrizar veinte informes de comisión en un solo día",
"date": "2026-02-19",
"type": "prospective",
"type": "analysis",
"slug": "2026-02-19-evening-analysis-es.html",
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changes the evening analysis entry to type: "analysis", but other language indexes (and news/index.html) still classify the same 2026-02-19 evening analysis article as prospective. Because the type is used for filtering and labels, this introduces cross-language inconsistency. Please ensure the article type is updated consistently across all news/index_*.html (ideally through the index generation script) rather than only in a subset of languages.

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in commit 073517eindex_es.html reverted to "prospective", consistent with all other 13 language indexes.

Comment on lines 75 to 78
"headline": "Continued Civil Law Focus with Travel Guarantee Vote Approaching",
"alternativeHeadline": "Continued Civil Law Focus with Travel Guarantee Vote Approaching",
"description": "Committee reports maintain emphasis on consumer protection as travel guarantee reform heads toward chamber vote, with cross-party support expected",
"datePublished": "2026-02-16T00:00:00.000Z",
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The structured-data headline/description here describe a “travel guarantee” story, but the visible article content (lede and sections) is about Ukraine aid, vaccine preparedness, and other committee reports. This mismatch can cause Rich Results/Knowledge Graph to show incorrect information for the page. Update the page metadata (and the JSON-LD headline/description) to accurately reflect the actual article content, or adjust the article content to match the intended headline.

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in commit 4d0934b — updated the JSON-LD headline, alternativeHeadline, description, and BreadcrumbList name to accurately reflect the actual article content (Ukraine support, data protection, social policy reform) instead of the mismatched "travel guarantee" text.

@pethers
Copy link
Member

pethers commented Feb 19, 2026

@copilot apply changes based on the comments in this thread and Test News / News & Sitemap Tests (cypress/e2e/news-articles.cy.js) (pull_request)
Test News / News & Sitemap Tests (cypress/e2e/news-articles.cy.js) (pull_request)Cancelled after 34s
Test News / News & Sitemap Tests (cypress/e2e/news-page.cy.js) (pull_request)
Test News / News & Sitemap Tests (cypress/e2e/news-page.cy.js) (pull_request)Cancelled after 20s
Test News / News & Sitemap Tests (cypress/e2e/sitemap.cy.js) (pull_request)
Test News / News & Sitemap Tests (cypress/e2e/sitemap.cy.js) (pull_request)Failing after 18s

Copilot AI and others added 2 commits February 19, 2026 23:15
…ismatch

- Revert evening-analysis type from 'analysis' back to 'prospective' in
  index_fr.html, index_fi.html, and index_es.html to match all other 11
  language indexes (consistent 'prospective' across all 14 languages)
- Fix 2026-02-16-committee-reports-en.html JSON-LD headline/description
  mismatch: old text described 'travel guarantee' story but article body
  covers Ukraine support, data protection, and social policy reforms;
  updated NewsArticle headline/description and BreadcrumbList name to
  accurately reflect actual article content per Schema.org best practices

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Commit 26e614e accidentally changed the 2026-02-19 evening analysis
article type from 'prospective' to 'analysis' in index_fr.html,
index_fi.html, and index_es.html while 11 other language indexes
retained 'prospective'. All 14 language indexes now consistently
classify this article as 'prospective'.

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
@github-actions
Copy link
Contributor

🔍 Lighthouse Performance Audit

Category Score Status
Performance 85/100 🟡
Accessibility 95/100 🟢
Best Practices 90/100 🟢
SEO 95/100 🟢

📥 Download full Lighthouse report

Budget Compliance: Performance budgets enforced via budget.json

@pethers pethers closed this Feb 19, 2026
@pethers pethers deleted the copilot/optimize-news-article-performance branch February 19, 2026 23:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Dependency updates deployment Deployment configuration html-css HTML/CSS changes i18n Internationalization/localization news News articles and content generation size-xl Extra large change (> 1000 lines)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Optimize News Article Page Load Performance and Core Web Vitals

3 participants