!@@!@@@@@@@@!
@@#############@@
@@#######GH0$t######@@
======== @#############M0D3####@ 000
@###### ##### ####@ 0000
@###### ##### ####@ 000
@###### ##### ####@ 000
----@#######################@***00
*****@######### #######@ ***
000 @######### #######@
0000 @#######################@
000 @#######################@
@#####################@
@@#################@@
@@###############@@
!!!##!!!##!!!##!!!11
!!!##!!!##!!!##!!!##!!!11
██████╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗ █████╗ ████████╗ ██████╗██╗ ██╗
██╔═══██╗██║ ██║██╔════╝██╔══██╗██║ ██║██╔══██╗╚══██╔══╝██╔════╝██║ ██║
██║ ██║██║ ██║█████╗ ██████╔╝██║ █╗ ██║███████║ ██║ ██║ ███████║
██║ ██║╚██╗ ██╔╝██╔══╝ ██╔══██╗██║███╗██║██╔══██║ ██║ ██║ ██╔══██║
╚██████╔╝ ╚████╔╝ ███████╗██║ ██║╚███╔███╔╝██║ ██║ ██║ ╚██████╗██║ ██║
╚═════╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝
Project Overwatch is a desktop intelligence-monitoring prototype built with Python and PySide6. It collects reporting from enabled RSS sources, scores and classifies incoming articles, organizes reports by region and topic, and presents the results through a tactical black-and-neon-green dashboard.
The system is designed for rapid situational awareness without forcing the operator to jump between dozens of news pages.
Project Overwatch does not produce official intelligence or threat assessments. Signal levels are experimental, news-derived indicators based on the articles retrieved by the application.
Project Overwatch combines five core systems:
- RSS collection from international, regional, defense, cyber, infrastructure, technology, and emergency-monitoring sources.
- Article classification into operational categories such as missile, drone, cyber, naval, air, ground, homeland, diplomatic, and general intelligence.
- Relevance scoring using configurable keywords and event weighting.
- Regional monitoring with focused filters generated from article metadata already flowing through the feed.
- Tactical visualization through an offline GeoJSON world map, animated hotspot markers, and color-coded signal panels.
- Retrieves up to four reports per enabled source.
- Removes duplicate links and normalized duplicate headlines.
- Sorts reports by relevance and event priority.
- Refreshes network feeds every three minutes.
- Runs feed retrieval in a background thread so the dashboard remains responsive.
- Rotates visible non-pinned reports every ten seconds.
- Shows eight rotating reports per page.
- Pins the highest-scoring report at the top as PINNED URGENT.
- Displays publication date and time when available.
- Preserves the article or broadcast URL.
- Opens a report in the default browser when the row is clicked.
The filter menu is rebuilt from region metadata found in the current RSS results.
Examples may include:
- Ukraine
- Russia
- NATO
- Black Sea
- Taiwan
- Taiwan Strait
- China
- South China Sea
- Philippines
- Middle East
- Israel
- Gaza
- Iran
- Yemen
- Red Sea
- United States
Regions with the most reports appear first. Selecting ALL REPORTS restores the complete feed.
The search box works together with the regional filter and searches across:
- Headline
- Summary
- Source
- Region
- Category
- Event type
Example workflow:
Region: UKRAINE
Search: drone
Result: Ukraine-related drone reports only
The Global Threats panel currently monitors:
- Ukraine
- Taiwan
- Middle East
- South China Sea
Each panel displays:
REGION: SIGNAL LEVEL
SIGNAL SCORE | MATCHING REPORTS
Signal levels:
NO SIGNAL
LOW
GUARDED
ELEVATED
HIGH
CRITICAL
The Homeland Watch panel monitors United States-related reporting for:
- Cyber activity
- Critical infrastructure
- Border security
- Public safety
- Energy grid
- Transportation
- Loads country geometry from
resources/world.geojson. - Draws neon-green country outlines.
- Displays latitude and longitude grid lines.
- Displays the equator and prime meridian.
- Supports mouse-wheel zoom.
- Supports drag-to-pan.
- Resets the view on double-click.
- Displays animated prototype hotspot pulses.
- Requires no browser engine or external map service.
+-----------------------------------------------------------------------+
| PROJECT OVERWATCH |
+------------------------------------------+----------------------------+
| ACTIVE EVENTS | GLOBAL THREATS |
| [REGION FILTER] [LIVE SEARCH] | Ukraine |
| | Taiwan |
| [PINNED URGENT REPORT] | Middle East |
| [Rotating clickable reports] | South China Sea |
+------------------------------------------+----------------------------+
| GLOBAL OPERATIONS MAP | HOMELAND WATCH |
| | Cyber |
| Offline GeoJSON world map | Infrastructure |
| Animated hotspot visualization | Border Security |
| | Public Safety |
| | Energy Grid |
| | Transportation |
+------------------------------------------+----------------------------+
| SYSTEM STATUS | ARTICLE COUNT | FILTER | REFRESH STATE | MAP STATUS |
+-----------------------------------------------------------------------+
Project Overwatch/
|
|-- app.py
|-- requirements.txt
|-- README.md
|
|-- feeds/
| |-- __init__.py
| |-- rss_fetcher.py
| `-- sources.py
|
|-- intelligence/
| |-- __init__.py
| |-- classifier.py
| `-- relevance.py
|
|-- resources/
| `-- world.geojson
|
`-- ui/
|-- __init__.py
|-- main_window.py
`-- map_widget.py
- Windows 10 or Windows 11
- Python 3.10 or newer recommended
- Internet access for RSS retrieval
- Local
world.geojsonfile for the tactical map
Python packages:
PySide6
feedparser
requests
beautifulsoup4
sqlalchemy
cd "C:\Users\D4lew\OneDrive\Desktop\Project Overwatch"py -m pip install -r requirements.txtGet-Item ".\resources\world.geojson"py -m py_compile .\app.py
py -m py_compile .\ui\main_window.py
py -m py_compile .\ui\map_widget.py
py -m py_compile .\feeds\rss_fetcher.py
py -m py_compile .\feeds\sources.py
py -m py_compile .\intelligence\classifier.py
py -m py_compile .\intelligence\relevance.pyNo output means the files passed Python syntax compilation.
py app.py| Action | Result |
|---|---|
| Select a region | Filters reports to the selected region |
| Type in the search box | Filters reports immediately |
| Click a report | Opens the source page in the default browser |
| Clear the search box | Restores the selected region's reports |
Select ALL REPORTS |
Restores the complete intelligence feed |
| Action | Result |
|---|---|
| Drag | Pan the map |
| Mouse wheel | Zoom in or out |
| Double-click | Reset the map view |
| Hover over a hotspot | Display hotspot details |
Timing values are defined in ui/main_window.py:
REFRESH_INTERVAL_MS = 180_000
ROTATION_INTERVAL_MS = 10_000
ROTATING_ARTICLES_PER_PAGE = 8Current behavior:
RSS network refresh: every 3 minutes
Headline display rotation: every 10 seconds
Reports shown per page: 8 plus the pinned urgent report
Sources are configured in:
feeds/sources.py
Each source can include:
{
"name": "BBC World",
"category": "WORLD",
"region": "GLOBAL",
"url": "RSS URL",
"aggregated": False,
"enabled": True,
"trust_score": 92,
}The source registry supports:
- Direct RSS feeds
- Google News RSS searches
- Region metadata
- Category metadata
- Enable or disable state
- Source trust metadata
- Registry validation
| Code | Classification |
|---|---|
MSL |
Missile |
UAV |
Drone or unmanned aircraft |
CYB |
Cybersecurity |
NAV |
Naval activity |
AIR |
Air activity or airstrike |
GRD |
Ground activity |
DIP |
Diplomatic development |
HML |
Homeland or infrastructure |
INT |
General intelligence reporting |
The experimental signal engine considers:
- Article relevance score
- Event classification
- Number of matching reports
- Source-assigned region
- Headline and summary keywords
- Strongest matching reports
- Reduced weighting for lower-ranked reports
The signal engine is intended to highlight reporting volume and relevance. It does not verify events independently and must not be treated as an emergency warning system.
Confirm the filename is exactly:
ui\main_window.py
Also confirm this file exists:
ui\__init__.py
Clear Python's cached modules:
Remove-Item ".\ui\__pycache__" -Recurse -Force -ErrorAction SilentlyContinueThen compile the file again:
py -m py_compile .\ui\main_window.pyConfirm:
resources\world.geojson
Then validate it:
py -c "import json; data=json.load(open(r'.\resources\world.geojson', encoding='utf-8')); print(data['type'], len(data.get('features', [])))"Project Overwatch may have a large enabled RSS registry. Feed retrieval runs in the background, but a full update can still take time depending on source availability and network response times.
RSS endpoints may become unavailable, reject automated requests, redirect, or return malformed XML. The fetcher records feed-level errors and continues processing the remaining sources.
- Native PySide6 dashboard
- Offline GeoJSON world map
- Animated hotspot visualization
- Multi-source RSS collection
- Relevance scoring
- Event classification
- Background feed retrieval
- Three-minute automatic refresh
- Clickable source links
- Pinned urgent report
- Publication date and time
- Ten-second headline rotation
- Focused regional filters
- Live report search
- News-derived Global Threat signals
- News-derived Homeland Watch signals
- Clickable map countries that activate feed filters
- Article detail preview panel
- Manual refresh control
- Source enable and disable settings
- Persistent local article database
- Historical signal charting
- Map hotspots generated from live article locations
- Saved operator filter profiles
- Packaged Windows executable
Project Overwatch processes public reporting and configured RSS search results. The presence of an article does not prove that the underlying event is accurate, current, independently confirmed, or correctly classified.
Always verify critical information against multiple reputable primary sources and official emergency or government channels.
Project Overwatch is not intended for military operations, emergency dispatch, law enforcement decisions, investment decisions, or personal safety decisions.
Article headlines, summaries, links, publication metadata, and source names remain the property of their respective publishers. Project Overwatch displays retrieved metadata and directs the operator to the original source page.
Country geometry is loaded from the local GeoJSON dataset placed in the resources directory. Review the dataset's accompanying license and boundary notes before redistribution.
SEE THE SIGNAL.
FILTER THE NOISE.
VERIFY THE SOURCE.
NEVER CONFUSE VOLUME WITH TRUTH.
Project Overwatch is being built iteratively, one working system at a time. The priority is a responsive interface, transparent scoring, modular code, and direct access to original reporting.