- ID
- a11bf467-4957-486c-a389-7bdee2eed7e6
2026-07-01
Tasks
DONE Get local unblocked with new django-stubs
- 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
- 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
DONE Weekly Team Meeting
- ID
- a056f7e2-142b-6ce9-13bd-270b0990ba3f