Skip to content

Repository files navigation

CipherFeed Portfolio Edition

CipherFeed Portfolio Edition is an interactive, static reconstruction of a threat-intelligence workspace I designed and developed. It preserves enough of the original product experience to demonstrate the information architecture, analyst workflows, interface design, and source-grounded AI concept without publishing the operational platform behind it.

The application includes a dashboard-style overview, searchable intelligence stream, decision briefing, ranked action queue, source coverage view, and a scripted AI analyst demonstration. Every record, metric, narrative, timestamp, and response is a fictional local fixture.

Portfolio highlights

  • A normalized intelligence stream with search, severity, and category filters.
  • A detail workspace that keeps evidence, interpretation, confidence, and next actions visible together.
  • A morning briefing that explains what changed, what matters, and what cannot yet be established.
  • An explainable priority queue based on visible factors rather than an opaque score alone.
  • A dual-perspective AI analyst concept with guided questions, evidence references, and confidence boundaries.
  • Responsive, accessible React interactions that run entirely in the browser.

Product Images

Product tour

Screen What it demonstrates Interaction
Overview Executive metrics, daily context, priority actions, and source coverage Follow links into each preserved product concept
Intel stream Normalized records and analyst evidence workspace Search, filter, and select fictional records
Daily brief Decision-focused synthesis and explicit information gaps Review changes, actions, coverage, and narrative labels
AI analyst Source-grounded conversational UX and response safety Switch perspective and choose guided questions
Project notes Original workflow, portfolio scope, and public boundaries Review what was preserved and removed

Static architecture

The public edition has one trust boundary: the local browser. It contains no runtime network client or server implementation.

flowchart LR
    T["Synthetic threat fixtures"] --> UI["React portfolio interface"]
    P["Prewritten briefing and chat fixtures"] --> UI

    UI --> O["Overview"]
    UI --> S["Intel stream"]
    UI --> B["Daily brief"]
    UI --> A["AI analyst demo"]
    UI --> N["Project notes"]

    O & S & B & A & N --> L["Local browser only"]
Loading

There are no accounts, environment variables, live feeds, server routes, databases, model providers, analytics services, schedulers, or deployment workflows in this repository.

How the AI analyst demo works

The AI analyst view communicates the intended user experience without revealing or recreating the original implementation.

flowchart TD
    Q["User selects a guided question"] --> K["Look up a local scripted fixture"]
    R["Analyst or executive perspective"] --> K
    K --> C["Render prewritten response"]
    C --> E["Show fictional evidence references"]
    C --> G["Show confidence boundary"]

    X["No free-form model call"] -.-> K
    Y["No prompt, provider, key, API, or storage"] -.-> K
Loading

Free-form chat is visibly disabled. Selecting a prompt only changes local React state and reads a response from src/data/portfolioDemo.js. Nothing is sent, generated, stored, or inferred.

Conceptual intelligence workflow

The project demonstrates this product model without implementing live connectors:

flowchart TD
    S["Public advisory or bulletin"] --> C["Collect within source terms"]
    C --> V["Validate and bound fields"]
    V --> N["Normalize into a common schema"]
    N --> R["Correlate stable identifiers"]
    R --> P["Prioritize with visible reasons"]
    P --> O["Present summary, evidence, gaps, and actions"]

    S -. "preserve separately" .-> E["Original source evidence"]
    E -. "display beside interpretation" .-> O
Loading

In an operational system, every stage would require security, licensing, privacy, availability, observability, rate-limit, and abuse reviews. Those systems are intentionally absent from the portfolio edition.

Synthetic data model

Each item in src/data/demoThreats.js uses a common teaching schema:

Field Meaning
id Fictional identifier beginning with DEMO-
title Neutral summary of the simulated signal
severity Display label used by filtering and priority context
category Broad intelligence type
source Explicitly synthetic source label
confidence Confidence in the represented interpretation
priority Fictional score explained by visible context
sourceCount Number of fictional corroborating records
trend Simulated movement label
exposure Explicitly fictional applicability context
exploitation Cautious activity statement
evidence Supporting facts and limitations
actions Validation-oriented next steps
tags Local search terms

The fixtures avoid real organizations, people, customers, credentials, infrastructure identifiers, production URLs, and copied source responses.

What was preserved

  • The shape of a multi-source threat-intelligence workspace.
  • Search, filtering, detail review, priority, and confidence patterns.
  • The morning intelligence briefing and ranked action queue concepts.
  • The separation of deterministic source evidence from narrative framing.
  • The analyst and executive response perspectives from the AI concept.
  • Responsive interaction and accessibility patterns useful in a portfolio.

What was removed

  • Identity, account, profile, and personal-data handling.
  • Payments, plans, commercial workflows, and contact channels.
  • Live APIs, ingestion jobs, server functions, database code, and migrations.
  • Provider configuration, prompts, model routing, usage tracking, and keys.
  • Private research, production telemetry, deployment files, and operational documentation.
  • Logos, icons, favicons, screenshots, remote fonts, and branding guidelines.

Run locally

Requirements:

  • Node.js 20 or newer.
  • npm 10 or newer.
npm ci
npm run dev

Open the local URL printed by Vite. No environment file is required or supported.

Validation commands:

npm run lint
npm test
npm run build
npm run verify

Modify the portfolio safely

Add a fictional threat record

  1. Open src/data/demoThreats.js.
  2. Copy one record and assign a new DEMO- identifier.
  3. Keep the source label explicitly synthetic.
  4. Add evidence, information gaps, and validation actions.
  5. Avoid real indicators, organizations, source responses, or credentials.
  6. Run npm run verify.

Add a scripted analyst question

  1. Open src/data/portfolioDemo.js.
  2. Add an entry to analystPrompts.
  3. Write both analyst and executive versions.
  4. Reference only fictional local records.
  5. State a confidence boundary in every response.

Do not add a model SDK, network request, environment variable, hidden prompt, or free-form response generator. The educational value is in the interface and reasoning pattern, not a deployable integration.

Change the visual treatment

All presentation styles are in src/styles.css. The project uses system fonts, CSS, and text labels only. Preserve readable contrast, keyboard focus, labelled form controls, small-screen layouts, and clear demo boundaries.

Repository map

.
|-- src/
|   |-- __tests__/            Application boundary and route tests
|   |-- data/
|   |   |-- demoThreats.js    Synthetic intelligence records
|   |   `-- portfolioDemo.js  Briefing, chart, and scripted chat fixtures
|   |-- App.jsx               Portfolio screens and local interactions
|   |-- main.jsx              Browser entry point
|   `-- styles.css            Self-contained visual treatment
|-- index.html                Minimal document shell
|-- package.json              React and Vite development commands
|-- CONTRIBUTING.md           Portfolio-safe contribution scope
`-- LICENSE                   Noncommercial source-available terms

Privacy and security boundary

  • no .env or .env.example;
  • no runtime network calls or browser persistence;
  • no authentication, user records, payments, or personal data;
  • no API keys, provider names, private prompts, or model settings;
  • no live source data, production infrastructure, or research documents; and
  • no business addresses, private contacts, analytics, or telemetry.

The static build still depends on normal browser and package-manager security. Review dependency updates and run the complete verification suite before publishing a new snapshot.

Public-history warning

The safe release branch is codex/public-portfolio-snapshot. It begins from a clean root commit and does not include the operational repository as reachable history. Push only this branch to a new public repository. Do not mirror the local repository or push older branches, tags, pull-request refs, or reflogs.

License

The code is publicly visible for noncommercial education, study, experimentation, modification, and redistribution under the PolyForm Noncommercial License 1.0.0.

Because commercial use is restricted, this is source-available rather than an OSI-approved open-source distribution.

About

A compact, static demonstration of how information from public threat-intelligence sources can be structured, prioritized, and presented more clearly.

Topics

Resources

Contributing

Stars

Watchers

Forks

Used by

Contributors

Languages