# Everyday Red Flags topic database

Use this when the user supplies large batches of scam/digital-safety topic ideas or asks to plan the next AutoShorts/TrueTraceShorts batch.

## Purpose

Maintain a broad, reusable content-ideas database for the current TrueTraceShorts positioning:

```text
Digital Red Flags / Scam Self-Defense for Normal People
One screen. One red flag. One safer move.
```

The database is a backlog, not a render queue. Do not render, upload, or contact platforms from topic ingestion alone.

## Current database artifact

Primary runtime copy used in recent production work:

```text
/home/agent/jarvis_runtime/AutoShortsBot/data/content_ideas/everyday_red_flags_topic_database.json
```

Repo/source-tree mirror used by code/test workflows when operating in the checked-out repo:

```text
/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/data/content_ideas/everyday_red_flags_topic_database.json
```

If both trees exist, keep them in sync or explicitly choose the active repo path before editing. This avoids the classic “I updated the database beautifully in the wrong clone” manoeuvre. A timeless art form, but not a useful one.

## Schema shape

Top-level fields should include:

- `database_id`: `truetrace_everyday_red_flags_topic_database`
- `version`: date/version string
- `updated_at`: ISO timestamp
- `source`: short provenance note, no raw chat dump
- `positioning`: `Digital Red Flags / Scam Self-Defense for Normal People`
- `channel_promise`: `One screen. One red flag. One safer move.`
- `default_language`: `en`
- `approval_language`: `de`
- `visual_policy`: concise renderer/AI-image policy
- `candidate_template`: `visible_fail`, `red_flag`, `safer_move`, `takeaway`
- `categories`: list of category objects
- `topic_count`: computed count of all category items

Each category should include:

- `category_id`: stable snake_case ID
- `order`: numeric display order
- `name_de`: user-facing German category name
- `series_line`: e.g. `Texts that want you to hurry.`
- `items`: list of topic entries

Each topic entry should include:

- `topic_id`: stable `erf-topic-...` ID
- `slug`: URL/filename-safe slug
- `title_de`: original/user-facing topic label
- `working_title_en`: rough English working title when useful
- `series_line`: inherited/overridden series line
- `status`: `backlog`, `produced_or_uploaded`, or other explicit workflow state
- `existing_artifact_hint`: optional ID for already-rendered/uploaded candidates
- `priority`: `normal`, `seed_next_batch`, or `avoid_duplicate_for_now`
- `red_flag_prompt`: prompt to derive the visible warning signal
- `safe_action_prompt`: prompt to derive the one safer move

## Topic categories captured from the user's Big Topic Database

The class-level categories are:

1. `sms_messenger_scams` — Texts that want you to hurry.
2. `email_scams` — Emails that look normal.
3. `banking_payment_scams` — Money move red flags.
4. `login_account_traps` — Account traps.
5. `marketplace_classifieds_scams` — Marketplace red flags.
6. `fake_support_tech_support_scams` — Real support does not hijack your screen.
7. `social_media_platform_traps` — Creator account traps.
8. `family_emotion_scams` — Send this to your family.
9. `job_career_side_hustle_scams` — If they make you pay to work, stop.
10. `shopping_subscription_consumer_traps` — Before you buy.
11. `privacy_app_risks` — App permission red flags.
12. `basic_internet_risks_explained` — Simple internet safety basics.

The initial ingestion contained 185 topic entries.

## Duplicate/progress handling

Mark already-produced or already-uploaded topics so future batches do not repeat them accidentally. Known initial mappings:

- `Paket ist blockiert` / delivery SMS scam → `erf-001_delivery_sms_scam`
- `Hi mom, new number` → `erf-002_hi_mom_scam`
- `Fake Fraud Alert` / bank code scam → `erf-003_bank_code_scam`
- `QR-Zahlungsfalle` / parking QR scam → `erf-004_parking_qr_scam`
- `Maut-/Toll-Fee-SMS` → `erf-005_toll_text_scam`

Set such entries to:

```json
{
  "status": "produced_or_uploaded",
  "priority": "avoid_duplicate_for_now",
  "existing_artifact_hint": "..."
}
```

## Suggested seed-next-batch topics

When asked to pick the next small batch, prefer a varied mix across categories rather than 5 SMS scams in a row. Good seed candidates from the first database pass:

- `Your account will be locked`
- `Fake Rechnung`
- `Geänderte Zahlungsdaten`
- `Fake Microsoft/Google Login`
- `Fake Login Page`
- `Fast richtige URL`
- `Fake Shipping Payment Link`
- `Browser-Popup: Virus gefunden`
- `Fake Instagram Copyright Warning`
- `AI-Voice-Anruf`
- `Task Scam`
- `Fake Shop`
- `App will Kontakte ohne Grund`
- `Fake CAPTCHA`

## Ingestion workflow

1. Preserve the user's category structure and series lines.
2. Normalize only enough for stable IDs/slugs; do not over-editorialize the user’s list.
3. Add workflow metadata (`status`, `priority`, prompts) around the topics.
4. Do not invent detailed scripts during database ingestion unless explicitly asked.
5. Validate JSON parseability, unique `topic_id`, unique `slug`, category count, and computed `topic_count`.
6. If multiple active repo/runtime paths exist, write/sync both intentionally or report exactly which one was updated.

## Validation checklist

Before reporting success:

- JSON parses with `json.loads` or equivalent.
- `topic_count` equals the sum of all category item counts.
- Category count matches the intended taxonomy.
- `topic_id` values are unique.
- `slug` values are unique; disambiguate duplicates by prefixing category ID if needed.
- Already-produced topics are marked to avoid duplicate production.
- No credentials, private IDs, or platform API output were stored in the topic database.
