Skip to content

Commit 94356fd

Browse files
authored
Merge pull request #226 from httpsphl/feat/catalog-paid-media-roles
feat(catalog): six paid media roles
2 parents b85d610 + c4455cc commit 94356fd

19 files changed

Lines changed: 427 additions & 11 deletions

‎app/src/features/catalog/agency.test.tsx‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ describe("the Bot agency", () => {
3333

3434
fireEvent.click(within(invite).getByRole("button", { name: "See all bots" }));
3535
const dialog = await screen.findByRole("dialog", { name: "Bot agency" });
36-
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(73);
36+
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(79);
3737
});
3838

3939
test("a crew with only its chief invites the owner to pick bots, and a click adds one", async () => {
@@ -82,10 +82,10 @@ describe("the Bot agency", () => {
8282
await openCrewWithChief();
8383
fireEvent.click(screen.getByRole("button", { name: "Bot agency" }));
8484
const dialog = await screen.findByRole("dialog", { name: "Bot agency" });
85-
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(73);
85+
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(79);
8686

8787
fireEvent.click(within(dialog).getByRole("button", { name: "Marketing & sales" }));
88-
expect(within(dialog).getAllByRole("listitem")).toHaveLength(18);
88+
expect(within(dialog).getAllByRole("listitem")).toHaveLength(24);
8989
fireEvent.click(within(dialog).getByRole("button", { name: "Product & management" }));
9090
expect(within(dialog).getAllByRole("listitem")).toHaveLength(14);
9191

@@ -129,7 +129,7 @@ describe("the Bot agency", () => {
129129
expect(addCalls(fake)[0]).toMatchObject({ templateId: "code-reviewer" });
130130

131131
fireEvent.click(within(dialog).getByRole("button", { name: "Back to all bots" }));
132-
expect(within(dialog).getAllByRole("listitem")).toHaveLength(73);
132+
expect(within(dialog).getAllByRole("listitem")).toHaveLength(79);
133133
});
134134

135135
test("the same role twice gets another name", async () => {

‎app/src/i18n/en/catalog.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { design } from "./catalogDesign";
44
import { engineering } from "./catalogEngineering";
55
import { finance } from "./catalogFinance";
66
import { marketing } from "./catalogMarketing";
7+
import { paidMedia } from "./catalogPaidMedia";
78
import { product } from "./catalogProduct";
89

910
// The Bot agency (spec 26): ready-made bots the owner adds to a crew. The
@@ -60,5 +61,6 @@ export const catalog = {
6061
...contentAndLearning,
6162
...design,
6263
...finance,
64+
...paidMedia,
6365
},
6466
};
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
// Paid media roles, listed under Marketing & sales (spec 26.3): what the owner
2+
// reads about each. None creates, changes or pays for an ad.
3+
4+
export const paidMedia = {
5+
"ppc-strategist": {
6+
name: "Search Ads Strategist",
7+
role: "Plans search ad campaigns: the keywords, the structure, the ads and a small budget to test, with a plan you carry out",
8+
summary:
9+
"Plans your search ads, from keywords to the ads themselves, with a small budget to test first",
10+
about:
11+
"Starts from what a customer is worth to you, builds the keyword groups by what people intend, writes the ads from your real offer and sets a small test with clear rules for when to stop and when to raise. It never creates or pays for an ad: you do, with its plan.",
12+
when: "When you want to start search ads, or the ones you have are not paying off.",
13+
pairs: "Copywriter, to sharpen the ads, and Search Query Analyst, to read the search terms.",
14+
},
15+
"paid-social-strategist": {
16+
name: "Paid Social Strategist",
17+
role: "Plans paid campaigns on social platforms: the audience, the formats, the creative needs and a test budget, without sensitive targeting",
18+
summary:
19+
"Plans your paid social campaigns: who to reach, what to show and how to test it with a small budget",
20+
about:
21+
"Picks one objective, defines who to reach by interests, place and the customer lists you choose, and plans the formats and the variants to test. It never targets by sensitive traits like health or religion and never preys on insecurities. You create and pay for the campaign yourself.",
22+
when: "When you want to reach new people on social platforms without wasting your budget.",
23+
pairs:
24+
"Ad Creative Strategist, for what to say and show, and Video Scriptwriter, for short videos.",
25+
},
26+
"ad-creative-strategist": {
27+
name: "Ad Creative Strategist",
28+
role: "Plans what ads should say and show: angles, hooks and variants to test, and learns from what performs",
29+
summary:
30+
"Plans what your ads should say and show, with a few angles to test and what each one teaches you",
31+
about:
32+
"Takes the words your customers use and writes three or four different angles, each with the hook, the text and a brief for the picture or video. It changes one thing per test, so a result says why it won. It only uses claims you can prove: no invented reviews or false scarcity.",
33+
when: "When your ads all look the same, or you do not know what to test next.",
34+
pairs: "Designer, for the pictures, Copywriter, to polish, and Paid Social Strategist.",
35+
},
36+
"ad-auditor": {
37+
name: "Ad Account Auditor",
38+
role: "Reviews how your ad campaigns are set up and run, finds wasted spend and missed chances, and lists fixes in order",
39+
summary:
40+
"Reviews your ad campaigns, finds wasted spend and missed chances, and lists the fixes in order",
41+
about:
42+
"Reads the reports you give it and finds the usual leaks: spend with no results, people reached twice, tired ads, searches that do not fit and results counted wrong. Each finding comes with the numbers, the money at stake and the fix, in order. It has no access to your account and changes nothing.",
43+
when: "When your ad spend is growing but you are not sure it is working.",
44+
pairs:
45+
"Tracking Specialist, to check the counts, and Search Ads Strategist, to apply the fixes.",
46+
},
47+
"tracking-specialist": {
48+
name: "Tracking Specialist",
49+
role: "Checks that your ads and site measure results correctly: events, tags, links and what counts as a result",
50+
summary:
51+
"Checks that your ads and site count results correctly, so you can trust the numbers you decide on",
52+
about:
53+
"Lists every place a result is counted and compares them: ad platform, site, store and spreadsheet. It explains each gap in plain words, such as double counting or links that lose their tags, and proposes one clean naming for events and links. It says how far the numbers can be trusted and collects no more about visitors than you need.",
54+
when: "Before you spend on ads, or when the numbers from different places do not agree.",
55+
pairs: "Frontend Developer, who adds the tags, and Ad Account Auditor.",
56+
},
57+
"search-query-analyst": {
58+
name: "Search Query Analyst",
59+
role: "Reads the real searches behind your ads or site, groups them by intent and finds what to add, exclude or write for",
60+
summary:
61+
"Reads the real searches behind your ads and site, and tells you what to add, exclude or write for",
62+
about:
63+
"Takes the real words people typed and groups them by what they want: to buy, to compare, to learn. It gives you three lists: what to exclude because it wastes money, what to add because it works and what to write about because people ask. It says how sure it is, since a term with three clicks proves nothing.",
64+
when: "When you run search ads or want to know what people look for before they find you.",
65+
pairs: "Search Ads Strategist, who uses the lists, and SEO Specialist, for the content ideas.",
66+
},
67+
};

‎app/src/i18n/es/catalog.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { design } from "./catalogDesign";
55
import { engineering } from "./catalogEngineering";
66
import { finance } from "./catalogFinance";
77
import { marketing } from "./catalogMarketing";
8+
import { paidMedia } from "./catalogPaidMedia";
89
import { product } from "./catalogProduct";
910

1011
export const catalog: Messages["catalog"] = {
@@ -57,5 +58,6 @@ export const catalog: Messages["catalog"] = {
5758
...contentAndLearning,
5859
...design,
5960
...finance,
61+
...paidMedia,
6062
},
6163
};
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import type { paidMedia as en } from "../en/catalogPaidMedia";
2+
3+
export const paidMedia: typeof en = {
4+
"ppc-strategist": {
5+
name: "Estratega de anuncios de búsqueda",
6+
role: "Planifica campañas de anuncios en buscadores: las palabras, la estructura, los anuncios y un presupuesto pequeño para probar, en un plan que tú ejecutas",
7+
summary:
8+
"Planifica tus anuncios de búsqueda, de las palabras a los anuncios, con un presupuesto pequeño para probar primero",
9+
about:
10+
"Parte de lo que vale un cliente para ti, arma los grupos de palabras por lo que la gente quiere, escribe los anuncios con tu oferta real y define una prueba pequeña con reglas claras de cuándo parar y cuándo subir. Nunca crea ni paga un anuncio: lo haces tú, con su plan.",
11+
when: "Cuando quieres empezar con anuncios de búsqueda, o los que tienes no dan resultado.",
12+
pairs:
13+
"Redactor publicitario, para afinar los anuncios, y Analista de búsquedas, para leer los términos buscados.",
14+
},
15+
"paid-social-strategist": {
16+
name: "Estratega de anuncios en redes sociales",
17+
role: "Planifica campañas de pago en redes sociales: el público, los formatos, lo que hay que crear y un presupuesto de prueba, sin segmentación sensible",
18+
summary:
19+
"Planifica tus campañas de pago en redes: a quién llegar, qué mostrar y cómo probarlo con poco dinero",
20+
about:
21+
"Elige un solo objetivo, define a quién llegar por intereses, lugar y las listas de clientes que decidas usar, y planifica los formatos y las variantes a probar. Nunca segmenta por rasgos sensibles como la salud o la religión ni se aprovecha de inseguridades. La campaña la creas y la pagas tú.",
22+
when: "Cuando quieres llegar a gente nueva en las redes sin desperdiciar el presupuesto.",
23+
pairs:
24+
"Estratega de creatividades de anuncios, para qué decir y mostrar, y Guionista de video, para videos cortos.",
25+
},
26+
"ad-creative-strategist": {
27+
name: "Estratega de creatividades de anuncios",
28+
role: "Planifica qué deben decir y mostrar los anuncios: ángulos, ganchos y variantes para probar, y aprende de lo que funciona",
29+
summary:
30+
"Planifica qué deben decir y mostrar tus anuncios, con algunos ángulos para probar y lo que enseña cada uno",
31+
about:
32+
"Toma las palabras que usan tus clientes y escribe tres o cuatro ángulos distintos, cada uno con el gancho, el texto y una guía para la imagen o el video. Cambia una sola cosa por prueba, para que el resultado diga por qué ganó. Solo usa afirmaciones que puedes demostrar: nada de reseñas inventadas ni falsa escasez.",
33+
when: "Cuando tus anuncios se parecen todos, o no sabes qué probar a continuación.",
34+
pairs:
35+
"Diseñador, para las imágenes, Redactor publicitario, para pulir, y Estratega de anuncios en redes sociales.",
36+
},
37+
"ad-auditor": {
38+
name: "Auditor de cuentas de anuncios",
39+
role: "Revisa cómo están montadas y cómo funcionan tus campañas de anuncios, encuentra dinero desperdiciado y oportunidades perdidas y lista los arreglos en orden",
40+
summary:
41+
"Revisa tus campañas de anuncios, encuentra dinero desperdiciado y oportunidades perdidas y lista los arreglos en orden",
42+
about:
43+
"Lee los informes que le des y encuentra las fugas de siempre: gasto sin resultados, gente alcanzada dos veces, anuncios cansados, búsquedas que no encajan y resultados mal contados. Cada hallazgo trae los números, el dinero en juego y el arreglo, en orden. No tiene acceso a tu cuenta y no cambia nada en ella.",
44+
when: "Cuando el gasto en anuncios crece, pero no estás seguro de que funcione.",
45+
pairs:
46+
"Especialista en medición, para comprobar los conteos, y Estratega de anuncios de búsqueda, para aplicar los arreglos.",
47+
},
48+
"tracking-specialist": {
49+
name: "Especialista en medición",
50+
role: "Comprueba que tus anuncios y tu sitio midan bien los resultados: eventos, etiquetas, enlaces y qué cuenta como resultado",
51+
summary:
52+
"Comprueba que tus anuncios y tu sitio cuenten bien los resultados, para que confíes en los números",
53+
about:
54+
"Lista cada lugar donde se cuenta un resultado y los compara: plataforma de anuncios, sitio, tienda y hoja de cálculo. Explica cada diferencia en palabras sencillas, como el conteo doble o los enlaces que pierden su etiqueta, y propone un nombre limpio para eventos y enlaces. Dice hasta dónde se puede confiar en los números y no recoge de los visitantes más de lo que necesitas.",
55+
when: "Antes de gastar en anuncios, o cuando los números de distintos sitios no coinciden.",
56+
pairs: "Desarrollador front-end, que pone las etiquetas, y Auditor de cuentas de anuncios.",
57+
},
58+
"search-query-analyst": {
59+
name: "Analista de búsquedas",
60+
role: "Lee las búsquedas reales detrás de tus anuncios o tu sitio, las agrupa por intención y encuentra qué añadir, excluir o escribir",
61+
summary:
62+
"Lee las búsquedas reales detrás de tus anuncios y tu sitio y dice qué añadir, excluir o escribir",
63+
about:
64+
"Toma las palabras que la gente realmente escribió y las agrupa por lo que quiere: comprar, comparar, aprender. Entrega tres listas: qué excluir porque gasta dinero sin sentido, qué añadir porque funciona y sobre qué escribir porque la gente pregunta. Dice qué tan seguro está, ya que un término con tres clics no prueba nada.",
65+
when: "Cuando haces anuncios de búsqueda o quieres saber qué busca la gente antes de encontrarte.",
66+
pairs:
67+
"Estratega de anuncios de búsqueda, que usa las listas, y Especialista en SEO, para las ideas de contenido.",
68+
},
69+
};

‎app/src/i18n/pt-BR/catalog.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { design } from "./catalogDesign";
55
import { engineering } from "./catalogEngineering";
66
import { finance } from "./catalogFinance";
77
import { marketing } from "./catalogMarketing";
8+
import { paidMedia } from "./catalogPaidMedia";
89
import { product } from "./catalogProduct";
910

1011
export const catalog: Messages["catalog"] = {
@@ -57,5 +58,6 @@ export const catalog: Messages["catalog"] = {
5758
...contentAndLearning,
5859
...design,
5960
...finance,
61+
...paidMedia,
6062
},
6163
};
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import type { paidMedia as en } from "../en/catalogPaidMedia";
2+
3+
export const paidMedia: typeof en = {
4+
"ppc-strategist": {
5+
name: "Estrategista de anúncios de busca",
6+
role: "Planeja campanhas de anúncios na busca: as palavras, a estrutura, os anúncios e um orçamento pequeno para testar, num plano que você executa",
7+
summary:
8+
"Planeja seus anúncios de busca, das palavras aos anúncios, com um orçamento pequeno para testar primeiro",
9+
about:
10+
"Parte do quanto um cliente vale para você, monta os grupos de palavras pelo que as pessoas querem, escreve os anúncios com a sua oferta real e define um teste pequeno com regras claras de quando parar e quando aumentar. Nunca cria nem paga um anúncio: quem faz é você, com o plano dele.",
11+
when: "Quando você quer começar anúncios na busca, ou os que você tem não estão dando retorno.",
12+
pairs:
13+
"Redator publicitário, para afiar os anúncios, e Analista de buscas, para ler os termos pesquisados.",
14+
},
15+
"paid-social-strategist": {
16+
name: "Estrategista de anúncios em redes sociais",
17+
role: "Planeja campanhas pagas nas redes sociais: o público, os formatos, o que criar e um orçamento de teste, sem segmentação sensível",
18+
summary:
19+
"Planeja suas campanhas pagas nas redes: quem alcançar, o que mostrar e como testar com pouco dinheiro",
20+
about:
21+
"Escolhe um só objetivo, define quem alcançar por interesses, lugar e as listas de clientes que você decidir usar, e planeja os formatos e as variações a testar. Nunca segmenta por traços sensíveis como saúde ou religião e nunca explora inseguranças. A campanha, você mesmo cria e paga.",
22+
when: "Quando você quer alcançar gente nova nas redes sem desperdiçar o orçamento.",
23+
pairs:
24+
"Estrategista de criativos de anúncios, para o que dizer e mostrar, e Roteirista de vídeo, para vídeos curtos.",
25+
},
26+
"ad-creative-strategist": {
27+
name: "Estrategista de criativos de anúncios",
28+
role: "Planeja o que os anúncios devem dizer e mostrar: ângulos, ganchos e variações para testar, e aprende com o que funciona",
29+
summary:
30+
"Planeja o que seus anúncios devem dizer e mostrar, com alguns ângulos para testar e o que cada um ensina",
31+
about:
32+
"Pega as palavras que seus clientes usam e escreve três ou quatro ângulos diferentes, cada um com o gancho, o texto e um briefing para a imagem ou o vídeo. Muda uma coisa por teste, para o resultado dizer por que ganhou. Só usa afirmações que você pode provar: nada de avaliação inventada nem falsa escassez.",
33+
when: "Quando seus anúncios parecem todos iguais, ou você não sabe o que testar a seguir.",
34+
pairs:
35+
"Designer, para as imagens, Redator publicitário, para polir, e Estrategista de anúncios em redes sociais.",
36+
},
37+
"ad-auditor": {
38+
name: "Auditor de contas de anúncios",
39+
role: "Revisa como suas campanhas de anúncios estão montadas e rodando, acha dinheiro desperdiçado e chances perdidas e lista os ajustes em ordem",
40+
summary:
41+
"Revisa suas campanhas de anúncios, acha dinheiro desperdiçado e chances perdidas e lista os ajustes em ordem",
42+
about:
43+
"Lê os relatórios que você der e acha os vazamentos de sempre: gasto sem resultado, gente alcançada duas vezes, anúncios cansados, buscas que não combinam e resultados contados errado. Cada achado vem com os números, o dinheiro em jogo e o ajuste, em ordem. Não tem acesso à sua conta e não muda nada nela.",
44+
when: "Quando o gasto com anúncios cresce, mas você não tem certeza de que está funcionando.",
45+
pairs:
46+
"Especialista em medição, para conferir as contagens, e Estrategista de anúncios de busca, para aplicar os ajustes.",
47+
},
48+
"tracking-specialist": {
49+
name: "Especialista em medição",
50+
role: "Confere se seus anúncios e seu site medem os resultados direito: eventos, tags, links e o que conta como resultado",
51+
summary:
52+
"Confere se seus anúncios e seu site contam os resultados direito, para você confiar nos números",
53+
about:
54+
"Lista cada lugar em que um resultado é contado e compara: plataforma de anúncios, site, loja e planilha. Explica cada diferença em palavras simples, como contagem em dobro ou links que perdem a marcação, e propõe um nome limpo para eventos e links. Diz até onde os números merecem confiança e não coleta dos visitantes mais do que você precisa.",
55+
when: "Antes de gastar com anúncios, ou quando os números de lugares diferentes não batem.",
56+
pairs: "Desenvolvedor front-end, que coloca as tags, e Auditor de contas de anúncios.",
57+
},
58+
"search-query-analyst": {
59+
name: "Analista de buscas",
60+
role: "Lê as buscas reais por trás dos seus anúncios ou do seu site, agrupa por intenção e acha o que incluir, excluir ou escrever",
61+
summary:
62+
"Lê as buscas reais por trás dos seus anúncios e do seu site e diz o que incluir, excluir ou escrever",
63+
about:
64+
"Pega as palavras que as pessoas realmente digitaram e agrupa pelo que querem: comprar, comparar, aprender. Entrega três listas: o que excluir porque gasta dinheiro à toa, o que incluir porque funciona e sobre o que escrever porque as pessoas perguntam. Diz o quanto tem certeza, já que um termo com três cliques não prova nada.",
65+
when: "Quando você faz anúncios de busca ou quer saber o que as pessoas procuram antes de achar você.",
66+
pairs:
67+
"Estrategista de anúncios de busca, que usa as listas, e Especialista em SEO, para as ideias de conteúdo.",
68+
},
69+
};

0 commit comments

Comments
 (0)