Collaborative Prompt Engineering Platform for Production LLM Development

linkedin · Tech · 2025 · source Agentic: no · promotional bias: low · source-backed · extracted with prompt 0.5.5 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Collaborative prompt engineering for production Sales Navigator LLM features

LinkedIn needed a way for engineers, product teams, domain experts, and sales users to iterate on production-like prompts together without brittle local setup, manual template filling, stale test data, or slow feedback loops.

Constraints:

Architecture

LinkedIn built collaborative prompt-engineering playgrounds around Jupyter Notebooks launched from the Sales Navigator Python backend repository. The backend uses LangChain chains, Jinja prompt templates, gRPC use-case routing, Trino-backed test-data collection, Bing Search APIs for live external data, privacy-enhanced test datasets, and remote development containers so cross-functional teams can run production-equivalent chains, edit prompts, review changes, and deploy through the normal repository pipeline.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  cross-functional-prompt-users["cross-functional prompt users"] --> remote-build-container["remote build container"]
  cross-functional-prompt-users --> jupyter-prompt-notebook["Jupyter prompt notebook"]
  remote-build-container --> jupyter-prompt-notebook
  remote-build-container --> python-backend-service["Python backend service"]
  jupyter-prompt-notebook --> python-backend-service
  jupyter-prompt-notebook --> test-data-notebooks["test data notebooks"]
  jupyter-prompt-notebook --> jinja-prompt-templates["Jinja prompt templates"]
  jupyter-prompt-notebook --> internal-github-repository["internal GitHub repository"]
  python-backend-service --> grpc-endpoint["gRPC endpoint"]
  python-backend-service --> langchain-chain-runtime["LangChain chain runtime"]
  grpc-endpoint --> langchain-chain-runtime
  langchain-chain-runtime --> jinja-prompt-templates
  langchain-chain-runtime --> bing-search-api["Bing Search API"]
  langchain-chain-runtime --> llm-provider-configuration["LLM provider configuration"]
  test-data-notebooks --> trino-data-lake["Trino data lake"]
  test-data-notebooks --> privacy-enhancing-data-handling["privacy-enhancing data handling"]
  jinja-prompt-templates --> internal-github-repository
  cross-functional-prompt-users --> internal-github-repository
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
cross-functional prompt users Engineers, Sales team members, and domain experts who run notebooks, inspect model outputs, and suggest prompt changes. remote build container, Jupyter prompt notebook, internal GitHub repository
remote build container Prebuilt internal development environment with repositories and dependencies available. cross-functional prompt users, Jupyter prompt notebook, Python backend service
Jupyter prompt notebook Collaborative playground for invoking chains, editing prompts, loading test data, and viewing results. cross-functional prompt users, Python backend service, test data notebooks, Jinja prompt templates, internal GitHub repository
Python backend service Production codebase powering Sales Navigator LLM features such as AccountIQ. Jupyter prompt notebook, LangChain chain runtime, gRPC endpoint
gRPC endpoint Accepts input parameters and use-case metadata, executes the matching chain, and returns the generated response. Python backend service, LangChain chain runtime
LangChain chain runtime Orchestrates data fetching, transformation, prompt preparation, tools, and LLM calls for each use case. Python backend service, gRPC endpoint, Jinja prompt templates, Bing Search API, LLM provider configuration
Jinja prompt templates Versioned prompt files with placeholders for dynamic company and external-source context. Jupyter prompt notebook, LangChain chain runtime, internal GitHub repository
test data notebooks Collect representative and refreshed company test data from LinkedIn's data lake. Jupyter prompt notebook, Trino data lake, privacy-enhancing data handling
Trino data lake Provides internal company test data through SQL magic commands in notebooks. test data notebooks
Bing Search API Fetches real-time external information when LLM-generated search queries cannot be pre-cached. LangChain chain runtime
LLM provider configuration Baseline OpenAI, internal, or public model settings used consistently across prompt tests. LangChain chain runtime
internal GitHub repository Stores notebooks, test data, prompt files, and code so changes go through code review, versioning, and deployment. cross-functional prompt users, Jupyter prompt notebook, Jinja prompt templates
privacy-enhancing data handling Protects against personal information appearing in test datasets. test data notebooks

Data flow

A team member launches a containerized notebook from the Python repository, selects a use case and test company, invokes the same LangChain chain used by the Sales Navigator backend, and the chain fetches/transforms data, populates Jinja placeholders, optionally calls Bing Search for real-time external data, invokes the LLM, and returns outputs in the notebook. Prompt, notebook, and test-data changes stay in the repository for code review and deployment, while tracked production usage refreshes the test datasets.

3 supporting quotes
“This allows users to clone the repository, build the code and launch the notebooks in browser or IDE with a single command.”article, stated
“It internally uses Langchain to orchestrate all the operations, such as fetching and transforming data, preparing the prompts and then calling LLMs.”article, stated
“Other team members can then use those notebooks, make any changes to the prompt files (jinja templates) or code and run and see the effect of changes.”article, stated

Why this architecture

LinkedIn chose notebooks inside the real code repository because prompt engineering for production features requires production-equivalent chains, reusable test data, shared model configuration, domain-expert collaboration, and code-reviewed changes rather than isolated provider playgrounds.

3 supporting quotes
“developing customer-ready features requires a custom setup that integrates smoothly with the development environment and its requirements.”article, stated
“The chains behave exactly the same on the user's local machine as they do in production environments. Using this, engineers can set up notebooks for their use-case, save it to the code repository and make it available for others in the team. Other team”article, stated
“This setup is also accessible to non-technical users, making prompt engineering inclusive and user-friendly. #### Setup We set up a python backend service that powers all the LLM based features in Sales Navigator, like AccountIQ. It internally uses Langchain”article, stated

Models used: OpenAI models · LinkedIn internal models · Llama · LLMs behind Sales Navigator features

Scale

Alternatives considered (roads not taken)

LLM provider online playgrounds

Rejected because: They are useful for exploration but do not integrate with production feature code, model configuration, chains, and environment requirements.

“Many tools provided by LLM providers are available online for experimenting with LLMs. While these are useful for initial exploration, developing customer-ready features requires a custom setup that integrates smoothly with the development environment and”article, stated
“developing customer-ready features requires a custom setup that integrates smoothly with the development environment and its requirements.”article, stated

Manual placeholder replacement in prompt templates

Rejected because: It is not feasible or scalable when prompts need company-specific context and external data.

“Replacing these values manually with test company’s data in the prompts is not a feasible or scalable option. When performing prompt engineering, it is not enough to test just the prompts in isolation, sometimes we need to test multiple prompts chained”article, stated

Testing prompts in isolation

Rejected because: Production behavior may involve multiple chained prompts and orchestration frameworks such as LangChain.

“it is not enough to test just the prompts in isolation, sometimes we need to test multiple prompts chained together using the orchestration frameworks like LangChain.”article, stated

Pre-caching external Bing results for prompt tests

Rejected because: LLM-generated search queries are dynamic, so external results need to be fetched in real time.

“The query to the websearch will be created dynamically so we cannot save the results from ‘Bing’ and use it for later, it has to be accessed realtime.”article, stated

One-off static test data collection

Rejected because: LinkedIn says test data must be sampled regularly to stay fresh and representative.

“Creating good quality test data sets is not a one time task – the data needs to be sampled on a regular basis to get a fresh dataset.”article, stated

Patterns

prompt-versioning (prompt-management)

Prompt files live in the code repository, can be committed, versioned, reviewed, and deployed through the standard pipeline.

“Any changes made to the prompt files can be committed to the internal GitHub repository, versioned, and deployed to production.”article, stated

prompt-chaining (orchestration)

The platform tests entire LangChain workflows with multiple prompts rather than single prompts alone.

“we need to test multiple prompts chained together using the orchestration frameworks like LangChain.”article, stated
“Every use-case is mapped to a specific chain which takes input parameters in the form of a dictionary of strings and generates a response.”article, stated

human-in-the-loop-gate (collaboration)

Non-technical domain experts and Sales users participate directly in live prompt sessions and feedback loops.

“Live prompt engineering sessions with end users, observing how they tweak prompts and interact with the system, have provided valuable insights directly from the users”article, stated
“directly involve the cross-functional team to collaborate on prompt iteration within days”article, stated

eval-driven-development (evaluation)

Representative, diverse, regularly refreshed test datasets are used to evaluate prompt changes quickly before production.

“A good test dataset should be representative of real world scenarios and it should also be diverse.”article, stated
“This helps with testing the prompt changes and catching any obvious issues quickly.”article, stated

tool-use-orchestration (orchestration)

AccountIQ chains invoke external tools such as Bing Search APIs when LLM-generated queries require live data.

“uses LLM and tools like Bing search to generate specific insights about the revenue of the company.”article, stated
“In AccountIQ, we use Bing Search APIs to perform web search to know more about specific aspects of the company.”article, stated

privacy-preserving-processing (security)

Test-data handling includes privacy-enhancing processes to avoid exposing personal information in prompt datasets.

“We have implemented numerous privacy-enhancing processes and techniques to protect against  personal information in the test datasets.”article, stated

structured-output-contract (interface)

Each chain receives dictionary-style input parameters and use-case metadata through a gRPC endpoint.

“takes input parameters in the form of a dictionary of strings and generates a response.”article, stated
“The service exposes a grpc endpoint to pass in the input parameters along with metadata like use-case id”article, stated

Tradeoffs

Use Jupyter Notebooks as prompt playgrounds.

Chose Notebook-based prompt engineering launched from the Python repository over Standalone online prompt tools.

Rationale: Notebooks can combine executable production code, test data, chain invocation, prompt editing, and cross-functional visibility in one environment.

“We decided to leverage Jupyter Notebooks to create a reusable solution that allows engineers to quickly set up custom prompt engineering playgrounds”article, stated
“This setup is also accessible to non-technical users, making prompt engineering inclusive and user-friendly.”article, stated

Store notebooks and test data in the code repository.

Chose Repository-managed notebooks and test datasets over Unreviewed ad hoc notebook copies.

Rationale: Repository storage forces code review before prompt playground or test-data changes are merged.

“Both the notebooks and the test data files live in the same code repository.”article, stated
“This ensures any changes to the notebooks, test data etc., also need code reviews from other engineers before getting merged to the repository.”article, stated

Use remote containers for setup.

Chose LinkedIn remote development containers with prebuilt repositories over Each user resolving local dependencies manually.

Rationale: Containers make setup accessible to non-technical contributors and keep dependencies consistent.

“We wanted to make it very easy for anyone to get set up and start using the playgrounds without having to worry about dealing with dependencies.”article, stated
“With just a few commands, anyone in the team can launch their remote build containers with code repositories fetched and pre-built.”article, stated

Fetch external data in real time during tests.

Chose Live Bing Search API calls generated by the LLM over Saved Bing results.

Rationale: Dynamic search queries cannot be known or cached in advance, so the framework automates live access.

“we cannot save the results from ‘Bing’ and use it for later, it has to be accessed realtime.”article, stated

Use production-equivalent chains for prompt experimentation.

Chose LangChain chains from the Python backend over Single-prompt isolated experiments.

Rationale: The team needed tests to reflect actual multi-prompt, tool-using production behavior.

“it is not enough to test just the prompts in isolation, sometimes we need to test multiple prompts chained together”article, stated

Gotchas (what bit them)

Provider playgrounds are insufficient for customer-ready prompt development.

Root cause: Production prompts depend on internal code, chain orchestration, model configuration, dynamic data, and environment requirements.

Resolution: Launch notebooks from the production Python repository so they access the same code, libraries, dependencies, and chains.

“developing customer-ready features requires a custom setup that integrates smoothly with the development environment and its requirements.”article, stated
“These notebooks have access to all Python code and libraries. All the library dependencies are managed and resolved automatically during build.”article, stated

Prompt comparisons become unreliable if users do not share a baseline model configuration.

Root cause: Different OpenAI, internal, and public model configurations can produce output differences unrelated to prompt changes.

Resolution: Maintain configurations in code and make them quick to launch in the prompt engineering setup.

“It is important for everyone on the team to use the same baseline model configuration to be able to compare the outputs while doing prompt or configuration changes.”article, stated
“Generally, these configurations are maintained in code. Users need to be able to quickly launch the prompt engineering setup with these configurations.”article, stated

Dynamic prompt placeholders make manual testing unscalable.

Root cause: Prompts need company-specific values fetched and injected for each test company.

Resolution: Use Jinja templates and chains that automatically load context and replace placeholders.

“Prompt templates support placeholders so that values are dynamically computed and replaced based on the context dynamically.”article, stated
“Replacing these values manually with test company’s data in the prompts is not a feasible or scalable option.”article, stated

External search results cannot always be cached for prompt testing.

Root cause: The LLM dynamically creates web-search queries, so the required external source data is only known at runtime.

Resolution: Automate live Bing Search API access inside the prompt-engineering framework.

“The query to the websearch will be created dynamically so we cannot save the results from ‘Bing’ and use it for later, it has to be accessed realtime.”article, stated
“We need to provide a way to automate this for the user when working on prompt engineering.”article, stated

Prompt work can drift from production behavior.

Root cause: If playground chains differ from the deployed backend, prompt improvements may not transfer cleanly.

Resolution: Run notebooks against the same repository code and chains so local behavior matches production behavior.

“The chains behave exactly the same on the user's local machine as they do in production environments.”article, stated

Evaluation

LinkedIn evaluates prompt changes with representative and regularly refreshed test datasets, production-equivalent chain execution in notebooks, live end-user prompt sessions, tracked real usage data, and code review for notebook/test-data changes.

Metrics: representative real-world test data · diverse company coverage by industry, size, country, and ownership type · real usage data sampled through tracking · prompt iteration within days · interactive and instant prompt-run feedback · two-hour to five-minute AccountIQ research reduction

4 supporting quotes
“A good test dataset should be representative of real world scenarios and it should also be diverse.”article, stated
“As users interact with our features, we sample the real usage data using tracking.”article, stated
“This continuous feedback loop helps us continuously improve our features.”article, stated
“see any changes to the prompts run interactively and instantly.”article, stated

Outcomes

The strongest numeric outcome is AccountIQ's reduction of company research from two hours to five minutes; the source also reports prompt-iteration collaboration within days and setup in a single or few commands.

3 supporting quotes
“With Jupyter Notebooks, we created a fast feedback loop, enabling seamless collaboration across teams.”article, stated
“AccountIQ automates company research, reducing what used to take two hours to just five minutes.”article, stated
“This allows us to build confidence early and involve internal users to test and provide feedback on direction.”article, stated