bruno.exePROJECTScontact.exe
SENTINEL

</sentinel>

SENTINEL

AI news intelligence app. Still on the App Store, sources paused for now.

3000+

global sources, per the App Store listing

$3.99/wk

or $69.99/yr · StoreKit 2

~$1k/mo

peak revenue, by Jaamaa’s account

SPECIFICATIONS

ROLEFOUNDER
DATEMar 2026
TYPECROSS-PLATFORM
STATUSPAUSED
STACKswiftui · ios 17+ · next.js · supabase · gemini-2.5-flash · firecrawl · deno edge functions · postgresql +4 more
LINKS[site ↗][app store ↗]
AVAILABILITYApp Store + web
PRICING$3.99/wk

Too many unreliable news sources.

== WHAT IS THIS ==

STATUS

Sentinel is still listed on the App Store, but its news sources have been paused since September 2026 for a full revamp of its systems, so it is not generating new reports. A restart is planned for later in 2026. The case study below describes the app as it was built and shipped.

Sentinel is an AI news intelligence app for iOS and the web, founded and built by Bruno Jaamaa and released on the App Store in March 2026. A user searches any topic and Sentinel pulls coverage from 3000+ global sources, including non-English outlets with automatic translation, checks the claims with AI, and returns a report with financial charts, timelines and an analysis of what the coverage is missing. Its news sources have been paused since September 2026 ahead of a planned restart, and the app is still listed.

sentinelintel.app/dispatches: sample dispatches, labelled on the page as illustrative
one sample dispatch on a markets topic: the claim, the outlet count and the source chain
sentinelintel.app: the home page statement, no algorithm, no rage-bait, just dispatches from your bureau
sentinelintel.app: the same statement on a phone
app store: ai journalists on any topic, daily updates
app store: your reports feed with follow and social
app store: track companies, stocks, crypto, with market charts inside reports
app store: full dispatch with ask sentinel chat
app store: top news from your outlets, summarized

== </the problem> ==

Too many unreliable news sources. People can't track topics across outlets, languages, or verify what they read. Enterprise intelligence tools cost $500+/month, leaving students, journalists, and everyday people with no way to get verified, structured intelligence on any topic.

== </the approach> ==

A full intelligence pipeline: Firecrawl scrapes global sources (including non-English with auto-translation), feeds them into Gemini 2.5 Flash for claim extraction and verification, and assembles structured reports with confidence scores. The interface went through 4+ rounds of low-fidelity testing to balance information density with readability.

role & context

Founder and sole builder: the SwiftUI app, the Next.js site, the Supabase backend and its edge functions, and the App Store submission.

== </the story> ==

Sentinel is an AI news intelligence app for iOS and the web, founded and built by Bruno Jaamaa. A user enters a topic, and Sentinel gathers coverage from news sources around the world, extracts and checks the individual claims, and returns a structured report. It was released on the App Store in March 2026. Its news sources have been paused since September 2026, and the app is still listed.

Sentinel began in 2025 as something Jaamaa made for himself. By his account, the first version was a simple GPT and Perplexity wrapper that he deployed online and used alone. He has described what he wanted from it: he "needed a fresh brief of news I was interested in that I could read every day in about a minute or so, to keep myself updated, like a personalised newsletter, so I built it, still use it to this day." From January 2026 he built a backend around that idea, and the app reached the App Store in March 2026.

A user enters any topic ("Taiwan semiconductor supply chain", "AI regulation in the EU", "Finland elections") and Sentinel goes to work. It pulls from 3000+ global news sources, the figure given on its App Store listing, including non-English outlets with automatic translation. It scrapes and analyses each source with Gemini 2.5 Flash, extracts individual claims with confidence scores, identifies what the coverage is missing, and assembles the result into a report with financial charts, event timelines and a blind spots analysis.

Push notifications brief the user on breaking developments for tracked topics, so searches do not have to be re-run by hand. Audio briefings read reports aloud through on-device text-to-speech, and a daily story briefing summarises the user's tracked topics each morning.

Sentinel also has a social layer. A unified feed with For You and Following modes surfaces reports from other users, which can be liked, commented on and followed. Direct messaging lets users discuss a report privately, and Ask Sentinel lets a user question any report and get answers grounded in that report's source data.

Jaamaa designed and built the product on his own: a SwiftUI app for iOS, a Next.js site for the web, a Supabase backend with Deno edge functions, and Firecrawl for web scraping, from the database schema through to the App Store submission. The app is free to download with a paid tier, Sentinel Pro. At launch Pro cost $7.99 a month; the App Store listing now gives $3.99 a week or $69.99 a year.

Revenue peaked at roughly $1k a month. In September 2026 Jaamaa paused its news sources for a full revamp of its systems, simplifying the product before a planned restart later in 2026. He has said there is still a lot to get right.

== </architecture> ==

The iOS frontend is built in SwiftUI targeting iOS 17+. State flows through a single @Observable AppState root object holding all services. Each report card runs its own state machine (searching, analyzing, verifying, loaded), managed by a ReportCardViewModel per card. A pipeline queue caps concurrent processing at one report at a time to manage API costs.

The backend runs entirely on Supabase: RLS-protected PostgreSQL tables, Deno edge functions, OAuth + Magic Link + anonymous auth. Two cron jobs keep the system alive: a watchtower function runs every 15 minutes and self-chains. It processes one report per invocation, then triggers itself for the next, bypassing Supabase's worker limits entirely. A prewarm function runs every 6 hours, pre-warming headline summaries from 6 major outlets.

Cross-user deduplication runs on SHA-256 hashing of search queries. If two users request the same topic, the second request hits the cache and skips the entire analysis pipeline. Content hashing on source material means re-analysis is skipped if the underlying content hasn't changed.

Firecrawl handles web scraping with tiered search across freshness windows (3h, 12h, 24h), pulling from global sources including non-English outlets with automatic translation. Gemini 2.5 Flash runs the analysis pipeline: claim extraction, confidence scoring, blind spots identification, and timeline generation. Finnhub and Yahoo Finance provide live financial data and candlestick charts.

The social layer runs on Supabase Realtime for live updates. The feed uses a fan-out-on-read model with For You and Following modes, supporting trending/newest/most-liked sorting. Report likes, follows, and comments are backed by dedicated tables with real-time counters. Direct messaging uses a Realtime listener with read status tracking and unread badges. A reading habit tracker with time-decay runs on-device to power re-engagement notifications.

Audio briefings use AVSpeechSynthesizer for on-device text-to-speech, with zero API cost, and work offline. Daily story briefings are Gemini-generated once per day and cached for 3 days. Ask Sentinel provides conversational RAG over report data, grounding answers in the report's verified sources.

Monetization runs through StoreKit 2 with a freemium model. At launch, free users got 1 report with 24-hour refresh, and Pro users ($7.99 a month) got 10 reports, 6-hour refresh, deep dives, financial charts, and Ask Sentinel AI chat.

== </key features> ==

Topic tracking with push alerts

Subscribe to any topic and get notified when breaking developments happen. No manual re-searching.

AI reports with blind spots analysis

Every report includes what the coverage is missing, not just what it says. Confidence scores on individual claims.

Financial charts and timelines

Live market data from Finnhub, event timelines, and candlestick charts embedded directly in reports.

Cross-user SHA-256 cache

Duplicate queries hit a shared cache instead of running the pipeline again.

Social feed and messaging

Unified feed with For You and Following modes, report likes/comments/follows, and full direct messaging between users.

Ask Sentinel AI chat

Conversational RAG over any report. Ask questions and get AI answers grounded in verified source data.

Audio briefings and daily stories

On-device TTS for hands-free listening. Gemini-generated daily story briefings summarize your tracked topics each morning.

== </key decisions> ==

DECISION 01

The hardest architectural decision was the watchtower refresh system. Supabase edge functions have strict execution time limits, which makes long-running background jobs impossible. The solution was self-chaining: each invocation processes one report, then triggers the next invocation via a Supabase function call before exiting. It's essentially a recursive cron job. Each link in the chain handles exactly one unit of work and passes the baton forward.

DECISION 02

The shared cache was the most impactful cost decision. Without it, every user querying "Apple earnings" would trigger a full scrape + Gemini pipeline. With SHA-256 deduplication, the second request is instant and free. At any meaningful scale this is the difference between a sustainable API budget and an unsustainable one.

DECISION 03

Choosing Gemini 2.5 Flash over GPT-4 came down to speed and structured output quality at volume. Flash matched GPT-4 on claim extraction accuracy while running significantly faster. This is critical when each report chains multiple LLM calls in sequence.

DECISION 04

The biggest UX challenge was making the loading states feel intentional rather than broken. Each report card runs its own state machine (searching, analyzing, verifying, loaded) with a shimmer skeleton that gives users a real-time view of pipeline progress. A 15-30 second wait feels like watching the work happen rather than staring at a spinner.

DECISION 05

At launch, pricing landed at $7.99 a month after testing showed the original $14.99 price point created too much friction for individual users. The free tier (1 report, 24-hour refresh) acted as a permanent trial that demonstrated the full pipeline quality before asking users to commit.

DECISION 06

The feed algorithm was a deliberate trade-off: fan-out-on-read is simpler than fan-out-on-write and works well at early-stage scale. Trending, newest, and most-liked sort modes give users control over discovery without requiring a complex recommendation engine.

== </what was learned> ==

>

Balancing information density with readability is the hardest UX problem in intelligence tools. Too much data overwhelms; too little loses trust.

>

Self-chaining edge functions are a viable pattern for long-running background jobs on serverless platforms.

>

Shipping a v1 and iterating with real users beats perfecting behind closed doors. Most of the best features came from post-launch feedback loops.

>

On-device TTS (AVSpeechSynthesizer) eliminates API costs entirely for audio features and works offline, a better trade-off than cloud TTS at an early stage.

== </full stack> ==

swiftui · ios 17+ · next.js · supabase · gemini-2.5-flash · firecrawl · deno edge functions · postgresql · typescript · finnhub · storekit 2 · apns