Decisions/2026-05-03-EmbeddedArchitecture.md
Decision — Embedded Architecture
Decision
Crawler Factory will be embedded inside the Algolia dashboard, not shipped as a standalone application.
The Crawler Factory experience lives at Data sources → Crawler in the Algolia dashboard. It is not a separate product surface, not a separate URL, not a separate auth context. The user reaches it via the same nav rail they already use to reach Indices, Events, Connectors, and Ask AI today.
This decision was committed by Arijit on 2026-05-03 during Session 2.
Why this decision matters
It reverses the standalone-app posture we were carrying. The earlier mental model treated Crawler Factory as its own product surface — its own outer chrome, its own URL (/admin/factory), its own brand mark. The user pasted screenshots of the live Algolia dashboard, we reverse-engineered its design language, and once the language was on the table the implication was unavoidable: anything that sits next to Indices and Connectors in the Algolia dashboard must look like it was authored by the Algolia team.
This is not a small reskin. It changes:
- Chrome — Crawler Factory inherits the Algolia outer dashboard chrome (left product rail, Data sources sub-nav, top bar with app picker, search, Upgrade, AI Assist, avatar). It does not author its own.
- Entry point — Users do not navigate to
/admin/factory. They clickData sources → Crawlerlike they already do for the existing Crawler page, and Crawler Factory is what they see. - Navigation — The two-chrome rule still applies inside Crawler Factory (list view → focused workspace), but the outermost chrome is Algolia's.
- Branding — The wordmark in the focused-workspace top-left says
CRAWLER(matching Algolia's existing crawler workspace), notCRAWLER FACTORY. Our differentiation is functional (the value-add controls), not visual. This supersedes the open question in**2026-05-03-TwoChromeRule**. - Screen inventory — We need a list view of crawlers (which we didn't have in the standalone wizard). See
**2026-05-03-Phase1ScreenInventory**.
How Crawler Factory replaces / extends Algolia's existing Crawler page
Algolia today has a Data sources → Crawler page (we have 32 screenshots of it). Today's flow:
- User lands on the Crawler list page.
- Clicks
Add new crawler. - Fills in a name, picks an Algolia App, gets an empty crawler with a placeholder config.
- Goes to the Editor (advanced) and writes JavaScript by hand to define indices and extractors. Or fills out the cards in Configuration laboriously.
- Clicks
Start Crawlingand waits.
The pain: steps 3–4 are completely hand-built. Every crawler is artisanal. There's no concept of "auto-discover the site, classify the content, and stamp out N crawlers per content domain."
Crawler Factory replaces step 3 (and most of step 4) with a guided flow:
- User lands on the Crawler list page (same as today).
- Clicks
Add new crawler— but the modal that opens is now a choice:Build manually (advanced)orUse Crawler Factory (recommended). - If they pick Factory, they enter the 4-step wizard (Discover → Review → Configure → Crawl).
- At the end of the wizard, N crawlers have been created (one per detected content domain), each pre-configured with a working extractor. These crawlers are real Algolia crawlers — visible in the same list, with the same config / editor / status / suggestions / logs sub-pages.
- The user manages them ongoing using Algolia's existing crawler workspace UI, augmented with our value-add Run-Control Surface (
**2026-05-03-RunControlSurface**).
In other words: Crawler Factory is the smart creation flow + the operator-grade control layer on top of crawlers Algolia already supports. The crawlers themselves are not a new entity; we just produce them in bulk and manage them with more granular controls.
The placement question, answered
| Where Crawler Factory shows up | Surface |
|---|---|
| Algolia outer chrome → product rail | No new entry — we share the existing Data sources icon. |
| Data sources → secondary nav | No new entry. We sit under the existing Crawler item. |
Data sources → Crawler list page |
Two changes: (a) Add new crawler button opens a choice modal; (b) the list shows all crawlers regardless of how they were created — Factory-built or hand-built; both supported. |
| Inside a crawler's focused workspace | Same three-section nav (SETUP / STATUS / CONFIGURATION) as today, with two additions: (a) the persistent top-right CTA becomes a Run-Control Cluster (§2.5 of design pack), (b) the list-row pill becomes a Run-State Pill. |
| Inside the wizard | The wizard is a modal experience inside the list page, not a separate route. Closing the modal returns the user to the list. Completing the wizard returns the user to the list with N new crawlers created. |
| Future Layer-1 connector types | Eventually we will add CMS, KB, video transcript, and code-repo connectors. Each can either: (1) be a sibling under Data sources → <Connector>, or (2) all live under a new Data sources → Connectors umbrella with sub-tabs per type. Decision deferred to when the second connector type ships. Phase 1 = web only. |
The phased roadmap
Phase 1 (current build, this session and next): Web crawler only.
- Embedded inside Data sources → Crawler in Algolia dashboard.
- 4-screen wizard for creation (Discover → Review → Configure → Crawl).
- Crawler list view (existing Algolia view, with our additions).
- Per-crawler focused workspace (existing Algolia workspace, with our Run-Control Cluster).
Phase 2 (future): Additional Layer-1 connectors. - CMS connector (Contentful, WordPress, Drupal, headless CMS APIs). - KB connector (Zendesk, Salesforce KB, Confluence). - Video transcript connector (YouTube, Vimeo, Loom). - Code repository connector (GitHub, GitLab). - Each follows the same pattern: a smart creation wizard + per-asset focused workspace + run-control surface. - Most likely as sibling tabs inside a unified "Connectors" page.
Phase 3 (further future): The other Layer-1 stages, then Layers 2–3. - Transformer (UI for the homogenization stage). - Enrichment (UI for Algolia Fetch enrichment rules). - Indexing (consume the existing Indices page). - Agent Studio (already exists in some form; integration target). - These likely become top-level entries in the global product rail alongside Data sources, since they're full pipeline stages, not sub-modules.
Embedded vs. standalone — what we lose and what we gain
| Loses | Gains |
|---|---|
| Our own brand mark (CRAWLER FACTORY) | Visual continuity with the Algolia product the user already knows |
| Standalone deployability (Vercel, separate domain) | Free SSO, free user management, free billing, free quotas |
| The ability to ship faster by skipping Algolia design review | Pilots can install instantly — the customer is already in the dashboard |
| Optional: a marketing landing page | Discovery in the natural flow (a user adding a new crawler sees Crawler Factory as the recommended path) |
| The visual differentiator (Crawler Factory as a "thing" with its own identity) | The functional differentiator stays: pause/resume/re-crawl, smart creation, blueprint registry, multi-tenant naming. Differentiation is in capability, not chrome. |
The trade is correct. Our value is not the chrome.
What this means for the existing repo
The current repo (/Users/arijitchowdhury/AI-Development/Crawler_Factory) was built as a standalone Vite app with its own /admin/factory route and its own chrome. Most of the React UI in src/components/admin/factory/ will need to be either rewritten or refactored to live inside the Algolia dashboard's React shell when we eventually integrate.
Until that integration window opens, the standalone repo continues to function as our prototype + reference implementation — running locally, demoing the wizard end-to-end, but rendering the chrome we will eventually drop. This is fine. The mockups, the React components, and the design pack all transfer; only the outer shell wrapper needs replacement.
What this changes about the Phase 1 build spec
See **2026-05-03-Phase1ScreenInventory** for the full screen list. Highlights:
- We are no longer designing an outer dashboard chrome — assume Algolia's outer chrome wraps everything.
- We need a crawler list view that we never had before.
- The wizard becomes a modal flow over the list view instead of a 4-step page route.
- Each crawler's focused workspace must extend Algolia's existing workspace IA (don't replace it).
- The Run-Control Cluster slots into Algolia's existing "Start Crawling" CTA position. Same place, more behavior.
- Empty / error / loading states must follow Algolia's patterns (Recipe 13 in component recipes), not invent new ones.
Open questions
| Question | Status |
|---|---|
| Will Algolia accept Crawler Factory as an enhancement to the existing Crawler page, or expect us to ship as a separate "v2 Crawler" page? | Needs Algolia internal product alignment. Default: enhancement. |
Do we ship the choice modal (Build manually vs. Use Crawler Factory) inside Algolia's existing Add new crawler button, or do we get a separate + Add Crawler Factory button? |
Default: choice modal. Same button, smarter modal. |
When Phase 2 connectors ship, do they live under Data sources → Crawler or do we promote a new Data sources → Connectors umbrella? |
Defer until Phase 2 starts. |
| What's the timeline for the integration into Algolia's actual codebase? Are we contributing PRs to a shared repo or shipping our own bundle that the Algolia dashboard loads? | Open. Affects engineering plan but not design plan. |
Source materials
- 32 dashboard screenshots:
**00-findings** - Design pack:
**01-design-language** - Run-control surface:
**2026-05-03-RunControlSurface** - Two-chrome rule (revised by this decision):
**2026-05-03-TwoChromeRule** - Phase 1 screen inventory (consequence of this decision):
**2026-05-03-Phase1ScreenInventory** - Conversation:
**Session-2-DesignLanguage**