diff --git a/inst/WORDLIST.txt b/inst/WORDLIST.txt
index c983c55d..ed14c389 100644
--- a/inst/WORDLIST.txt
+++ b/inst/WORDLIST.txt
@@ -688,3 +688,22 @@ tmc
css
AJu
xWEGJx
+andre
+drodziewicz
+eWSIK
+ORobErYX
+pharmar
+riskmetric
+Rodziewicz
+sa
+Sanofi's
+shinyconf
+ShinyConf
+xejEvfwk
+eco
+cfc
+deaad
+img
+src
+svg
+wikimedia
diff --git a/posts/2024-04-29_appsilon_and__sa.../appendix.R b/posts/2024-04-29_appsilon_and__sa.../appendix.R
new file mode 100644
index 00000000..ece5203f
--- /dev/null
+++ b/posts/2024-04-29_appsilon_and__sa.../appendix.R
@@ -0,0 +1,78 @@
+# markdown helpers --------------------------------------------------------
+
+markdown_appendix <- function(name, content) {
+ paste(paste("##", name, "{.appendix}"), " ", content, sep = "\n")
+}
+markdown_link <- function(text, path) {
+ paste0("[", text, "](", path, ")")
+}
+
+
+
+# worker functions --------------------------------------------------------
+
+insert_source <- function(repo_spec, name,
+ collection = "posts",
+ branch = "main",
+ host = "https://github.com",
+ text = "source code") {
+ path <- paste(
+ host,
+ repo_spec,
+ "tree",
+ branch,
+ collection,
+ name,
+ "code_sections.qmd",
+ sep = "/"
+ )
+ return(markdown_link(text, path))
+}
+
+insert_timestamp <- function(tzone = Sys.timezone()) {
+ time <- lubridate::now(tzone = tzone)
+ stamp <- as.character(time, tz = tzone, usetz = TRUE)
+ return(stamp)
+}
+
+insert_lockfile <- function(repo_spec, name,
+ collection = "posts",
+ branch = "main",
+ host = "https://github.com",
+ text = "R environment") {
+ path <- paste(
+ host,
+ repo_spec,
+ "tree",
+ branch,
+ collection,
+ name,
+ "renv.lock",
+ sep = "/"
+ )
+ return(markdown_link(text, path))
+}
+
+
+
+# top level function ------------------------------------------------------
+
+insert_appendix <- function(repo_spec, name, collection = "posts") {
+ appendices <- paste(
+ markdown_appendix(
+ name = "Last updated",
+ content = insert_timestamp()
+ ),
+ " ",
+ markdown_appendix(
+ name = "Details",
+ content = paste(
+ insert_source(repo_spec, name, collection),
+ insert_lockfile(repo_spec, name, collection),
+ sep = ", "
+ )
+ ),
+ sep = "\n"
+ )
+ knitr::asis_output(appendices)
+}
diff --git a/posts/2024-04-29_appsilon_and__sa.../appsilon_and__sanofi_joins_the_pharmaverse_council!.qmd b/posts/2024-04-29_appsilon_and__sa.../appsilon_and__sanofi_joins_the_pharmaverse_council!.qmd
new file mode 100644
index 00000000..5de4185f
--- /dev/null
+++ b/posts/2024-04-29_appsilon_and__sa.../appsilon_and__sanofi_joins_the_pharmaverse_council!.qmd
@@ -0,0 +1,66 @@
+---
+title: "Appsilon and Sanofi joins the pharmaverse council!"
+author:
+ - name: Ari Siggaard Knoph
+description: "Updates to the pharmaverse council"
+date: "2024-04-29"
+# please do not use any non-default categories.
+# You can find the default categories in the repository README.md
+categories: [community]
+# feel free to change the image
+image: "pharmaverse.png"
+---
+
+
+
+```{r setup, include=FALSE}
+long_slug <- "2024-04-29_appsilon_and__sa..."
+# renv::use(lockfile = "renv.lock")
+```
+
+
+
+We are excited to announce that **Appsilon** and **Sanofi** will take up the remaining two open council seats on the pharmaverse council!
+
+Appsilon will on the council be represented by [**Damian Rodziewicz**](https://www.linkedin.com/in/drodziewicz/) and Sanofi by [**Andre Couturier**](https://www.linkedin.com/in/andre-couturier-1800b447/).
+
+------------------------------------------------------------------------
+
+# Appsilon and Open Source
+
+Appsilon is the maintainer of the [`rhino`](https://appsilon.github.io/rhino/) package already on the pharmaverse package roster, as well as having numerous employees contributing to pharmaverse in spaces such as TLG packages and our [Examples site](https://pharmaverse.github.io/examples/).
+Appsilon also powers the popular [ShinyConf](https://www.shinyconf.com/) and are involved in the pilot submissions to FDA through the R consortium working group ["R for submission"](https://rconsortium.github.io/submissions-wg/).
+
+------------------------------------------------------------------------
+
+# Sanofi and Open Source
+
+Sanofi recently became a member of the R consortium and have in recent years invested heavily in the adoption of R internally.
+In line with the pharmaverse goal, Sanofi is committed to the adoption and further development of open source software in the pharma industry.
+This is evident through Sanofi's contributions to [`falcon`](https://pharmaverse.github.io/falcon/) and [`riskmetric`](https://pharmar.github.io/riskmetric/) and their [extension](https://phuse.s3.eu-central-1.amazonaws.com/Archive/2024/Connect/US/Bethesda/PAP_ET10.pdf) of the [`teal`](https://insightsengineering.github.io/teal/latest-tag/) framework, which they are working towards open sourcing.
+
+------------------------------------------------------------------------
+
+Becoming a member of the pharmaverse council means that the companies are committing to our [charter](https://pharmaverse.org/contribute/council/) and specifically:
+
+- *"Commitment to at least 2 open source packages under pharmaverse via reviews, hands-on code development, product leads, or other roles which contribute to the design, development, testing, release, and/or maintenance"*
+
+Both companies will bring both deep technical knowledge and knowledge on R adoption into pharmaverse.
+
+----
+
+We are excited to further develop the open source eco-system for pharma!
+
+If you want to read more on how pharmaverse is governed then check out [Inside the pharmaverse](https://pharmaverse.github.io/blog/posts/2024-03-04_inside_the__phar.../inside_the__pharmaverse.html).
+
+On behalf of the council, Ari Siggaard Knoph
+
+
+
+```{r, echo=FALSE}
+source("appendix.R")
+insert_appendix(
+ repo_spec = "pharmaverse/blog",
+ name = long_slug
+)
+```