4.6 KiB
4.6 KiB
Architecture
Overview
Augor is a Flutter desktop application that aggregates business and finance news feeds, clusters related articles into events, uses an LLM to assess likely market impact, and outputs a probabilistic growth signal for each event.
MVP Goal
Deliver a working desktop prototype that:
- fetches articles from configured RSS/Atom feeds
- groups related reporting into event clusters
- asks an LLM to interpret each event cluster
- outputs a signal of
growth,decline, orneutral - includes a
probabilityandconfidencescore - displays results in the UI and exports them to JSON
What Is In Scope For MVP
- RSS/Atom feed ingestion
- Embedding generation for articles
- Relevance filtering for business/finance news
- Event clustering using cosine similarity
- LLM event interpretation per cluster
- Signal generation:
growth,decline,neutral - Probability/confidence scoring
- Result display in Flutter UI
- JSON export of generated signals
What Is Out Of Scope For MVP
- Backtesting
- Automated trading execution
- Backend/cloud processing
- Historical price-data integration
- Company/ticker extraction
- Multi-model comparison
- Advanced bias reduction or source weighting
Runtime Components
lib/main.dart- App entrypoint.
- Loads persisted settings before rendering UI.
- Registers
SettingsProviderinMultiProvider. - Configures navigation with
go_router.
lib/pages/home.dart- Main user flow trigger.
- Runs feed fetch, embedding generation, relevance filtering, grouping, LLM signal generation, export, and result rendering.
lib/pages/settings.dart- Settings UI for API key, feed list management, and output directory selection.
lib/providers/settings.dartChangeNotifierstate container.- Persists OpenRouter key, feed list, and storage path with
SharedPreferences.
lib/utils/agrigator.dart- Feed parsing, feed retrieval, embeddings, relevance filtering, and event grouping.
lib/utils/openrouter.dart- OpenRouter API wrapper for embeddings and chat completions.
lib/utils/signal_generator.dart- Builds event-cluster prompts.
- Calls chat completions.
- Parses structured JSON into app signal models.
lib/models/event_signal.dart- Data model for a generated event signal.
lib/widgets/event_signal_card.dart- Displays one generated signal in the UI.
MVP Data Flow
- App startup loads persisted settings in
SettingsProvider.load(). - User starts analysis from the Home page.
- App builds the list of enabled feed URLs.
- Feeds are fetched and parsed into
FeedItems. - Raw aggregated articles are exported to
aggregated_feed.json. - Embeddings are generated for each article using
text-embedding-3-small. - Enriched articles are exported to
enriched_aggregated_feed.json. - Articles are filtered for business/finance relevance.
- Relevant articles are exported to
relevant_aggregated_feed.json. - Relevant articles are grouped into event clusters by cosine similarity.
- Grouped readable output is exported.
- Each event cluster is sent to an LLM prompt for interpretation.
- The LLM returns structured JSON containing:
event_summarysignalprobabilityconfidencerationale
- Parsed signals are displayed in the UI.
- Signals are exported to
signals.json.
LLM Output Contract
Each analyzed event cluster must produce JSON in this shape:
{
"event_summary": "short description of the event",
"signal": "growth",
"probability": 0.78,
"confidence": 0.71,
"rationale": "why this event suggests growth"
}
Allowed signal values:
growthdeclineneutral
MVP Build Order
- Add
EventSignalmodel. - Add
signal_generator.dartfor prompt building and LLM parsing. - Wire signal generation into
lib/pages/home.dartafter clustering. - Add basic signal result rendering in the UI.
- Export generated signals to
signals.json. - Validate the end-to-end flow in the desktop app.
Current Constraints
- Processing is still UI-triggered and client-side only.
- No cancellation or progress reporting beyond basic UI state.
- No retry/backoff for network or model calls.
- No historical validation or backtesting in MVP.
- Quality of outputs depends on feed quality and LLM consistency.
Definition Of Done For MVP
- User clicks the main action on Home.
- App fetches articles from enabled feeds.
- App groups related stories into events.
- App generates one interpreted signal per event cluster.
- UI shows event summary, signal, probability, confidence, and rationale.
- Signals are written to
signals.jsonin the configured output directory.