Conference profiles

One of the features we want to ship for the conference is profiles.

That is, an extended set of information where you can find out about other attendees and speakers.

Anyone attending (or not attending! or attending remotely!) can fill out some information and we’ll be able to display and browse it in different ways as part of the conference website experience.

A good example of something like this Discover Toronto directory https://discover.toronto.inc/

Here’s an example of the edit screen:

And here’s the browse screen:

I’m logged in, so the “YOU” badge is on mine.

If you want to work on this OR have ideas of what you’d like to see, leave a comment!

1 Like

When we had our Vancouver Locals kick off, @daffl.xyz already volunteered to say that he was interesting in working on this. Tagging him so he sees this :stuck_out_tongue:

I think we should start with a lexicon, and probably make it under org.atmosphereconf.profile ? That is, we can focus on making this for atproto events, not be too afraid of changing it over time, but lean into atproto-native stuff.

I think we can just use Slices for the backend for this?

This needs to fit into a to-be-determined website framework, but we can work on this “standalone” for now, and figure out how to integrate it into the flow of a website.

Also! Lots of cool ways to do visualizations.

I’m going to riff on some basic lexicon ideas:

  • use the atgeo lexicon for people to pick “hometown” → this gets us a map of where attendees are coming from
  • integrate with @ngerakines.me atwork for linking in a “work profile”, endorsements, etc?
  • tags, as shown in the Discover Toronto
  • “attending” status, probably from Smoke Signal RSVP (which gets us attendee status, remote vs in person if we do a second event, MAYBE stretch goal to do event-per-talk)

The goal of this should be how to help explore who else is coming, connect with them, find areas of interest, and keep connecting after the conference.

I think using org.atmosphereconf.profile as a type is a great idea.

An example could look something like this:

at://did:plc:cbkjy5n7bk3ax2wplmtjofq2/org.atmosphereconf.profile/self

With content that looks like this:

{
  "$type": "org.atmosphereconf.profile",
  "avatar": {
    "$type": "blob",
    "mimeType": "image/png",
    "ref": {
      "$link": "bafkreiarfc33ygmvwuwfhkdg4sm4n6ua46bg4s63moajb6xrkdimvnzcyq"
    },
    "size": 466197
  },
  "displayName": "Nick Gerakines",
  "homeTown": {
    "$type": "community.lexicon.location#h3",
    "h3": "852a9067fffffff",
    "name": "Kettering"
  },
  "interests": [
    "ATProtocol",
    "Software Development"
  ]
}

A few call-outs:

  • The “homeTown” field is set to one of the location types for indexing.
  • The “avatar” is a user-provided profile picture.
  • The “interests” field is user-provided tags for conference topics and social activities

RSVPs

When someone purchases a ticket or RSVPs to the conference event ( Smoke Signal ) then the atprotocol.dev identity can create an attestation record with organizer-provided proof.

For example, my RSVP would be updated to include a signature reference:

{
  "$type": "community.lexicon.calendar.rsvp",
  "createdAt": "2025-09-19T17:33:18.908Z",
  "status": "community.lexicon.calendar.rsvp#going",
  "subject": {
    "cid": "bafyreia66bgnwqxxiq74c6w27xr3gwtiqeuklfs4a6jwulcaxbwb3rowiu",
    "uri": "at://did:plc:lehcqqkwzcwvjvw66uthu5oq/community.lexicon.calendar.event/3lte3c7x43l2e"
  },
  "signatures": [
    {
      "$type": "com.atproto.repo.strongRef",
      "cid": "bafyreigqcfmzvvnxnvx5iafituqtnshg33dt23rqp2x5ome7hmiow3op3q",
      "uri": "at://did:plc:lehcqqkwzcwvjvw66uthu5oq/org.atmosphereconf.rsvpEndorsement/3m3fqaop4tyng"
    }
  ]
}

And in the atprotocol.dev (did:plc:lehcqqkwzcwvjvw66uthu5oq) repository, the following record would be created:

{
  "$type": "org.atmosphereconf.rsvpEndorsement",
  "cid": "bafyreidqi6gk7rzddy2kxgglejntukvnpkppdlwzgg7ds2hax4n4fow32m",
  "role": "organizer"
}

Because it’s just a record, no additional or confidential signing data would be needed.

AppView

Lastly, with the three record types (profile, RSVP, and RSVP endorsement), an app view that subscribes to Jetstream to watch for record events would render an interactive map, interest pages, attendee profiles, etc. Just throwing some ideas out there.

https://going.atmosphereconf.org/2026 - the base URL

GET /2026/ - Displays recent activity leading up to and on the day of.

GET /2026/map - Displays a map of where attendees are coming from

GET /2026/u/[handle] - Attendee profile pages

GET /2026/i and GET /2026/i/[interest] - Interest tag cloud and directory

GET /2026/e and GET /2026/e/[handle]/[record_key] - Official and unofficial event directory and information

1 Like

Nice, thanks for fleshing this out!

Yeah, I’m picturing this as being part of atmosphereconf.org

Haven’t really worked out the info architecture for the site as a whole. Was thinking the people building this could experiment with Slices?

I have to put a call out for either an in-kind sponsorship for the website design / build out, or someone that will do it on contract. Will noodle on that more in the organizers channel. Definitely need design!!!

1 Like

I’d be happy to get a project template going with Slices and we could start prototyping.

2 Likes

Hi Boris! Heather here - we’ve crossed paths at Our Networks Conference, Meshtastic Setup & DWeb Camp with my partner Owen. :slight_smile:

Would be interested to chat more about UX/UI needs for creating and browsing profiles. I free up in about 2 weeks, just transitioning out of another UX role!

4 Likes

Helllooooo Heather! We’ve got some Vancouver Locals doing stuff, would love to chat. I’ll DM you in one of our many shared areas!

2 Likes

Got a demo going https://atconf.fly.dev/. Pretty basic right now. When you log in, your bsky profile avatar and bio will get copied over to your atmosphere org profile and then you can edit your hometown and interests.

Code is here GitHub - bigmoves/conf-demo . It’s all written in Gleam :star: because it’s hip rn and uses Slices for indexing/auth.

Haha. Nice. We still have to iterate on the profile fields a bit more, but great example that gives us something to work with.

Thanks @chadtmiller.com!

1 Like

add pronouns? maybe by grabbing from the bsky pronoun labeler?

2 Likes

Pronouns are making their way into main bsky profile lexicon AFAIK – as is a single website link, too https://github.com/bluesky-social/atproto/pull/4224

1 Like

Demo looks good so far. Thanks for sharing the code!

1 Like