Org Web Adapter

journals/2026_07_01.org

ID
a11bf467-4957-486c-a389-7bdee2eed7e6

2026-07-01

Tasks

workhungryrootsprint113

DONE Get local unblocked with new django-stubs

localdevdevdayslost
ID
2b47493b-0440-2af8-6b5b-0bbf1781fcc0

- Note taken on

Turns out I just had to rebase on `master` and do a `just uv-install`

DONE Open next PR in Schemathesis project BE-7836

ID
db8b6c5e-0b81-6d9e-ea27-1fb0f2042e74

#+begin_src bash

claude --resume 8d8778be-7dc0-4f5d-9007-40c7d0dfceff

#+end_src

Notes

- Note taken on

Got Anthropic Claude to kick out the expanded test coverage, and it even found

a 403 gap in the schema, so that's taking a bit of time as Claude on a bad

network connection (tethering) is taking a while.

DONE Clean up MAGI issues on auto-tagging BE-8045

ID
70fecb72-d238-dbf6-d174-f37532fb71ff

#+begin_src shell

claude --resume 0be9654e-1658-4fd4-bcb7-9147097da8e9

#+end_src

DONE Research adding AppFlyer link to Cookbooks

spike
ID
a99b05c3-5c64-bf06-4973-553075f14f29

#+begin_src shell

claude --resume 741a648c-464b-4fcf-bc44-9b14f97c3709

#+end_src

Notes

- Note taken on

Pattern to follow — sync third-party API wrapper (like app/services/braze.py):

#+begin_src python

# app/services/attribution.py (name TBD — not nested in cookbooks/)

import requests

import structlog

from django.conf import settings

logger = structlog.get_logger(__name__)

APPSFLYER_HEADERS = {

"authorization": settings.APPSFLYER_API_KEY,

"content-type": "application/json",

}

def create_onelink(

*,

fallback_url: str,

campaign: str,

referral_code: str | None = None,

) -> str | None:

payload = {

"brand_domain": settings.APPSFLYER_ONELINK_TEMPLATE_ID,

"campaign": campaign,

"af_web_dp": fallback_url,

**({"deep_link_value": referral_code} if referral_code else {}),

}

try:

resp = requests.post(APPSFLYER_ONELINK_URL, json=payload, headers=APPSFLYER_HEADERS, timeout=5)

resp.raise_for_status()

except requests.RequestException:

logger.warning("AppsFlyer OneLink create failed", campaign=campaign)

return None

return resp.json()["result_link"]

#+end_src

No client class — module funcs + module-level header const, matches braze.py/lasership.py/algolia.py convention repo-wide.

Wire point: cookbooks/views.py:787-792, CustomerFavoritesView.post(). Today returns bare {"slug": ...}. Add share_url field — call

create_onelink(fallback_url=<public cookbook url built from slug>, referral_code=customer.referral_code). Fallback to plain URL if None

(AppsFlyer down → don't break share).

Secrets: add APPSFLYER_API_KEY + APPSFLYER_ONELINK_TEMPLATE_ID to local/secrets.json top-level, read via env() in settings component —

same as ALGOLIA_API_KEY/BRAZE_API_KEY pattern (hrplatform/settings/components/secrets.py).

referral_code: already on Customer model (app/models/customer.py:175), no extra plumbing — grab straight off customer.referral_code where

FavoritesEnvelope built.

Blocker: ticket says AppsFlyer dev key + template ID not confirmed to exist for BE yet — needs sourcing from marketing/growth before real

implementation. Scaffolding above buildable now; wiring real API call blocked till key exists.

Want me start scaffold (service module + settings plumbing), or wait on key?

Description

Right now our cookbook share links are plain website links. If someone gets a

link, doesn't have the app, then installs and signs up later, we lose the

connection back to who shared it, no install attribution

We already have Appsflyer integrated and code has been built to extract the

referral code to send to Segment. The only missing piece now is creating the

AppsFlyer link.

There are 2 options:

Generate the link in the app. The app itself calls the AppsFlyer SDK at share

time to build the link. Web would need to do the same so attribution survives

App Store / Play Store installs

Generate the link on the backend. Keeps all the logic in one place. All clients

call the BE for the link and uses that to share.

Slack: https://hungryroot.slack.com/archives/C0B4QA7Q05A/p1782918794864129

DONE Follow up on Braze attribute saving for Cookbooks BE-8034

ID
090d74fd-cc86-c20d-d257-781ce637099c

Meetings

sprint113workhungryrootmeeting

DONE Weekly Team Meeting

ID
a056f7e2-142b-6ce9-13bd-270b0990ba3f