Advertising on Seldeo: how we think about it
Why we advertise
Seldeo is a private company with a small team and a large ambition — a calmer social network that persists for decades, not one that flips in three years. Getting to that future means having a durable revenue model that doesn't require selling out the reasons the product exists.
Advertising is one part of that revenue model. We chose it over the two main alternatives — a paid subscription and data-brokerage — for pragmatic reasons:
- A paid subscription works well for a small, technical audience but fails as a growth strategy for a mass-market social product. The people we most want on Seldeo are the ones least likely to pay a monthly fee.
- Data-brokerage is the fastest way to lose your users' trust and, in most jurisdictions where we care about our legal footing, is not actually available to us. Selling personal data was never on the table.
Ads it is. The rest of this post is how we make sure ads work on Seldeo without turning Seldeo into the thing we're trying not to be.
Where ads appear
Ads on Seldeo appear in exactly three places, all inside the mobile app:
- Native feed cards. Between organic posts in the friend feed. Six per 21-post scroll segment, at fixed indices. Every one is labelled "Sponsored" with an AdChoices control.
- Story ad slides. Between story bundles in the story viewer. No more than one per eight organic slides. Shaped like organic slides — full-screen, portrait, tap to advance — with a persistent "Sponsored" chrome.
- In-stream video ads. Before video posts longer than
60 seconds. Skippable per VAST
skipoffset(typically 5 seconds for our own line items). Pre-roll only; no mid-roll ads on user-generated video. Companion end cards when the advertiser provides one.
That is the whole list.
Where ads do not appear
- On the corporate website. seldeo.com is ad-free. The advertising described in this post is only inside the mobile app.
- On memorial pages. No ads render on any page associated with a memorialised account. Ever.
- On under-18 accounts. Ads served to under-18 accounts are personalisation-off and use age-appropriate inventory categories.
- In direct messages. No ads in the DM UI. Not a banner, not a card, not a promoted contact suggestion.
- In the notification channel. No promotional pushes. See Notifications, restrained.
- On the login screen or the sign-up flow. No prompt for a product recommendation before the user is even signed in.
- As "recommended posts" that blend into the feed. No algorithmic surfacing of sponsored content dressed up as organic.
Consent, region, and identifiers
Advertising on Seldeo runs through Google's Ad Manager, Google's AdMob (as a mediation source), and Google's IMA SDK for in-stream video. That stack is gated by a consent layer:
- In the EEA, UK, and Switzerland, the Google User
Messaging Platform (UMP) prompt runs on first launch. No
personalised ads fire until UMP resolves. If consent is
denied, ads still fire but with
npa=1(non-personalised). - In the US, personalised ads default to on for accounts 18 or older. The "Do Not Sell or Share" (California) and equivalent state signals are honoured.
- On iOS, Apple's App Tracking Transparency prompt applies. Declining the ATT prompt removes the IDFA from the ad request; ads continue with a device-scoped signal only.
- Under-18 accounts everywhere, ads are non-personalised
and use age-appropriate inventory categories with
tfua=1(tag for users under the age of consent). - In every region, users can turn off personalised ads from Settings → Privacy → Personalised ads at any time. Turning them off makes the account behave as if UMP consent had been declined.
Full detail lives in Regional privacy and the Privacy Policy.
Frequency capping
Ad frequency on Seldeo is capped through server-side rules in Remote Config. The floor values are:
- Feed native cards. No more than 6 per 21 organic posts. This is enforced by the paginator, not the ad server.
- Story ad slides. No more than 1 per 8 organic story slides.
- In-stream video ads. No more than 2 pre-roll ads per 30 minutes per account.
- Bumper ads. Non-skippable video ads (≤6 seconds) are used sparingly, no more than 1 per 60 minutes per account.
These caps are not the maximum we could serve. They're the maximum we're willing to serve. They can be tightened at runtime via the kill-switch layer if the numbers stop making sense.
The kill switch
Every ad surface has a runtime kill switch. Turning off
_config/ads.enabled in Remote Config shuts down every
ad surface — feed cards, story slides, video pre-rolls —
within 60 seconds of the config push. Individual surfaces
can be killed separately (_config/ads.feedEnabled,
_config/ads.storyEnabled, _config/ads.videoEnabled).
We don't advertise this as a "you can turn ads off" feature. It's an operational backstop for the moment when we need to pull the whole thing down without a code deploy — a compliance incident, a policy failure, a wave of unusual inventory.
Ads inside the paginator
For readers who care about the mechanics: the friend feed already has an "ad slot" placeholder in its query layer. The paginator interleaves organic posts with ad-slot placeholders at deterministic positions. The renderer sees "this is an ad slot" and asks the ads package for a native ad widget. If the ads package returns nothing (no ad available, no consent, killed by config), the slot collapses and the feed re-flows. This means the feed never shows an empty ad card and never has a "loading" placeholder where an ad should be.
The story viewer follows the same pattern.
Attribution to creators
Currently, revenue accrues 100% to Seldeo Inc. There is no creator monetization layer on Seldeo yet. When we add one, the numbers will be reported publicly (in the Transparency Report or its ads-specific equivalent) and the payout mechanics will be documented before the first payout runs. The analytics pipeline is being built with per-video attribution as a first-class column so that creator payouts, when they arrive, are attributable and auditable.
The line we don't cross
Ads on Seldeo have a specific shape and stay in it. If we ever cross a line — a full-screen interstitial, an ad in the DM UI, a promoted post that blends into organic, an under-18 account served personalised inventory — that would be a bug, and advertising@seldeo.com is the right address to report it.
Full details on how the advertising SDKs are wired, including the specific SDKs and consent layers, are in the architecture posts on this feed and, once shipped, in the Help Center.
