DEV Community

Cover image for From Static Portfolio to Indexed Decisions 📃
Ashley Childress
Ashley Childress

Posted on

From Static Portfolio to Indexed Decisions 📃

This is a submission for the Algolia Agent Studio Challenge: Consumer-Facing Non-Conversational Experiences

🦄 I instantly knew what to build as soon as I saw this challenge paired with the New Year, New You Google Challenge. Honestly, I’d been meaning to build a portfolio for a long time and never prioritized the work. This challenge finally interested me enough to take that idea and actually run with it.

Besides, it’s much more satisfying to show why something works when there’s a story attached. If you want to skip ahead, at least read the first part carefully.

Static portfolios treat decisions as narrative. This project treats them as data.

Human-crafted, AI edited badge


What I Built

This backend dev wasn’t built for pretty UIs. I was built for systems. So I created a non-conversational portfolio that behaves like a well-oiled machine instead of a static showcase.

Traditional portfolios require interpretation. This system removes interpretation entirely.

When I first envisioned what my portfolio site would look like, I knew I wanted it to stand apart from the usual LinkedIn résumé echoes. I’m strongly allergic to “normal” on the best days, but novelty alone doesn’t scale. I also knew the site had to be backed by infrastructure strong enough to survive my constant experiments and changing approaches over time.

Naturally, those ideas converged into a single decision: build a living journal of my projects, struggles, and decisions as they happened.

Decisions are first-class records here, not explanatory prose.

Something future-me could query months from now when I’m inevitably asking, “What in the world were you thinking?”

As soon as I saw this challenge post, I started documenting every challenge, decision, outcome, and constraint. That process began with everything I could reconstruct from my existing GitHub projects.

🦄 Even if I documented every single time I changed my mind, this index structure could absolutely handle it. Don’t worry. I didn’t go that far.


Index Design

The index is the system. If it fails, nothing else matters.

Once I had a handle on controlling assistant agents on the UI side, the index became the real work. Designing it, breaking it, and curating it took the most time. Early patterns weren’t great for retrieval performance, but after studying Algolia best-practice guidance, things finally clicked.

The result is a collection of small, atomic records optimized for retrieval.

These power a clean UX through facets and deterministic sorting using both signal strength and record creation time.

Here’s a real example pulled directly from the site:

[
  {
    "objectID": "card:project:challenge:algolia-agent-studio-2026-02",
    "title": "Algolia Agent Studio Challenge participation",
    "blurb": "An applied exploration of conversational retrieval.",
    "fact": "I participated in the Algolia Agent Studio DEV Challenge during February 2026, focusing on conversational and non-conversational search behavior using indexed content.",
    "tags.lvl0": ["DEV Challenge", "Approach"],
    "tags.lvl1": ["DEV Challenge > Algolia Agent Studio", "Approach > Experimentation"],
    "projects": ["System Notes"],
    "category": "Experience",
    "created_at": "2026-02-08T05:42:00-05:00",
    "signal": 5
  }
]
Enter fullscreen mode Exit fullscreen mode

Why these fields exist:

  • signal controls relevance pressure under ranking
  • created_at stabilizes ordering across time
  • hierarchical tags enable narrowing without dilution
  • constrained categories prevent ambiguous grouping

🦄 In case you were wondering, I didn’t write these by hand. I defined the rules and constraints, handed them to ChatGPT, and manually tracked the generated output in a JSON file stored in the repo at System Notes v2.0.0/Algolia.


Ask AI as Search

This project includes both a conversational chat interface and an Ask AI Search experience.

For this entry, Ask AI is intentionally treated as a pure search surface, not a conversational agent.

The conversational state is optional and these results consider only the non-conversational queries executed against the Algolia index.

I evaluated retrieval performance over time—specifically speed, relevance, and consistency—while making iterative improvements to index configuration, ranking rules, and facets.

If identical queries did not return identical results, the configuration was not finished.

The system now returns the correct indexed records quickly and predictably, without requiring query reformulation.

Screenshot 256 results in 1ms

Screenshot filter categories, search results

💡 A copy of all index configuration files are kept in the repository as a reference at System Notes v2.0.0—apps/api/algolia/config.


Live Demo

The site is deployed at https://algolia.anchildress1.dev to keep it separate from the previous challenge submission.

Try searching for “Algolia” or filter by the categories on the left to load relevant results.

🦄 If you want a full comparison snapshot, the original site remains live at https://anchildress1.dev. The difference between that version and the Algolia-powered build is dramatic.


Algolia Agent Studio in Practice

A well-designed index alone isn’t enough.

Retrieval quality is dictated by configuration discipline, not feature count.

I tested most options available in Algolia’s configuration panel while tuning this system. The most impactful changes involved aggressively limiting searchable attributes and tightening facet definitions.

I also discovered that overly generous synonym expansion negatively affected agent retrieval speed, so those were deliberately scaled back.

Screenshot primary indexes in Algolia


Keeping the Index in Sync

To avoid duplicating content manually, I configured an Algolia crawler to index content from DEV using my AI-optimized mirror site.

This keeps the index authoritative without human intervention.

The crawler is a lightweight JavaScript configuration managed directly from the Algolia dashboard.

Screenshot Algolia crawler testing

💡 The crawler configuration file is stored in the repo at System Notes v2.0.0—apps/api/algolia/sources/crawler.js.


Tuning with Analytics

An unfortunate API-key mistake prevented me from retaining full historical analytics.

Even so, analytics were used to confirm that retrieval behavior stabilized under repeat queries.

Screenshot Algolia search events

🦄 For the record, Algolia makes API key recovery painless if you record the original key. Naturally, I did not.


Why Fast, Predictable Retrieval Matters

Before Algolia, users had to rely on me to remember and document every meaningful decision tied to a project.

That does not scale. Retrieval does.

Now, I have a system capable of rapidly retrieving hundreds of decision-level records across active builds.

Original Design Paired with Algolia Observed Improvement
Project cards showing finished work Choice cards indexed as search records ✅ Enables decision-level retrieval instead of content browsing
Projects shown as static artifacts Searchable sequence of constrained decisions ✅ Demonstrates retrieval-first system thinking
Narrative explanations only Retrieval-backed records with rationale ✅ Proves answers are grounded in indexed data
Generic portfolio navigation Algolia-powered discovery as primary UX ✅ Makes Algolia structural to the experience
“Chat with AI” as a feature AI layered over Algolia retrieval ✅ Signals intentional AI restraint
Silent gaps when data is missing Fallback logic surfaced in results ✅ Shows real-world constraint handling

This system would not exist without Algolia. It isn’t an enhancement. It’s the foundation.


What’s Next

I ran out of time and this challenge had a hard stop.

Given the choice, I optimized retrieval stability over feature breadth.

When time allows, these are next:

  • Wire custom URL routing so search results are directly addressable
  • Finalize recommendations driven by real user interaction events
  • Introduce a Supabase backing store for indexed records to support long-term growth
  • Migrate existing project cards into the new indexed record format
  • Continue UI refinement and performance tuning

🦄 After winners are announced, this site will live solely at https://anchildress1.dev as my canonical portfolio.


🛡️ The Credits in the Margins

This piece was written by a human, with ChatGPT used along the way for editing, clarity passes, and structural tightening while drafting. The final shape, technical claims, and decisions are human-made.

Top comments (0)