diff --git a/mo/web/templates/org_contest.html b/mo/web/templates/org_contest.html
index 333511d38b454343490798cc73b775e9b2dfb733..13843d4e0049622fa810721d11035cf78d11b61d 100644
--- a/mo/web/templates/org_contest.html
+++ b/mo/web/templates/org_contest.html
@@ -99,6 +99,10 @@
 <p class='space-top rights-elsewhere'>Další akce můžete provádět na stránce své soutěže nebo soutěžního místa.&nbsp;{{ rights_elsewhere_info() }}
 {% endif %}
 
+{% if can_manage and round.round_type in [RoundType.domaci, RoundType.skolni, RoundType.okresni] %}
+{% include "parts/org_contest_guide.html" %}
+{% endif %}
+
 {% if not site %}
 <h3>Soutěžní místa</h3>
 {% if places_counts %}
diff --git a/mo/web/templates/parts/org_contest_guide.html b/mo/web/templates/parts/org_contest_guide.html
new file mode 100644
index 0000000000000000000000000000000000000000..5240ffd428886d1fd4919348184377b775262487
--- /dev/null
+++ b/mo/web/templates/parts/org_contest_guide.html
@@ -0,0 +1,106 @@
+{# Includuje se z org_contest.html, dostaneme: contest, round, state, ct_state #}
+
+{% set round_type = round.round_type %}
+
+<h3>Průvodce pro garanty</h3>
+
+<p>Průvodce popisuje, co by měl garant v tomto stavu soutěže udělat.
+
+<ul>
+
+{% if state == RoundState.preparing %}
+
+	<li>Počkejte, až bude soutěž v této kategorii otevřena.
+
+{% elif state == RoundState.running %}
+
+	{% if round_type == RoundType.domaci %}
+	<li>Účastníci se přihlašují sami, vidíte je v <a href='{{ ctx.url_for('org_generic_list') }}'>seznamu soutěžících</a>.
+	{% else %}
+	<li>Zkontrolujte <a href='{{ ctx.url_for('org_generic_list') }}'>seznam soutěžících</a>.
+		<ul>
+		<li>Můžete nechat účastníky <a href='{{ ctx.url_for('org_contest_advance') }}'>postoupit z minulého kola</a>.
+		<li>Můžete účastníka <a href='{{ ctx.url_for('org_contest_add_user') }}'>ručně přidat</a>.
+		</ul>
+	{% endif %}
+
+	{% if round_type not in [RoundType.domaci, RoundType.skolni] %}
+	<li>Rozešlete soutěžícím pozvánky (TODO).
+	{% endif %}
+
+	{% if round_type != RoundType.domaci %}
+	<li>Pokud chcete, vytiskněte <a href='{{ ctx.url_for('org_contest_protocols') }}'>hlavičkové papíry na protokoly</a>.
+	{% endif %}
+
+	<li>Počkejte, až uplyne termín odevzdání a garant kategorie přepne soutěž do stavu „opravuje se“.
+
+{% elif state in [RoundState.grading, RoundState.graded] %}
+
+	{% if state == RoundState.grading %}
+
+	<li>Zkontrolujte <a href='{{ ctx.url_for('org_generic_list') }}'>seznam soutěžících</a>.
+		{% if round_type != RoundType.domaci %}
+		<ul>
+		<li>Pokud se některý z účastníků nedostavil, označte ho jako nepřítomného.
+		</ul>
+		{% endif %}
+
+	<li>Nahrajte opravené protokoly:
+		<ul>
+		{% if round.category in "ABC" and round_type == RoundType.skolni %}
+		<li>Protokoly úspěšných řešitelů předejte krajskému garantovi, ideálně nahráním do OSMO.
+		{% else %}
+		<li>Nahrávání protokolů je v tomto kole nepovinné, ale pokud to uděláte, soutěžící je v OSMO uvidí.
+		{% endif %}
+		<li>Nahrávat můžete každý protokol zvlášť: nejdříve zadejte body (viz dále), pak použijte tlačítko „Odevzdaná řešení“ v seznamu úloh níže.
+		{% if round_type != RoundType.domaci %}
+		<li>Pokud soutěžící psali na hlavičkové papíry, můžete je oskenovat a <a href='{{ ctx.url_for('org_contest_scans') }}'>automaticky roztřídit</a>.
+		{% endif %}
+		</ul>
+
+	<li>Zadejte body za jednotlivá řešení:
+		<ul>
+		{% if (round.category in "ABC" and round_type == RoundType.skolni) or round_type == RoundType.okresni %}
+		<li>Zadávání bodů je v tomto kole povinné.
+		{% else %}
+		<li>Zadávání bodů je v tomto kole nepovinné, ale OSMO pak umí sestavit výsledkovou listinu.
+		{% endif %}
+		<li>Body můžete vyplnit za každou úlohu zvlášť (tlačítko „Zadat body / založit řešení“ v seznamu úloh níže).
+		<li>Také můžete nahrát celkovou bodovací tabulku (TODO).
+		</ul>
+
+	<li>Pak můžete ukázat body soutěžícím, než soutěž uzavřete (TODO).
+
+	{% endif %}
+
+	<li>Sestavte <a href='{{ ctx.url_for('org_score') }}'>výsledkovou listinu</a>:
+		<ul>
+		{% if round_type == RoundType.okresni %}
+		<li>Sestavení listiny je v tomto kole povinné.
+		{% else %}
+		<li>Sestavení listiny je v tomto kole nepovinné.
+		{% endif %}
+		<li>Po zobrazení listiny zmáčkněte tlačítko „Uložit současnou verzi“.
+		<li>Listinu ještě jednou zkontrolujte a zmáčkňěte „Zveřejnit tuto verzi“.
+		</ul>
+
+	<li>Až bude vše hotovo, uzavřete soutěž (TODO).
+
+{% elif state == RoundState.closed %}
+
+	<li>Soutěž je uzavřena, už není potřeba dělat nic dalšího.
+
+	<li>Kdybyste potřebovali upravit nějaké údaje,
+	{% if round.state == RoundState.closed %}
+		kontaktujte správce.
+	{% else %}
+		přepněte soutěž zpět do stavu „opravuje se“ (TODO).
+	{% endif %}
+
+{% else %}
+
+<li>Soutěž je v neznámém stavu, musí zasáhnout správce.
+
+{% endif %}
+
+</ul>