We actually got our start on HN over a year ago. Alex and I spent a couple weeks putting together a prototype of the app as a fun side project in between jobs. We launched that on Show HN (https://news.ycombinator.com/item?id=9942202), managed to raise a seed round a few months later, and then re-launched on Show HN (https://news.ycombinator.com/item?id=10858327) several months later. Thanks for the encouragement and feedback along the way!
Some things that we’ve learned and/or would be happy to discuss:
- Having only five categories scaled way further than we thought. It turns out there’s a silent majority that appreciates the simplicity. We just added a premium version that includes subcategories, but we made it over 1.5 years without them.
- We built Penny as a web app (Cordova). It pretty much guarantees that we don’t get featured by Apple or Google, but it allows us to iterate really, really quickly. All users always have the latest version, and we can update the app in two minutes flat. We think the tradeoff is worth it.
- We’re using a chat interface because it allows Penny to explain your finances in simple, relatable English, but we’re not on any chatbot platforms. We also strongly favor predetermined choices over freeform messages.
- Most people don’t realize when they’ve potentially been harmed: over 40% of our Wells Fargo users hadn’t heard about the scandal a month after the news broke. For the Arby’s breach it was over 70%, and for the Navient lawsuits it was 93%.
- We decided to roll our own Ruby DSL for writing conversations, which renders a JSON syntax tree that’s interpreted by the client. Right now, Penny has 34,560 words of copy, 888 emojis, and 93 GIFs.
Here's my reaction reading the faq:
// What makes Penny different from other apps? // Penny makes your finances less intimidating and stressful. Many apps have lots of useful features, but they’re often hard to use and time-consuming.
Would appreciate more specificity. I'm not intimidated by Mint, though manipulating it to tell me what I want to know is not always fun / easy / possible.
// Penny automatically organizes your finances, explains them simply and clearly, and tells you what you need to know, when you need to know it.
Mint automatically categorizes transactions too (is that what this means?). Mint also attempts to provide understandable / actionable information.
If Penny can do something that I care about much better than Mint, I'm interested, but this seems to be making an "overall polish" argument. That's a toughie, as new startups are generally not more polished, the attraction is usually something specific that is important and done better, even if there are rough edges.
The simple chat options are exactly what I want to know and only a few clicks away.
The gifs are also super appreciated. I really like the comedy thrown into a usually boring topic.
Just started getting the premium push in-app and I wondered when it was going to happen. I don't mind it since obviously the lights need to stay on but I am not sure sub-categories is compelling enough for me since it kind of ruins the simplicity I love so much. More data isn't necessarily what I am after here.
Otherwise, huge kudos. Love Penny.
For what it's worth, we don't think the premium experience (Penny+) is a good fit for most of our users. Locking extra complexity behind a premium version was actually our way of keeping the core experience simple (and encouraging people to not mindlessly turn on extra features unless they're confident they want them). We think the simplicity of the core experience is one of the main reasons people continue to use Penny over time; complexity begets churn, even if users ask for that complexity. We eschew traditional budgets for the same reasons.
/CTRL-F, "Arbitration" .. Match found. No opt-out clause.
/closes tab without signing up for yet another service because mandatory, binding arbitration clauses in business-to-customer services are a cancer that deserve to die and it's a shame that "bootstrapy," "customer-focused," "friendly" start-ups have fallen for this trap.
I get that you're dealing with financial things and financial outlets are inherently risk-averse but if my credit union can manage to not get sued into oblivion while lacking a mandatory, binding arbitration clause, you could, too. SoFi pulled off having an opt-out clause in their agreement; that's the least I expect these days.
This is one reason why I've started doing business more and more with European-based companies. Their local laws don't permit such customer-unfriendliness.
(Edited to add: if I'm trusting you with read/write credentials--since no other kind exist--to my financial accounts, yes, I expect to retain the right to sue if you screw up gloriously. That your lawyers pushed for you to make your users sign away that right is telling.
I'm genuinely sorry if I'm coming across as hostile; this isn't personal at you, specifically. I'm just sick and tired of being told "you get to tell us everything about you in order to use our shiny new service and if we drop the ball or miss a semi-colon and every penny you own is funneled to Moon Base Alpha Seven, well, sorry, hope the arbitrator chosen by us, paid by us, and with a financial incentive to be used by us in the future is willing to award you a few ducats for your trouble." I keep hoping for better from HN-funded startups and so rarely get it.)
Also, one feature I would pay for is this. When I am entering a Walmart or Target or Whole Foods, it should warn me that I spent 'x' amount on groceries last week and that I should keep my spending below $y to stay within budget. Somehow, I see this feature missing in all apps I see so far.
Ah, yes, the reason why we designed the web the way it is. I really think this subject isn't tackled enough. Apple, and to a lesser extent google have ruined all the progress we made around continuous application updates through their stupid App paradigm. It boggles my mind that everyone is OK with it, when it's obviously terrible for the end user, compared to the web model where a URL just points to a resource, and you have full publishing power over that resource.
For example, here's a excerpt from explaining how credit card interest works:
Penny: Chase charges you interest based on your <em>APR</em> (annual percentage rate).
Penny: You probably saw this number when you signed up for your credit card :credit_card:
Penny: APRs are usually about 12-24%.
Penny: As far as I can tell, your Chase Freedom's APR is about <em>{{ numeral(0.15).format('0%') }}</em>, which is about normal.
You: OK
Penny: To compute how much interest you get charged every day, divide your APR by the number of days in a year, like this:
<rest of conversation>
We also do a fair amount of two-way communication when we're understanding a user's circumstances. When Penny coaches people about investing, we try to understand the user's financial situation based on how much risk they're willing to take, how much they have that's investable, their horizon for returns, etc, all of which fits pretty naturally into a chat interface.
That being said, very willing to try this. Personal finance should be a priority for all! Congrats on the launch.
(directed at Penny)
The other aspect is that banks are really good at physical security, but not so great at data security. Consider the recent Chase breaches, where a ton of sensitive data was leaked—you're obviously placing a lot of trust on Intuit or Plaid whenever you use Mint or Penny, but at least they're modern technology companies that probably hold themselves to higher data security standards than your bank.
I hadn't heard of Plaid until now. It seems like they are stealing Yodlee's thunder. Is there a reason why Yodlee is falling out of favor with the new fintech generation of startups?
Another question, do you rely on Plaid's categorization, or did you write your own ML for the categorization?
They wanted us to pay a hefty initial sign up fee ($XXXXX), pay monthly fee per user ($0.XX) and also they had minimums. Being students at the time we were just shocked and disheartened until we saw Plaids great pricing (free whilst in development and $500pm to set the product live) and tried to convince them to come to London which they told us was only 6 months away. It's been 2 years and they're still not here lol.
But there are a few more options in London now. I bumped into Steve Graham way back at HN's London event and he was working on Teller (https://teller.io/) which is now in beta and works pretty well from my testing.
There's also Saltedge (https://www.saltedge.com/) which is used by a few London fintech apps and I believe they have a startup package that a few apps like Cleo (https://meetcleo.com/) started on.
Some new startups still choose Yodlee though like moneybox (https://www.moneyboxapp.com) but they raised significantly more that we had (we had a very very small grant from our University).
The startup costs are way higher with Yodlee and (before they shut off access) Intuit. Their APIs are also not nearly as friendly as Plaid's.
Very interesting that you've used Cordova. For a simple chat-based app that approach makes a lot of sense as you can push updates any time. Would you be able to share any chat-ui cordova libraries you've used or anything helpful in that regard? Or was it all custom built? Would you choose cordova if you were building the same app now or is there something else you'd consider using?
Also: your ruby DSL sounds interesting. Do you push the entire json syntax tree to the client? Chatbot platforms typically work by sending a user's chat message to a server then responding... so I'm interested how you've found doing things locally with a json syntax tree (assuming that's what you meant) and what were the pros/cons/trade-offs of that approach?
As for the Ruby/JSON stuff, that was also built by hand (actually the very first thing we built before we even had the UI in place). Whenever a conversation is started, the client gets the entire syntax tree from the server and evaluates it to make the conversation happen. We actually thought that pushing the state to the client actually made things easier since the server no longer has to manage the status of many concurrent conversations. It also means faster responses in poor network conditions.
I think the main reason for chatbot platforms to push things to the server is out of necessity because they work across many clients (Messenger, etc) where they don't control the client, and because they may be doing some heavy lifting with NLP that can only be done on the server.
I tinkered with building a budgeting app (think Simple's Goals feature but for any bank) and used Plaid. They were a super helpful bunch and the service "just works."
Along those same lines, I think it's great you're using Cordova. Sometimes people feel the need to do everything "the right way" because otherwise they won't get funding / their app won't take off / etc. In reality, there is no right way and you should use the tool that will do the best job for you. Sounds like Cordova was the right move here.
Congratulations on a really awesome product! I'm jealous I didn't think of it first :)
About 15 minutes later I got an email from an engineer saying my request got caught right in the middle of an upgrade and that's why it failed.
Great service and a fast response time, but I'm curious how much information is shared with the engineer when that happens? Considering that happened automatically without me requesting help, I'd hope extremely limited information (and absolutely no financial information) is given to the engineer assigned to the ticket.
How much information can an employee see about a particular user? How about when an error occurs? Is it possible for someone at Penny to see financial data, and if so what is the process for an employee querying that information about a user?
Sorry about the bug. We've been deploying all day and made the mistake of pushing something that received new server content before the updated clients themselves had time to propagate. I'm guessing that's what you ran into.
A bit about our process: we catch all errors (server and client) using Bugsnag and pipe them to Slack. Those errors are basically stack traces that hopefully give us enough context to reproduce and fix the bug. If the error was user facing (e.g. interrupted your conversation), we also open a ticket in Enchant that links back to the Bugsnag error. That way we track if/when a user hits a bug and can reach out to let them know when it's been fixed, or collect more info on the context surrounding the bug.
Like most customer support portals, Enchant can be populated with information about the person's account. In our case, we can see things like your first name (that's all we collect from you), when you joined, your phone platform, your app version, and which bank types you've attempted to link.
Does that answer your question?
As for financial data: we don't store your credentials, ever (thanks to Plaid's API, we don't have to). We do store your transactions so that we can serve them to you in-app (hopefully that's not a surprise?), along with the bank type and balance information that you see in your accounts tab. Since they're in our DB, engineers on the team can query that information. We do that on a need-to-know basis only; for example, if someone has asked us to investigate a bug they ran into, or why their numbers look off.
Hope that helps!
And just because we're working on this idea doesn't mean you can't too. It all comes down to execution. A little competition is healthy for everyone :)
1. Those other platforms didn't really exist when we first launched. Messenger launched their platform about nine months after we started Penny. 2. (The real reason) We still don't think we can provide a better experience via a chatbot platform than we can with a standalone app.
To motivate that second point:
The benefit to a chatbot platform is that you meet people where they already are, and "signup" generally has lower overhead.
The downsides are many, though. Most platforms don't allow for things like securely submitting username and passwords, e.g. when connecting a bank account (although Messenger is starting to allow webviews, which can be repurposed to handle this). Browsing your aggregated transaction history, changing the category of a transaction, viewing your balances, etc. are all poor fits for a chat interface (again, Messenger has only recently started to address this). Pre-populated responses aren't first-class citizens in most chatbot platforms. We get more control over the UI, e.g. when displaying animated graphs, in a standalone app than we do within chat. There is/was no way to lock individual chatbot threads behind passcodes to protect your privacy... and on and on :)
Finally, there's also the problem of discoverability, which no chatbot platform has solved in a convincing manner. Downloading a standalone app is a pain, but once you get over that initial hurdle we think the experience is still significantly better than delivering Penny over a chatbot platform.
> We will never sell any information that could identify you for marketing purposes, and we only share limited amounts of information with third-party services on a need-to-know basis.
Very nice! It doesn't show up in HN but they've even gone out of their way to bold the relevant bits.
From the FAQ:
> Penny supports over 15,000 banks in the United States, so if your bank is in the U.S., she can probably connect to it. She can even connect to your Venmo or PayPal account!
> Penny never stores your bank login information. After she first establishes the connection to your bank, she gets a separate, secret access code to retrieve your transactions from your bank. That way, she can access your transactions without ever needing your bank account credentials again.
Do 15,000 banks in the USA really have an external API with API keys? That's pretty amazing.
From poking around the site looks like they're using Plaid (https://plaid.com/). Now that's seriously cool stuff to normalize!
>> How do you make money?
> Right now, we make money through donations and by partnering with financial products that we think you might find worthwhile. You can find out more about our partnerships here. Both the donations and partnerships allow us to continue offering Penny’s services for free.
> At some point, we will need to start charging for some aspects of Penny. We will give you plenty of advance warning when we’re nearing that milestone. In the meantime, you can enjoy all of Penny’s features free of charge!
While I like the idea of allowing people to track their finances better, I don't get how a company like this gets funded without a clear monetization strategy. I'm sure they've got some ideas internally and were probably included in their pitches, but I don't immediately see what it would be. Maybe get individuals to pony up $X/mo for the service? I doubt they would. People are cheapskates ... particularly so when the market is people that want to reign in their spending.
1. A premium subscription service that gets you some power features within Penny; we just launched that today. 2. Recommending affiliate products.
It's important to note that affiliates can be a mixed bag. Mint.com was the product that turned me onto Betterment when I was hunting around for ways to invest my money; I'm legitimately thankful that they did since I love Betterment. At Penny, we think we can tastefully and in good faith recommend some affiliate products. Those recommendations fit perfectly into our coaching model too.
Unfortunately, most personal finance companies start pushing credit cards on people that don't need them because it pays the most money. We're building Penny in a way that disincentives crappy behavior like that.
>Does Penny store my bank login information? >Penny never stores your bank login information. After she first establishes the connection to your bank, she gets a separate, secret >access code to retrieve your transactions from your bank. That way, she can access your transactions without ever needing your bank >account credentials again.
How does this work exactly? What about banks that do not have an API. I've been wanting to write a similar app for myself but see NO way to log-in securely if the bank does not offer an API.
Knowing that this is possible, I wish more of these services officially offered their products cross-border. I'm not a huge fan of Mint, and have always figured the cool new apps were US only. I guess French language support might be a roadblock.
Our biggest differentiators: more focus on automation and friendliness. The major pain point we discovered is that average people find finances intimidating and difficult to track. We wanted to take as much of it off of people's hands as possible as well as doing everything we can to make the experience as friendly and engaging as possible. That goes a long way to making something that people feel comfortable using. We think Mint is a powerful tool with a much steeper learning curve, and we wanted to build something that anybody can use.
Could you explain the finance "coach" aspect of your app ? I have been in several situations where I wish one of these apps had told me a particular financial pro-tip & I have always felt let down. How would your app exactly be a coach ?
I wonder if you can share any insights as to how effective you are changing people's spending habits after they start using your app?
Since we use Cordova, the entire app is a website. So when you open up the app, it launches a webview pointed to a website that we deploy to like any other website. That means we can change any client logic and it'll go out in minutes. We also have a conversation DSL that lets us make conversation flow tweaks in under a minute, and since the bulk of the app is conversations, that allows us to move super quickly.
Great question about the changelogs! Since we don't have a longer cadence between feature pushes since we're deploying all the time, we have to go back and look at historical pushes whenever we need to write a changelog. We typically roll up all the little features and announce them whenever we make a new version in the app store. On top of that, we usually announce new features inside Penny, where she'll give a little intro on the new functionality. That also doubles as onboarding to the new feature if needed.
I guess that is because my devices are located in Europe. (I have a Samsung S7, english setup and an older Tab).
Or maybe it's just me?
Maybe I shouldn't have mentioned it at all since my main annoyance is when google does it. :-]
https://play.google.com/store/apps/details?id=com.durian.pen...
(Full disclosure: I work for Cleo :) )
I remember first seeing Cleo way back when it was just the two founders (didn't they meet each other at some startup hackathon type event?) and they were rolling out cleo as a SMS based money assistant.
Looks like you guys shifted towards the Messenger platform. We (http://dispatch.pm/) looked in to the messenger platform but found it a bit restrictive for our purposes. How is it working out for you guys? Do you see yourselves sticking long term to messenger?
yes, you're right, we still have text features, but we provide users a better experience with messenger so suggest that they use that. About the founders they met at EF (entrepreneurs first) and then started to develop Cleo.
With respect to messenger, we've found it a suitable platform for our current needs. We're always looking for the best channel to reach our users on, but I think we'll keep messenger as a core channel, even if/when we do move to other channels.
Out of interest, what things made you decide against messenger?
EDIT: Also, out of interest, have you got any plans for an android or web-app? (don't use IOS and am interested to check out your service).
(views expressed are mine and not necessarily my employers, e.t.c.)
That first Show HN post sent about 700 unique people to our website, of which about 100 clicked the download button and roughly 40 signed up. That may seem like a small number, but it was huge for us at the time. It gave us a lot of new information about where people would fall off in our funnel, uncovered some edge cases we hadn't accounted for, etc.