# `Nous.KnowledgeBase.Entry`
[🔗](https://github.com/nyo16/nous/blob/v0.17.1/lib/nous/knowledge_base/entry.ex#L1)

A compiled wiki entry — the core unit of the knowledge base.

Entries are produced by LLM compilation of raw `Document`s. They contain
structured markdown with `[[wiki-links]]`, summaries, extracted concepts,
and metadata for search and graph traversal.

# `entry_type`

```elixir
@type entry_type() :: :article | :concept | :summary | :index | :glossary
```

# `t`

```elixir
@type t() :: %Nous.KnowledgeBase.Entry{
  concepts: [String.t()],
  confidence: float(),
  content: String.t(),
  content_down: String.t() | nil,
  created_at: DateTime.t(),
  embedding: [float()] | nil,
  entry_type: entry_type(),
  id: String.t(),
  kb_id: String.t() | nil,
  last_verified_at: DateTime.t() | nil,
  metadata: map(),
  slug: String.t(),
  source_doc_ids: [String.t()],
  summary: String.t() | nil,
  tags: [String.t()],
  title: String.t(),
  title_down: String.t() | nil,
  updated_at: DateTime.t()
}
```

# `new`

```elixir
@spec new(map()) :: t()
```

Creates a new Entry from attributes.

Requires `:title` and `:content`. Auto-generates id, slug, and timestamps.

# `slugify`

```elixir
@spec slugify(String.t()) :: String.t()
```

Generates a URL-safe slug from a title.

## Examples

    iex> Nous.KnowledgeBase.Entry.slugify("Elixir GenServer Patterns")
    "elixir-genserver-patterns"

# `with_downcase_cache`

```elixir
@spec with_downcase_cache(t()) :: t()
```

Recomputes the cached downcased search fields from `title`/`content`.

Call after any mutation of `title` or `content` (e.g. store `update_entry`)
so search never scores against a stale cache.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
