Tech-tag co-occurrence Every AI role gets tagged from a 35-term controlled vocabulary spanning agent / eval / training / inference / modality clusters. Tags that frequently appear together in the same JD pull each other close; thicker edges = more co-occurrences. The clusters that emerge organically are the real sub-disciplines of applied AI engineering right now.
Showing 27 tagged AI roles in Telecom. Layout is a Fruchterman-Reingold force simulation, run server-side to convergence.
agent_orchestration ↔ rag (13 JDs) agent_orchestration ↔ guardrails (7 JDs) agent_orchestration ↔ llm_observability (17 JDs) agent_orchestration ↔ model_serving (10 JDs) guardrails ↔ rag (5 JDs) llm_observability ↔ rag (13 JDs) model_serving ↔ rag (9 JDs) guardrails ↔ llm_observability (7 JDs) guardrails ↔ model_serving (4 JDs) llm_observability ↔ model_serving (11 JDs) agent_orchestration ↔ agent_research (4 JDs) agent_research ↔ rag (3 JDs) agent_research ↔ llm_observability (3 JDs) agent_research ↔ model_serving (2 JDs) agent_orchestration ↔ tool_use (7 JDs) agent_orchestration ↔ fine_tuning (5 JDs) agent_orchestration ↔ evals (5 JDs) fine_tuning ↔ tool_use (3 JDs) rag ↔ tool_use (5 JDs) llm_observability ↔ tool_use (6 JDs) evals ↔ tool_use (3 JDs) guardrails ↔ tool_use (2 JDs) fine_tuning ↔ rag (4 JDs) fine_tuning ↔ llm_observability (5 JDs) evals ↔ fine_tuning (2 JDs) fine_tuning ↔ guardrails (3 JDs) evals ↔ rag (3 JDs) evals ↔ llm_observability (5 JDs) evals ↔ guardrails (3 JDs) agent_orchestration ↔ multimodal (2 JDs) multimodal ↔ tool_use (2 JDs) evals ↔ multimodal (1 JDs) llm_observability ↔ multimodal (2 JDs) multimodal ↔ rag (2 JDs) agent_orchestration ↔ vector_db (3 JDs) rag ↔ vector_db (3 JDs) llm_observability ↔ vector_db (3 JDs) evals ↔ vector_db (1 JDs) audio_speech ↔ rag (2 JDs) model_serving ↔ vector_db (2 JDs) audio_speech ↔ vector_db (2 JDs) agent_orchestration ↔ audio_speech (3 JDs) audio_speech ↔ llm_observability (3 JDs) audio_speech ↔ model_serving (2 JDs) fine_tuning ↔ model_serving (3 JDs) agent_orchestration ↔ inference_infra (1 JDs) inference_infra ↔ rag (1 JDs) model_serving ↔ tool_use (3 JDs) inference_infra ↔ tool_use (1 JDs) inference_infra ↔ llm_observability (2 JDs) inference_infra ↔ model_serving (3 JDs) model_serving ↔ recommender_systems (2 JDs) model_serving ↔ search_ranking (2 JDs) inference_infra ↔ recommender_systems (1 JDs) inference_infra ↔ search_ranking (1 JDs) llm_observability ↔ recommender_systems (2 JDs) llm_observability ↔ search_ranking (2 JDs) recommender_systems ↔ search_ranking (2 JDs) agent_orchestration ↔ recommender_systems (1 JDs) agent_orchestration ↔ search_ranking (1 JDs) agent_orchestration ↔ vision (1 JDs) agent_orchestration ↔ frontier_research (1 JDs) agent_orchestration ↔ interpretability (1 JDs) agent_orchestration ↔ synthetic_data (1 JDs) agent_orchestration ↔ rl_post_training (1 JDs) agent_orchestration ↔ rlhf (1 JDs) agent_orchestration ↔ reward_modeling (1 JDs) agent_orchestration ↔ rl_robotics (1 JDs) agent_orchestration ↔ embodied_ai (1 JDs) agent_orchestration ↔ code_gen (1 JDs) tool_use ↔ vector_db (1 JDs) recommender_systems ↔ tool_use (1 JDs) search_ranking ↔ tool_use (1 JDs) tool_use ↔ vision (1 JDs) audio_speech ↔ tool_use (1 JDs) frontier_research ↔ tool_use (1 JDs) interpretability ↔ tool_use (1 JDs) synthetic_data ↔ tool_use (1 JDs) agent_research ↔ tool_use (1 JDs) rl_post_training ↔ tool_use (1 JDs) rlhf ↔ tool_use (1 JDs) reward_modeling ↔ tool_use (1 JDs) rl_robotics ↔ tool_use (1 JDs) embodied_ai ↔ tool_use (1 JDs) code_gen ↔ tool_use (1 JDs) llm_observability ↔ vision (1 JDs) frontier_research ↔ llm_observability (1 JDs) interpretability ↔ llm_observability (1 JDs) llm_observability ↔ synthetic_data (1 JDs) llm_observability ↔ rl_post_training (1 JDs) llm_observability ↔ rlhf (1 JDs) llm_observability ↔ reward_modeling (1 JDs) llm_observability ↔ rl_robotics (1 JDs) embodied_ai ↔ llm_observability (1 JDs) code_gen ↔ llm_observability (1 JDs) rag ↔ recommender_systems (1 JDs) rag ↔ search_ranking (1 JDs) rag ↔ vision (1 JDs) frontier_research ↔ rag (1 JDs) interpretability ↔ rag (1 JDs) rag ↔ synthetic_data (1 JDs) rag ↔ rl_post_training (1 JDs) rag ↔ rlhf (1 JDs) rag ↔ reward_modeling (1 JDs) rag ↔ rl_robotics (1 JDs) embodied_ai ↔ rag (1 JDs) code_gen ↔ rag (1 JDs) fine_tuning ↔ vector_db (1 JDs) recommender_systems ↔ vector_db (1 JDs) search_ranking ↔ vector_db (1 JDs) vector_db ↔ vision (1 JDs) multimodal ↔ vector_db (1 JDs) frontier_research ↔ vector_db (1 JDs) interpretability ↔ vector_db (1 JDs) synthetic_data ↔ vector_db (1 JDs) agent_research ↔ vector_db (1 JDs) rl_post_training ↔ vector_db (1 JDs) rlhf ↔ vector_db (1 JDs) reward_modeling ↔ vector_db (1 JDs) rl_robotics ↔ vector_db (1 JDs) embodied_ai ↔ vector_db (1 JDs) code_gen ↔ vector_db (1 JDs) fine_tuning ↔ recommender_systems (1 JDs) fine_tuning ↔ search_ranking (1 JDs) fine_tuning ↔ vision (1 JDs) fine_tuning ↔ multimodal (1 JDs) audio_speech ↔ fine_tuning (1 JDs) fine_tuning ↔ frontier_research (1 JDs) fine_tuning ↔ interpretability (1 JDs) fine_tuning ↔ synthetic_data (1 JDs) agent_research ↔ fine_tuning (1 JDs) fine_tuning ↔ rl_post_training (1 JDs) fine_tuning ↔ rlhf (1 JDs) fine_tuning ↔ reward_modeling (1 JDs) fine_tuning ↔ rl_robotics (1 JDs) embodied_ai ↔ fine_tuning (1 JDs) code_gen ↔ fine_tuning (1 JDs) model_serving ↔ vision (1 JDs) model_serving ↔ multimodal (1 JDs) frontier_research ↔ model_serving (1 JDs) interpretability ↔ model_serving (1 JDs) model_serving ↔ synthetic_data (1 JDs) model_serving ↔ rl_post_training (1 JDs) model_serving ↔ rlhf (1 JDs) model_serving ↔ reward_modeling (1 JDs) model_serving ↔ rl_robotics (1 JDs) embodied_ai ↔ model_serving (1 JDs) code_gen ↔ model_serving (1 JDs) recommender_systems ↔ vision (1 JDs) multimodal ↔ recommender_systems (1 JDs) audio_speech ↔ recommender_systems (1 JDs) frontier_research ↔ recommender_systems (1 JDs) interpretability ↔ recommender_systems (1 JDs) recommender_systems ↔ synthetic_data (1 JDs) agent_research ↔ recommender_systems (1 JDs) recommender_systems ↔ rl_post_training (1 JDs) recommender_systems ↔ rlhf (1 JDs) recommender_systems ↔ reward_modeling (1 JDs) recommender_systems ↔ rl_robotics (1 JDs) embodied_ai ↔ recommender_systems (1 JDs) code_gen ↔ recommender_systems (1 JDs) search_ranking ↔ vision (1 JDs) multimodal ↔ search_ranking (1 JDs) audio_speech ↔ search_ranking (1 JDs) frontier_research ↔ search_ranking (1 JDs) interpretability ↔ search_ranking (1 JDs) search_ranking ↔ synthetic_data (1 JDs) agent_research ↔ search_ranking (1 JDs) rl_post_training ↔ search_ranking (1 JDs) rlhf ↔ search_ranking (1 JDs) reward_modeling ↔ search_ranking (1 JDs) rl_robotics ↔ search_ranking (1 JDs) embodied_ai ↔ search_ranking (1 JDs) code_gen ↔ search_ranking (1 JDs) multimodal ↔ vision (1 JDs) audio_speech ↔ vision (1 JDs) frontier_research ↔ vision (1 JDs) interpretability ↔ vision (1 JDs) synthetic_data ↔ vision (1 JDs) agent_research ↔ vision (1 JDs) rl_post_training ↔ vision (1 JDs) rlhf ↔ vision (1 JDs) reward_modeling ↔ vision (1 JDs) rl_robotics ↔ vision (1 JDs) embodied_ai ↔ vision (1 JDs) code_gen ↔ vision (1 JDs) audio_speech ↔ multimodal (1 JDs) frontier_research ↔ multimodal (1 JDs) interpretability ↔ multimodal (1 JDs) multimodal ↔ synthetic_data (1 JDs) agent_research ↔ multimodal (1 JDs) multimodal ↔ rl_post_training (1 JDs) multimodal ↔ rlhf (1 JDs) multimodal ↔ reward_modeling (1 JDs) multimodal ↔ rl_robotics (1 JDs) embodied_ai ↔ multimodal (1 JDs) code_gen ↔ multimodal (1 JDs) audio_speech ↔ frontier_research (1 JDs) audio_speech ↔ interpretability (1 JDs) audio_speech ↔ synthetic_data (1 JDs) agent_research ↔ audio_speech (1 JDs) audio_speech ↔ rl_post_training (1 JDs) audio_speech ↔ rlhf (1 JDs) audio_speech ↔ reward_modeling (1 JDs) audio_speech ↔ rl_robotics (1 JDs) audio_speech ↔ embodied_ai (1 JDs) audio_speech ↔ code_gen (1 JDs) frontier_research ↔ interpretability (1 JDs) frontier_research ↔ synthetic_data (1 JDs) agent_research ↔ frontier_research (1 JDs) frontier_research ↔ rl_post_training (1 JDs) frontier_research ↔ rlhf (1 JDs) frontier_research ↔ reward_modeling (1 JDs) frontier_research ↔ rl_robotics (1 JDs) embodied_ai ↔ frontier_research (1 JDs) code_gen ↔ frontier_research (1 JDs) interpretability ↔ synthetic_data (1 JDs) agent_research ↔ interpretability (1 JDs) interpretability ↔ rl_post_training (1 JDs) interpretability ↔ rlhf (1 JDs) interpretability ↔ reward_modeling (1 JDs) interpretability ↔ rl_robotics (1 JDs) embodied_ai ↔ interpretability (1 JDs) code_gen ↔ interpretability (1 JDs) agent_research ↔ synthetic_data (1 JDs) rl_post_training ↔ synthetic_data (1 JDs) rlhf ↔ synthetic_data (1 JDs) reward_modeling ↔ synthetic_data (1 JDs) rl_robotics ↔ synthetic_data (1 JDs) embodied_ai ↔ synthetic_data (1 JDs) code_gen ↔ synthetic_data (1 JDs) agent_research ↔ rl_post_training (1 JDs) agent_research ↔ rlhf (1 JDs) agent_research ↔ reward_modeling (1 JDs) agent_research ↔ rl_robotics (1 JDs) agent_research ↔ embodied_ai (1 JDs) agent_research ↔ code_gen (1 JDs) rl_post_training ↔ rlhf (1 JDs) reward_modeling ↔ rl_post_training (1 JDs) rl_post_training ↔ rl_robotics (1 JDs) embodied_ai ↔ rl_post_training (1 JDs) code_gen ↔ rl_post_training (1 JDs) reward_modeling ↔ rlhf (1 JDs) rl_robotics ↔ rlhf (1 JDs) embodied_ai ↔ rlhf (1 JDs) code_gen ↔ rlhf (1 JDs) reward_modeling ↔ rl_robotics (1 JDs) embodied_ai ↔ reward_modeling (1 JDs) code_gen ↔ reward_modeling (1 JDs) embodied_ai ↔ rl_robotics (1 JDs) code_gen ↔ rl_robotics (1 JDs) code_gen ↔ embodied_ai (1 JDs) Agent orchestration
N=19 JDs
Top co-occur: LLM observability ×17 · RAG ×13 · Model serving ×10 Agent orchestration RAG
N=13 JDs
Top co-occur: Agent orchestration ×13 · LLM observability ×13 · Model serving ×9 RAG Guardrails
N=7 JDs
Top co-occur: Agent orchestration ×7 · LLM observability ×7 · RAG ×5 Guardrails LLM observability
N=20 JDs
Top co-occur: Agent orchestration ×17 · RAG ×13 · Model serving ×11 LLM observability Model serving
N=14 JDs
Top co-occur: LLM observability ×11 · Agent orchestration ×10 · RAG ×9 Model serving Agent research
N=4 JDs
Top co-occur: Agent orchestration ×4 · RAG ×3 · LLM observability ×3 Tool use
N=7 JDs
Top co-occur: Agent orchestration ×7 · LLM observability ×6 · RAG ×5 Tool use Fine-tuning
N=5 JDs
Top co-occur: Agent orchestration ×5 · LLM observability ×5 · RAG ×4 Fine-tuning Evals
N=5 JDs
Top co-occur: Agent orchestration ×5 · LLM observability ×5 · Tool use ×3 Evals Multimodal
N=2 JDs
Top co-occur: Agent orchestration ×2 · Tool use ×2 · LLM observability ×2 Vector DB
N=3 JDs
Top co-occur: Agent orchestration ×3 · RAG ×3 · LLM observability ×3 Audio & speech
N=3 JDs
Top co-occur: Agent orchestration ×3 · LLM observability ×3 · RAG ×2 Inference infra
N=3 JDs
Top co-occur: Model serving ×3 · LLM observability ×2 · Agent orchestration ×1 Recommender systems
N=2 JDs
Top co-occur: Model serving ×2 · LLM observability ×2 · Search & ranking ×2 Search & ranking
N=2 JDs
Top co-occur: Model serving ×2 · LLM observability ×2 · Recommender systems ×2 Vision
N=2 JDs
Top co-occur: Agent orchestration ×1 · Tool use ×1 · LLM observability ×1 Frontier research
N=2 JDs
Top co-occur: Agent orchestration ×1 · Tool use ×1 · LLM observability ×1 Interpretability
N=1 JDs
Top co-occur: Agent orchestration ×1 · Tool use ×1 · LLM observability ×1 Synthetic data
N=1 JDs
Top co-occur: Agent orchestration ×1 · Tool use ×1 · LLM observability ×1 RL post-training
N=1 JDs
Top co-occur: Agent orchestration ×1 · Tool use ×1 · LLM observability ×1 RLHF
N=1 JDs
Top co-occur: Agent orchestration ×1 · Tool use ×1 · LLM observability ×1 Reward modeling
N=1 JDs
Top co-occur: Agent orchestration ×1 · Tool use ×1 · LLM observability ×1 RL robotics
N=1 JDs
Top co-occur: Agent orchestration ×1 · Tool use ×1 · LLM observability ×1 Embodied AI
N=1 JDs
Top co-occur: Agent orchestration ×1 · Tool use ×1 · LLM observability ×1 Code gen
N=1 JDs
Top co-occur: Agent orchestration ×1 · Tool use ×1 · LLM observability ×1 25 tags · 252 co-occurrence edges · min edge weight 1. Bubble area ∝ JDs containing tag · edge thickness ∝ co-occurrence count. Hover any node for top-3 partners; click to see the JDs. Tag velocity · last 4 weeks vs prior 4 Which technologies are hot, which are cooling. Sparkline = 12 weeks of unique roles tagged with each term, last bar on the right is this week. Sorted by absolute pickup. Tags with under 10 lifetime mentions are hidden as noise.