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

ScreenWhat it demonstratesInteraction
OverviewExecutive metrics, daily context, priority actions, and source coverageFollow links into each preserved product concept
Intel streamNormalized records and analyst evidence workspaceSearch, filter, and select fictional records
Daily briefDecision-focused synthesis and explicit information gapsReview changes, actions, coverage, and narrative labels
AI analystSource-grounded conversational UX and response safetySwitch perspective and choose guided questions
Project notesOriginal workflow, portfolio scope, and public boundariesReview 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:

FieldMeaning
idFictional identifier beginning with DEMO-
titleNeutral summary of the simulated signal
severityDisplay label used by filtering and priority context
categoryBroad intelligence type
sourceExplicitly synthetic source label
confidenceConfidence in the represented interpretation
priorityFictional score explained by visible context
sourceCountNumber of fictional corroborating records
trendSimulated movement label
exposureExplicitly fictional applicability context
exploitationCautious activity statement
evidenceSupporting facts and limitations
actionsValidation-oriented next steps
tagsLocal 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

1 star

Watchers

0 watching

Forks

Used by

Contributors

Languages